From 3cf8de7507ec888563e94407d84db2fd80b6c64c Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:30:37 -0600 Subject: [PATCH 01/21] build: add TypeScript config and type dependencies - Add tsconfig.json targeting ES2015/commonjs, compiling src/ to lib/ - Add devDependencies: typescript, @types/node, @types/underscore - Add build/prepublishOnly scripts and types field to package.json --- package-lock.json | 2582 ++++++++++++++++++++++++++++----------------- package.json | 11 +- tsconfig.json | 18 + 3 files changed, 1642 insertions(+), 969 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index bc269be..8619b80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1092 +1,1632 @@ { "name": "openpay", - "version": "1.0.5", - "lockfileVersion": 1, + "version": "2.0.1", + "lockfileVersion": 3, "requires": true, - "dependencies": { - "address": { + "packages": { + "": { + "name": "openpay", + "version": "2.0.1", + "dependencies": { + "underscore": "1.13.6", + "urllib": "^2.36.1" + }, + "devDependencies": { + "@types/node": "^26.1.1", + "@types/underscore": "^1.13.0", + "mocha": "10.2.0", + "typescript": "^7.0.2" + }, + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/@types/node": { + "version": "26.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz", + "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/underscore": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.13.0.tgz", + "integrity": "sha512-L6LBgy1f0EFQZ+7uSA57+n2g/s4Qs5r06Vwrwn0/nuK1de+adz00NWaztRQ30aEqw5qOaWbPI8u2cGQ52lj6VA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript/typescript-aix-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", + "integrity": "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-arm64/-/typescript-darwin-arm64-7.0.2.tgz", + "integrity": "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-darwin-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-darwin-x64/-/typescript-darwin-x64-7.0.2.tgz", + "integrity": "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-arm64/-/typescript-freebsd-arm64-7.0.2.tgz", + "integrity": "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-freebsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-freebsd-x64/-/typescript-freebsd-x64-7.0.2.tgz", + "integrity": "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm/-/typescript-linux-arm-7.0.2.tgz", + "integrity": "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-arm64/-/typescript-linux-arm64-7.0.2.tgz", + "integrity": "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-loong64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-loong64/-/typescript-linux-loong64-7.0.2.tgz", + "integrity": "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-mips64el": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-mips64el/-/typescript-linux-mips64el-7.0.2.tgz", + "integrity": "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-ppc64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-ppc64/-/typescript-linux-ppc64-7.0.2.tgz", + "integrity": "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-riscv64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-riscv64/-/typescript-linux-riscv64-7.0.2.tgz", + "integrity": "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-s390x": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-s390x/-/typescript-linux-s390x-7.0.2.tgz", + "integrity": "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-linux-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-linux-x64/-/typescript-linux-x64-7.0.2.tgz", + "integrity": "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-arm64/-/typescript-netbsd-arm64-7.0.2.tgz", + "integrity": "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-netbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-netbsd-x64/-/typescript-netbsd-x64-7.0.2.tgz", + "integrity": "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-arm64/-/typescript-openbsd-arm64-7.0.2.tgz", + "integrity": "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-openbsd-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-openbsd-x64/-/typescript-openbsd-x64-7.0.2.tgz", + "integrity": "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-sunos-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-sunos-x64/-/typescript-sunos-x64-7.0.2.tgz", + "integrity": "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-arm64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-arm64/-/typescript-win32-arm64-7.0.2.tgz", + "integrity": "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/@typescript/typescript-win32-x64": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@typescript/typescript-win32-x64/-/typescript-win32-x64-7.0.2.tgz", + "integrity": "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/address": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "engines": { + "node": ">= 0.12.0" + } }, - "agent-base": { + "node_modules/agent-base": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "requires": { + "dependencies": { "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" } }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "requires": { - "color-convert": "^1.9.0" + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "any-promise": { + "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "license": "Python-2.0" }, - "ast-types": { + "node_modules/ast-types": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "requires": { + "dependencies": { "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/brace-expansion": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.2.tgz", + "integrity": "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA==", "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, - "requires": { - "fill-range": "^7.0.1" + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" } }, - "browser-stdout": { + "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "bytes": { + "node_modules/bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "engines": { + "node": ">= 0.8" + } }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", "dependencies": { - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "requires": { - "anymatch": "~3.1.1", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", + "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "co": { + "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "color-name": "1.1.3" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" }, - "content-type": { + "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "engines": { + "node": ">= 0.6" + } }, - "copy-to": { + "node_modules/copy-to": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" }, - "core-util-is": { + "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "data-uri-to-buffer": { + "node_modules/data-uri-to-buffer": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, - "debug": { + "node_modules/debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "requires": { + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { "ms": "^2.1.1" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, - "default-user-agent": { + "node_modules/default-user-agent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", - "requires": { + "dependencies": { "os-name": "~1.0.3" + }, + "engines": { + "node": ">= 0.10.0" } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "degenerator": { + "node_modules/degenerator": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "requires": { + "dependencies": { "ast-types": "0.x.x", "escodegen": "1.x.x", "esprima": "3.x.x" + } + }, + "node_modules/degenerator/node_modules/esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - } + "engines": { + "node": ">=4" } }, - "depd": { + "node_modules/depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } }, - "destroy": { + "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } }, - "digest-header": { + "node_modules/digest-header": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz", "integrity": "sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y=", - "requires": { + "dependencies": { "utility": "0.1.11" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/digest-header/node_modules/utility": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", + "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", "dependencies": { - "utility": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", - "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", - "requires": { - "address": ">=0.0.1" - } - } + "address": ">=0.0.1" + }, + "engines": { + "node": ">= 0.8.0" } }, - "ee-first": { + "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, - "end-of-stream": { + "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { + "dependencies": { "once": "^1.4.0" } }, - "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" - }, - "dependencies": { - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-promise": { + "node_modules/es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, - "es6-promisify": { + "node_modules/es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "requires": { + "dependencies": { "es6-promise": "^4.0.3" } }, - "escape-html": { + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "escodegen": { + "node_modules/escodegen": { "version": "1.14.3", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "requires": { + "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { "source-map": "~0.6.1" } }, - "esprima": { + "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "estraverse": { + "node_modules/estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } }, - "extend": { + "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { + "node_modules/extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { + "dependencies": { "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "fast-levenshtein": { + "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "file-uri-to-path": { + "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "requires": { - "locate-path": "^3.0.0" + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "requires": { - "is-buffer": "~2.0.3" + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "formstream": { + "node_modules/formstream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.1.0.tgz", "integrity": "sha1-UfOXDyYTbrCtRDBN5M67UCB7RHk=", - "requires": { + "dependencies": { "destroy": "^1.0.4", "mime": "^1.3.4", "pause-stream": "~0.0.11" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "optional": true + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "ftp": { + "node_modules/ftp": { "version": "0.3.10", "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "requires": { + "dependencies": { "readable-stream": "1.1.x", "xregexp": "2.0.0" }, - "dependencies": { - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - } + "engines": { + "node": ">=0.8.0" } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/ftp/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } }, - "get-caller-file": { + "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "get-uri": { + "node_modules/get-uri": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", - "requires": { + "dependencies": { "data-uri-to-buffer": "1", "debug": "2", "extend": "~3.0.2", "file-uri-to-path": "1", "ftp": "~0.3.10", "readable-stream": "2" - }, + } + }, + "node_modules/get-uri/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "ms": "2.0.0" } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/get-uri/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz", + "integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==", "dev": true, - "requires": { - "function-bind": "^1.1.1" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "he": { + "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true + "dev": true, + "bin": { + "he": "bin/he" + } }, - "http-errors": { + "node_modules/http-errors": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "requires": { + "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.1.1", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" } }, - "http-proxy-agent": { + "node_modules/http-proxy-agent": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "requires": { + "dependencies": { "agent-base": "4", "debug": "3.1.0" }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/http-proxy-agent/node_modules/debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "ms": "2.0.0" } }, - "https-proxy-agent": { + "node_modules/http-proxy-agent/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/https-proxy-agent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "requires": { + "dependencies": { "agent-base": "^4.3.0", "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" } }, - "humanize-ms": { + "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "requires": { + "dependencies": { "ms": "^2.0.0" } }, - "iconv-lite": { + "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "requires": { + "license": "ISC", + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ip": { + "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, - "is-binary-path": { + "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", - "dev": true - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-extendable": { + "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "engines": { + "node": ">=0.10.0" + } }, - "is-extglob": { + "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true - }, - "is-number": { + "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "requires": { - "has-symbols": "^1.0.1" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "isarray": { + "node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "levn": { + "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { + "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "requires": { - "chalk": "^2.4.2" + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "lru-cache": { + "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "requires": { + "dependencies": { "yallist": "^3.0.2" } }, - "mime": { + "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, - "requires": { - "brace-expansion": "^1.1.7" + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "mkdirp": { + "node_modules/mkdirp": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", "dev": true, - "requires": { - "ansi-colors": "3.2.3", + "license": "MIT", + "dependencies": { + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - } - }, - "ms": { + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "mz": { + "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "requires": { + "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, - "netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } }, - "node-environment-flags": { + "node_modules/netmask": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", + "engines": { + "node": ">= 0.4.0" } }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", - "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dependencies": { "wrappy": "1" } }, - "optionator": { + "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "requires": { + "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" } }, - "os-name": { + "node_modules/os-name": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", - "requires": { + "dependencies": { "osx-release": "^1.0.0", "win-release": "^1.0.0" + }, + "bin": { + "os-name": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "osx-release": { + "node_modules/osx-release": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", - "requires": { + "dependencies": { "minimist": "^1.1.0" + }, + "bin": { + "osx-release": "cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "requires": { - "p-try": "^2.0.0" + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "requires": { - "p-limit": "^2.0.0" + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pac-proxy-agent": { + "node_modules/pac-proxy-agent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", - "requires": { + "dependencies": { "agent-base": "^4.2.0", "debug": "^4.1.1", "get-uri": "^2.0.0", @@ -1095,28 +1635,34 @@ "pac-resolver": "^3.0.0", "raw-body": "^2.2.0", "socks-proxy-agent": "^4.0.1" - }, + } + }, + "node_modules/pac-proxy-agent/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "pac-resolver": { + "node_modules/pac-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/pac-resolver": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "requires": { + "dependencies": { "co": "^4.6.0", "degenerator": "^1.0.4", "ip": "^1.1.5", @@ -1124,47 +1670,65 @@ "thunkify": "^2.1.2" } }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "pause-stream": { + "node_modules/pause-stream": { "version": "0.0.11", "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "requires": { + "dependencies": { "through": "~2.3" } }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true + "node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "prelude-ls": { + "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } }, - "process-nextick-args": { + "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "proxy-agent": { + "node_modules/proxy-agent": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", - "requires": { + "dependencies": { "agent-base": "^4.2.0", "debug": "4", "http-proxy-agent": "^2.1.0", @@ -1174,57 +1738,85 @@ "proxy-from-env": "^1.0.0", "socks-proxy-agent": "^4.0.1" }, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-agent/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dependencies": { - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } } }, - "proxy-from-env": { + "node_modules/proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, - "pump": { + "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { + "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, - "qs": { + "node_modules/qs": { "version": "6.9.6", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" + "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } }, - "raw-body": { + "node_modules/raw-body": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "requires": { + "dependencies": { "bytes": "3.1.0", "http-errors": "1.7.3", "iconv-lite": "0.4.24", "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "readable-stream": { + "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { + "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -1232,255 +1824,339 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - }, + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } + "safe-buffer": "~5.1.0" } }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, - "requires": { - "picomatch": "^2.0.4" + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safer-buffer": { + "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "semver": { + "node_modules/semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } }, - "setprototypeof": { + "node_modules/setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, - "smart-buffer": { + "node_modules/smart-buffer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } }, - "socks": { + "node_modules/socks": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", - "requires": { + "dependencies": { "ip": "1.1.5", "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, - "socks-proxy-agent": { + "node_modules/socks-proxy-agent": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", - "requires": { + "dependencies": { "agent-base": "~4.2.1", "socks": "~2.3.2" }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", "dependencies": { - "agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "requires": { - "es6-promisify": "^5.0.0" - } - } + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" } }, - "source-map": { + "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "statuses": { + "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" } }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "requires": { - "ansi-regex": "^3.0.0" + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "requires": { - "has-flag": "^3.0.0" + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "thenify": { + "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "requires": { + "dependencies": { "any-promise": "^1.0.0" } }, - "thenify-all": { + "node_modules/thenify-all": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "requires": { + "dependencies": { "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" } }, - "through": { + "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "thunkify": { + "node_modules/thunkify": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "license": "MIT", + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "toidentifier": { + "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "engines": { + "node": ">=0.6" + } }, - "tslib": { + "node_modules/tslib": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" }, - "type-check": { + "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { + "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "underscore": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.5.2.tgz", - "integrity": "sha1-EzXF5PXm0zu7SwBrqMhqAPVW3gg=" + "node_modules/typescript": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", + "integrity": "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc" + }, + "engines": { + "node": ">=16.20.0" + }, + "optionalDependencies": { + "@typescript/typescript-aix-ppc64": "7.0.2", + "@typescript/typescript-darwin-arm64": "7.0.2", + "@typescript/typescript-darwin-x64": "7.0.2", + "@typescript/typescript-freebsd-arm64": "7.0.2", + "@typescript/typescript-freebsd-x64": "7.0.2", + "@typescript/typescript-linux-arm": "7.0.2", + "@typescript/typescript-linux-arm64": "7.0.2", + "@typescript/typescript-linux-loong64": "7.0.2", + "@typescript/typescript-linux-mips64el": "7.0.2", + "@typescript/typescript-linux-ppc64": "7.0.2", + "@typescript/typescript-linux-riscv64": "7.0.2", + "@typescript/typescript-linux-s390x": "7.0.2", + "@typescript/typescript-linux-x64": "7.0.2", + "@typescript/typescript-netbsd-arm64": "7.0.2", + "@typescript/typescript-netbsd-x64": "7.0.2", + "@typescript/typescript-openbsd-arm64": "7.0.2", + "@typescript/typescript-openbsd-x64": "7.0.2", + "@typescript/typescript-sunos-x64": "7.0.2", + "@typescript/typescript-win32-arm64": "7.0.2", + "@typescript/typescript-win32-x64": "7.0.2" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "license": "MIT" }, - "unescape": { + "node_modules/unescape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "requires": { + "dependencies": { "extend-shallow": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "unpipe": { + "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "engines": { + "node": ">= 0.8" + } }, - "urllib": { + "node_modules/urllib": { "version": "2.36.1", "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.36.1.tgz", "integrity": "sha512-g0Gh7bH5AwfPUzFetxPtJwumGHE6D7KQn0K68MwcJXPgO2K0AliwEIxLAwGMF+TpY75DYAsvz1h9ekagYoq33w==", - "requires": { + "dependencies": { "any-promise": "^1.3.0", "content-type": "^1.0.2", "debug": "^2.6.9", @@ -1497,201 +2173,171 @@ "statuses": "^1.3.1", "utility": "^1.16.1" }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/urllib/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } + "ms": "2.0.0" } }, - "util-deprecate": { + "node_modules/urllib/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "utility": { + "node_modules/utility": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/utility/-/utility-1.17.0.tgz", "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==", - "requires": { + "dependencies": { "copy-to": "^2.0.1", "escape-html": "^1.0.3", "mkdirp": "^0.5.1", "mz": "^2.7.0", "unescape": "^1.0.1" + }, + "engines": { + "node": ">= 0.12.0" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "win-release": { + "node_modules/win-release": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", - "requires": { + "dependencies": { "semver": "^5.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "word-wrap": { + "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "xregexp": { + "node_modules/xregexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", + "engines": { + "node": "*" + } }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "yallist": { + "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "license": "ISC", + "engines": { + "node": ">=10" } }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } } } diff --git a/package.json b/package.json index beaa73e..2673506 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,19 @@ "urllib": "^2.36.1" }, "main": "lib/openpay.js", + "types": "lib/openpay.d.ts", + "files": [ + "lib/**/*" + ], "devDependencies": { - "mocha": "10.2.0" + "@types/node": "^26.1.1", + "@types/underscore": "^1.13.0", + "mocha": "10.2.0", + "typescript": "^7.0.2" }, "scripts": { + "build": "tsc --project tsconfig.json", + "prepublishOnly": "npm run build", "test": "mocha" }, "engines": { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..2533175 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2015", + "module": "commonjs", + "lib": ["ES2015", "DOM"], + "outDir": "./lib", + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "strict": false, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules", "test"] +} From 94ef3a7b8681bd7829f33e3b2d3c045217848ef5 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:30:41 -0600 Subject: [PATCH 02/21] refactor: migrate JavaScript sources to TypeScript - src/url-utils.ts: typed escapeBrackets function - src/openpay.ts: full type definitions for all resource classes (Merchant, Charges, Payouts, Fees, Plans, Cards, Customers, Webhooks, Tokens, Checkouts, Pse, Stores, Groups) - Callback and BaseData types extracted for reuse - Uses CommonJS export (= Openpay) for backwards compatibility --- src/openpay.ts | 1496 ++++++++++++++++++++++++++++++++++++++++++++++ src/url-utils.ts | 6 + 2 files changed, 1502 insertions(+) create mode 100644 src/openpay.ts create mode 100644 src/url-utils.ts diff --git a/src/openpay.ts b/src/openpay.ts new file mode 100644 index 0000000..6413e88 --- /dev/null +++ b/src/openpay.ts @@ -0,0 +1,1496 @@ +import * as urllib from 'urllib'; +import * as _ from 'underscore'; +import { escapeBrackets } from './url-utils'; + +// ── Types ────────────────────────────────────────────────────────── + +type Callback = ( + error: any, + body: T | null, + response: urllib.HttpClientResponse +) => void; + +interface BaseData { + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; + groupId?: string; +} + +interface RequestSpec { + apiUrl: string; + requestData: { + method: string; + json?: any; + data?: any; + }; + callback: Callback; +} + +// ── Main Class ──────────────────────────────────────────────────── + +class Openpay { + static BASE_URL = 'https://api.openpay.mx'; + static API_VERSION = '/v1/'; + static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; + static SANDBOX_API_VERSION = '/v1/'; + + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; + + // API resources – assigned in define() + groups!: Groups; + merchant!: Merchant; + charges!: Charges; + payouts!: Payouts; + fees!: Fees; + plans!: Plans; + cards!: Cards; + customers!: Customers; + webhooks!: Webhooks; + tokens!: Tokens; + checkouts!: Checkouts; + pse!: Pse; + stores!: Stores; + + // Methods + setMerchantId: (merchantId: string) => void; + setPrivateKey: (privateKey: string) => void; + setProductionReady: (isProductionReady: boolean) => void; + setTimeout: (timeout: number) => void; + + _reDefine: () => void; + + constructor( + merchantId: string, + privateKey: string, + countryCode: string = 'mx', + isProductionReady?: boolean + ) { + this.merchantId = merchantId; + this.privateKey = privateKey; + this.isSandbox = isProductionReady ? false : true; + this.timeout = 90000; + this.define({ + isSandbox: this.isSandbox, + privateKey: this.privateKey, + merchantId: this.merchantId, + timeout: this.timeout, + }); + this.setBaseUrl(countryCode); + + this.setMerchantId = function (merchantId: string) { + this.merchantId = merchantId; + this._reDefine(); + }; + + this.setPrivateKey = function (privateKey: string) { + this.privateKey = privateKey; + this._reDefine(); + }; + + this.setProductionReady = function (isProductionReady: boolean) { + this.isSandbox = !isProductionReady; + this._reDefine(); + }; + + this.setTimeout = function (timeout: number) { + this.timeout = timeout; + this._reDefine(); + }; + + this._reDefine = function () { + this.define({ + isSandbox: this.isSandbox, + privateKey: this.privateKey, + merchantId: this.merchantId, + timeout: this.timeout, + }); + }; + } + + define(baseData: BaseData): void { + this.groups = new Groups(baseData); + this.merchant = new Merchant(baseData); + this.charges = new Charges(baseData); + this.payouts = new Payouts(baseData); + this.fees = new Fees(baseData); + this.plans = new Plans(baseData); + this.cards = new Cards(baseData); + this.customers = new Customers(baseData); + this.webhooks = new Webhooks(baseData); + this.tokens = new Tokens(baseData); + this.checkouts = new Checkouts(baseData); + this.pse = new Pse(baseData); + this.stores = new Stores(baseData); + } + + setBaseUrl(countryCode: string): void { + console.log('setting base url from country'); + switch (countryCode) { + case 'pe': + console.log('Country Peru'); + Openpay.BASE_URL = 'https://api.openpay.pe'; + Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.pe'; + break; + case 'co': + console.log('Country Colombia'); + Openpay.BASE_URL = 'https://api.openpay.co'; + Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.co'; + break; + case 'mx': + console.log('Country Mexico'); + console.log('Default value'); + break; + default: + console.error('Error country code, setting mx default.'); + } + } +} + +// ── Resource Classes ─────────────────────────────────────────────── + +class Merchant { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId; + } + + get(callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } +} + +class Charges { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/charges'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } + + get(transactionId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + capture(transactionId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + refund(transactionId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } +} + +class Payouts { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/payouts'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } + + get(transactionId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } +} + +class Fees { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/fees'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } +} + +class Customers { + private baseData: BaseData; + private baseUrl: string; + + // Sub-resources + charges: any; + transfers: any; + payouts: any; + subscriptions: any; + cards: any; + bankaccounts: any; + + constructor(baseData: BaseData) { + const self = this; + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/customers'; + + this.create = function (data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: self.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }; + + this.list = function (data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: self.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }; + + this.get = function (customerId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }; + + this.update = function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + }; + + this.delete = function (customerId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }; + + this.charges = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, transactionId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + capture: function ( + customerId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + refund: function ( + customerId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + }; + + this.transfers = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, transactionId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + }; + + this.payouts = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, transactionId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + }; + + this.subscriptions = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, subscriptionId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + update: function ( + customerId: string, + subscriptionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + }, + + delete: function (customerId: string, subscriptionId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + }; + + this.cards = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, cardId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + delete: function (customerId: string, cardId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + }; + + this.bankaccounts = { + baseUrl: baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + get: function (customerId: string, bankAccountId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + delete: function (customerId: string, bankAccountId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + }; + } + + // These are assigned in constructor via function expressions + create!: (data: any, callback: Callback) => void; + list!: (data: any, callback?: Callback) => void; + get!: (customerId: string, callback: Callback) => void; + update!: (customerId: string, data: any, callback: Callback) => void; + delete!: (customerId: string, callback: Callback) => void; +} + +class Cards { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/cards'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } + + get(cardId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + cardId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + delete(cardId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + } +} + +class Plans { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/plans'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } + + get(planId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + update(planId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + } + + delete(planId: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + } + + listSubscriptions(callback: Callback): void; + listSubscriptions(planId: string, callback: Callback): void; + listSubscriptions(planId: string, data: any, callback: Callback): void; + listSubscriptions(planId: any, data?: any, callback?: Callback): void { + // Handle overloaded signatures like the original + let planIdResolved: string; + let dataResolved: any; + let cbResolved: Callback; + + if (_.isFunction(data)) { + // Called as listSubscriptions(planId, callback) + planIdResolved = planId; + dataResolved = undefined; + cbResolved = data; + } else if (_.isFunction(callback)) { + // Called as listSubscriptions(planId, data, callback) + planIdResolved = planId; + dataResolved = data; + cbResolved = callback!; + } else if (_.isFunction(planId)) { + // Called as listSubscriptions(callback) + planIdResolved = ''; + dataResolved = undefined; + cbResolved = planId; + } else { + planIdResolved = planId; + dataResolved = data; + cbResolved = callback as Callback; + } + + const query = + dataResolved && + _.isObject(dataResolved) && + !_.isArray(dataResolved) && + !_.isFunction(dataResolved) && + !_.isEmpty(dataResolved) + ? stringifyParams(dataResolved) + : ''; + + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planIdResolved + '/subscriptions' + query, + requestData: { method: 'GET' }, + callback: cbResolved, + }) + ); + } +} + +class Webhooks { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/webhooks'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + verify(webhook_id: string, verification_code: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id + '/verify' + '/' + verification_code, + requestData: { method: 'POST', json: '{}' }, + callback: callback, + }) + ); + } + + get(webhook_id: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + delete(webhook_id: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + } + + list(callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } +} + +class Tokens { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/tokens'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + get(token_id: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + token_id, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + list(callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } +} + +class Checkouts { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/checkouts'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } + + get(checkout_id: string, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + checkout_id, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } + + update(checkoutId: string, status: string, data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + checkoutId + '?status=' + status, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + } +} + +class Stores { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = 'stores'; + } + + list(callback: Callback): void; + list(data: any, callback: Callback): void; + list(data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendStoreRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + } +} + +class Pse { + private baseUrl: string; + private baseData: BaseData; + + constructor(baseData: BaseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/charges'; + } + + create(data: any, callback: Callback): void { + sendRequest( + _.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + } +} + +class Groups { + customers: any; + charges: any; + + constructor(baseData: BaseData) { + baseData.groupId = baseData.merchantId; + const self = this; + + this.customers = { + baseUrl: 'groups/' + baseData.merchantId + '/customers', + + create: function (data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + update: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + }, + + delete: function (customerId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + + cards: { + baseUrl: 'groups/' + baseData.merchantId + '/customers/', + + create: function (customerId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function (customerId: string, data: any, callback?: Callback): void { + const query = + data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) + ? callback! + : _.isFunction(data) + ? data + : null; + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards' + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function (customerId: string, cardId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + delete: function (customerId: string, cardId: string, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + }, + + charges: { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + + create: function ( + merchantId: string, + customerId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + merchantId + '/customers/' + customerId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + capture: function ( + merchantId: string, + customerId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/charges/' + + transactionId + + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + refund: function ( + merchantId: string, + customerId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/charges/' + + transactionId + + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + }, + + subscriptions: { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + + create: function ( + merchantId: string, + customerId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + list: function ( + merchantId: string, + customerId: string, + data: any, + callback?: Callback + ): void { + const query = + data && + _.isObject(data) && + !_.isArray(data) && + !_.isFunction(data) && + !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb: Callback = _.isFunction(callback) + ? callback! + : _.isFunction(data) + ? data + : null; + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions' + + query, + requestData: { method: 'GET' }, + callback: cb, + }) + ); + }, + + get: function ( + merchantId: string, + customerId: string, + subscriptionId: string, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'GET' }, + callback: callback, + }) + ); + }, + + update: function ( + merchantId: string, + customerId: string, + subscriptionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'PUT', json: data }, + callback: callback, + }) + ); + }, + + delete: function ( + merchantId: string, + customerId: string, + subscriptionId: string, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: + this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'DELETE' }, + callback: callback, + }) + ); + }, + }, + }; + + this.charges = { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + + create: function (merchantId: string, data: any, callback: Callback): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + merchantId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + capture: function ( + merchantId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + + refund: function ( + merchantId: string, + transactionId: string, + data: any, + callback: Callback + ): void { + sendRequest( + _.extend(baseData, { + apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + }) + ); + }, + }; + } +} + +// ── Utilities ────────────────────────────────────────────────────── + +function stringifyParams(params: any): string { + return ( + '?' + + _.map(_.pairs(params), function (arr: string[]) { + return arr.join('='); + }).join('&') + ); +} + +function sendRequest(data: any): void { + const baseUrl = data.isSandbox + ? Openpay.SANDBOX_URL + Openpay.SANDBOX_API_VERSION + : Openpay.BASE_URL + Openpay.API_VERSION; + const url = baseUrl + escapeBrackets(data.apiUrl); + const options: urllib.RequestOptions = { + auth: data.privateKey + ':', + method: (data.requestData.method || 'GET') as urllib.HttpMethod, + contentType: 'json', + timeout: data.timeout, + data: data.requestData.json, + dataType: 'json', + }; + + urllib.request(url, options, function (err: any, body: any, res: any) { + const resCode = res ? res.statusCode : null; + const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; + data.callback(err ? err : error, err || error ? null : body, res); + }); +} + +function sendStoreRequest(data: any): void { + const baseUrl = data.isSandbox + ? Openpay.SANDBOX_URL + '/' + : Openpay.BASE_URL + '/'; + const url = baseUrl + escapeBrackets(data.apiUrl); + const options: urllib.RequestOptions = { + auth: data.privateKey + ':', + method: (data.requestData.method || 'GET') as urllib.HttpMethod, + contentType: 'json', + timeout: data.timeout, + data: data.requestData.json, + dataType: 'json', + }; + + urllib.request(url, options, function (err: any, body: any, res: any) { + const resCode = res ? res.statusCode : null; + const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; + data.callback(err ? err : error, err || error ? null : body, res); + }); +} + +export = Openpay; diff --git a/src/url-utils.ts b/src/url-utils.ts new file mode 100644 index 0000000..ba4421e --- /dev/null +++ b/src/url-utils.ts @@ -0,0 +1,6 @@ +export function escapeBrackets(url: string): string { + url = url.replace(new RegExp('\\[', 'g'), encodeURI('[')); + url = url.replace(new RegExp('\\]', 'g'), encodeURI(']')); + console.log('3:', url); + return url; +} From 6d02c8a61f0e222f1715e81eefcc182cb0b80b44 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:30:45 -0600 Subject: [PATCH 03/21] build: add compiled JavaScript output and type declarations - lib/openpay.js: CommonJS build (module.exports = Openpay) - lib/openpay.d.ts: type declarations for TypeScript consumers - lib/url-utils.js / lib/url-utils.d.ts - Sourcemaps and declaration maps for debugging - Update .gitignore to exclude .reasonix/ tool folder --- .gitignore | 1 + lib/openpay.d.ts | 162 ++++ lib/openpay.d.ts.map | 1 + lib/openpay.js | 1789 ++++++++++++++++++++-------------------- lib/openpay.js.map | 1 + lib/url-utils.d.ts | 2 + lib/url-utils.d.ts.map | 1 + lib/url-utils.js | 12 +- lib/url-utils.js.map | 1 + 9 files changed, 1082 insertions(+), 888 deletions(-) create mode 100644 lib/openpay.d.ts create mode 100644 lib/openpay.d.ts.map create mode 100644 lib/openpay.js.map create mode 100644 lib/url-utils.d.ts create mode 100644 lib/url-utils.d.ts.map create mode 100644 lib/url-utils.js.map diff --git a/.gitignore b/.gitignore index 60b6509..2ca7bf8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .settings/org.eclipse.wst.jsdt.ui.superType.container .settings/org.eclipse.wst.jsdt.ui.superType.name package-lock.json +.reasonix/ diff --git a/lib/openpay.d.ts b/lib/openpay.d.ts new file mode 100644 index 0000000..df7602c --- /dev/null +++ b/lib/openpay.d.ts @@ -0,0 +1,162 @@ +import * as urllib from 'urllib'; +type Callback = (error: any, body: T | null, response: urllib.HttpClientResponse) => void; +interface BaseData { + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; + groupId?: string; +} +declare class Openpay { + static BASE_URL: string; + static API_VERSION: string; + static SANDBOX_URL: string; + static SANDBOX_API_VERSION: string; + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; + groups: Groups; + merchant: Merchant; + charges: Charges; + payouts: Payouts; + fees: Fees; + plans: Plans; + cards: Cards; + customers: Customers; + webhooks: Webhooks; + tokens: Tokens; + checkouts: Checkouts; + pse: Pse; + stores: Stores; + setMerchantId: (merchantId: string) => void; + setPrivateKey: (privateKey: string) => void; + setProductionReady: (isProductionReady: boolean) => void; + setTimeout: (timeout: number) => void; + _reDefine: () => void; + constructor(merchantId: string, privateKey: string, countryCode?: string, isProductionReady?: boolean); + define(baseData: BaseData): void; + setBaseUrl(countryCode: string): void; +} +declare class Merchant { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + get(callback: Callback): void; +} +declare class Charges { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; + get(transactionId: string, callback: Callback): void; + capture(transactionId: string, data: any, callback: Callback): void; + refund(transactionId: string, data: any, callback: Callback): void; +} +declare class Payouts { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; + get(transactionId: string, callback: Callback): void; +} +declare class Fees { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; +} +declare class Customers { + private baseData; + private baseUrl; + charges: any; + transfers: any; + payouts: any; + subscriptions: any; + cards: any; + bankaccounts: any; + constructor(baseData: BaseData); + create: (data: any, callback: Callback) => void; + list: (data: any, callback?: Callback) => void; + get: (customerId: string, callback: Callback) => void; + update: (customerId: string, data: any, callback: Callback) => void; + delete: (customerId: string, callback: Callback) => void; +} +declare class Cards { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; + get(cardId: string, callback: Callback): void; + delete(cardId: string, callback: Callback): void; +} +declare class Plans { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; + get(planId: string, callback: Callback): void; + update(planId: string, data: any, callback: Callback): void; + delete(planId: string, callback: Callback): void; + listSubscriptions(callback: Callback): void; + listSubscriptions(planId: string, callback: Callback): void; + listSubscriptions(planId: string, data: any, callback: Callback): void; +} +declare class Webhooks { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + verify(webhook_id: string, verification_code: string, callback: Callback): void; + get(webhook_id: string, callback: Callback): void; + delete(webhook_id: string, callback: Callback): void; + list(callback: Callback): void; +} +declare class Tokens { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + get(token_id: string, callback: Callback): void; + list(callback: Callback): void; +} +declare class Checkouts { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; + get(checkout_id: string, callback: Callback): void; + list(callback: Callback): void; + list(data: any, callback: Callback): void; + update(checkoutId: string, status: string, data: any, callback: Callback): void; +} +declare class Stores { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + list(callback: Callback): void; + list(data: any, callback: Callback): void; +} +declare class Pse { + private baseUrl; + private baseData; + constructor(baseData: BaseData); + create(data: any, callback: Callback): void; +} +declare class Groups { + customers: any; + charges: any; + constructor(baseData: BaseData); +} +export = Openpay; +//# sourceMappingURL=openpay.d.ts.map \ No newline at end of file diff --git a/lib/openpay.d.ts.map b/lib/openpay.d.ts.map new file mode 100644 index 0000000..9ecdbd4 --- /dev/null +++ b/lib/openpay.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"openpay.d.ts","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/openpay.js b/lib/openpay.js index 9481603..3d94aad 100644 --- a/lib/openpay.js +++ b/lib/openpay.js @@ -1,988 +1,1011 @@ -const urllib = require('urllib'); -const _ = require('underscore'); -var urlUtils = require('./url-utils') - -Openpay.BASE_URL = 'https://api.openpay.mx'; -Openpay.API_VERSION = '/v1/'; -Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.mx'; -Openpay.SANDBOX_API_VERSION = '/v1/'; - - -function Openpay(merchantId, privateKey, countryCode = 'mx', isProductionReady) { - this.merchantId = merchantId; - this.privateKey = privateKey; - this.isSandbox = isProductionReady ? false : true; - this.timeout = 90000; - this.define({ - isSandbox: this.isSandbox, - privateKey: this.privateKey, - merchantId: this.merchantId, - timeout: this.timeout - }); - this.setBaseUrl(countryCode); - - this.setMerchantId = function (merchantId) { +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +const urllib = __importStar(require("urllib")); +const _ = __importStar(require("underscore")); +const url_utils_1 = require("./url-utils"); +// ── Main Class ──────────────────────────────────────────────────── +class Openpay { + constructor(merchantId, privateKey, countryCode = 'mx', isProductionReady) { this.merchantId = merchantId; - this._reDefine(); - }; - - this.setPrivateKey = function (privateKey) { this.privateKey = privateKey; - this._reDefine(); - }; - - this.setProductionReady = function (isProductionReady) { - this.isSandbox = !isProductionReady; - this._reDefine(); - }; - - this.setTimeout = function (timeout) { - this.timeout = timeout; - this._reDefine(); - }; - - this._reDefine = function () { + this.isSandbox = isProductionReady ? false : true; + this.timeout = 90000; this.define({ isSandbox: this.isSandbox, privateKey: this.privateKey, merchantId: this.merchantId, - timeout: this.timeout + timeout: this.timeout, }); - }; -} - -Openpay.prototype.define = function (baseData) { - this.groups = new Groups(baseData); - this.merchant = new Merchant(baseData); - this.charges = new Charges(baseData); - this.payouts = new Payouts(baseData); - this.fees = new Fees(baseData); - this.plans = new Plans(baseData); - this.cards = new Cards(baseData); - this.customers = new Customers(baseData); - this.webhooks = new Webhooks(baseData); - this.tokens = new Tokens(baseData); - this.checkouts = new Checkouts(baseData); - this.pse = new Pse(baseData); - this.stores = new Stores(baseData); -}; - -Openpay.prototype.setBaseUrl = function (countryCode) { - console.log('setting base url from country') - switch (countryCode) { - case 'pe': - console.log('Country Peru'); - Openpay.BASE_URL = "https://api.openpay.pe"; - Openpay.SANDBOX_URL = "https://sandbox-api.openpay.pe"; - break; - case 'co': - console.log('Country Colombia') - Openpay.BASE_URL = "https://api.openpay.co"; - Openpay.SANDBOX_URL = "https://sandbox-api.openpay.co"; - break - case 'mx': - console.log('Country Mexico'); - console.log('Default value'); - break - default: - console.error('Error country code, setting mx default.'); + this.setBaseUrl(countryCode); + this.setMerchantId = function (merchantId) { + this.merchantId = merchantId; + this._reDefine(); + }; + this.setPrivateKey = function (privateKey) { + this.privateKey = privateKey; + this._reDefine(); + }; + this.setProductionReady = function (isProductionReady) { + this.isSandbox = !isProductionReady; + this._reDefine(); + }; + this.setTimeout = function (timeout) { + this.timeout = timeout; + this._reDefine(); + }; + this._reDefine = function () { + this.define({ + isSandbox: this.isSandbox, + privateKey: this.privateKey, + merchantId: this.merchantId, + timeout: this.timeout, + }); + }; + } + define(baseData) { + this.groups = new Groups(baseData); + this.merchant = new Merchant(baseData); + this.charges = new Charges(baseData); + this.payouts = new Payouts(baseData); + this.fees = new Fees(baseData); + this.plans = new Plans(baseData); + this.cards = new Cards(baseData); + this.customers = new Customers(baseData); + this.webhooks = new Webhooks(baseData); + this.tokens = new Tokens(baseData); + this.checkouts = new Checkouts(baseData); + this.pse = new Pse(baseData); + this.stores = new Stores(baseData); + } + setBaseUrl(countryCode) { + console.log('setting base url from country'); + switch (countryCode) { + case 'pe': + console.log('Country Peru'); + Openpay.BASE_URL = 'https://api.openpay.pe'; + Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.pe'; + break; + case 'co': + console.log('Country Colombia'); + Openpay.BASE_URL = 'https://api.openpay.co'; + Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.co'; + break; + case 'mx': + console.log('Country Mexico'); + console.log('Default value'); + break; + default: + console.error('Error country code, setting mx default.'); + } } } - -function Merchant(baseData) { - var baseUrl = baseData.merchantId; - - this.get = function (callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'GET'}, - callback: callback +Openpay.BASE_URL = 'https://api.openpay.mx'; +Openpay.API_VERSION = '/v1/'; +Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.mx'; +Openpay.SANDBOX_API_VERSION = '/v1/'; +// ── Resource Classes ─────────────────────────────────────────────── +class Merchant { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId; + } + get(callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, })); - }; + } } - -function Charges(baseData) { - var baseUrl = baseData.merchantId + '/charges'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Charges { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/charges'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; - - this.get = function (transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + transactionId, - requestData: {method: 'GET'}, - callback: callback + } + get(transactionId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - this.capture = function (transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + transactionId + '/capture', - requestData: {method: 'POST', json: data}, - callback: callback + } + capture(transactionId, data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.refund = function (transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + transactionId + '/refund', - requestData: {method: 'POST', json: data}, - callback: callback + } + refund(transactionId, data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; + } } - - -function Payouts(baseData) { - var baseUrl = baseData.merchantId + '/payouts'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Payouts { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/payouts'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; - - this.get = function (transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + transactionId, - requestData: {method: 'GET'}, - callback: callback + } + get(transactionId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, })); - }; + } } - - -function Fees(baseData) { - var baseUrl = baseData.merchantId + '/fees'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Fees { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/fees'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; + } } - - -function Customers(baseData) { - var baseUrl = baseData.merchantId + '/customers'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback - })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback - })); - }; - - this.get = function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + customerId, - requestData: {method: 'GET'}, - callback: callback - })); - }; - - this.update = function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + customerId, - requestData: {method: 'PUT', json: data}, - callback: callback - })); - }; - - this.delete = function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + customerId, - requestData: {method: 'DELETE'}, - callback: callback - })); - }; - - this.charges = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - capture: function (customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/capture', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - refund: function (customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/refund', - requestData: {method: 'POST', json: data}, - callback: callback - })); - } - }; - - this.transfers = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers/' + transactionId, - requestData: {method: 'GET'}, - callback: callback - })); - } - }; - - this.payouts = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts/' + transactionId, - requestData: {method: 'GET'}, - callback: callback - })); - } - }; - - this.subscriptions = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - update: function (customerId, subscriptionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'PUT', json: data}, - callback: callback - })); - }, - - delete: function (customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'DELETE'}, - callback: callback - })); - } - }; - - this.cards = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - delete: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: {method: 'DELETE'}, - callback: callback - })); - }, - update: function (customerId, cardId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: {method: 'PUT', json: data}, - callback: callback - })); - } - }; - - this.bankaccounts = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts' + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, bankId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankId, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - delete: function (customerId, bankId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankId, - requestData: {method: 'DELETE'}, - callback: callback - })); - } - }; - - this.checkouts = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/checkouts', - requestData: {method: 'POST', json: data}, - callback: callback - })); - } - }; - - this.pse = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges', - requestData: {method: 'POST', json: data}, - callback: callback - })); - } +class Customers { + constructor(baseData) { + const self = this; + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/customers'; + this.create = function (data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: self.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }; + this.list = function (data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: self.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }; + this.get = function (customerId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'GET' }, + callback: callback, + })); + }; + this.update = function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'PUT', json: data }, + callback: callback, + })); + }; + this.delete = function (customerId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: self.baseUrl + '/' + customerId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }; + this.charges = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, transactionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + capture: function (customerId, transactionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + refund: function (customerId, transactionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + }; + this.transfers = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, transactionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/transfers/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + }; + this.payouts = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, transactionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/payouts/' + transactionId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + }; + this.subscriptions = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, subscriptionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + update: function (customerId, subscriptionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'PUT', json: data }, + callback: callback, + })); + }, + delete: function (customerId, subscriptionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }, + }; + this.cards = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, cardId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + delete: function (customerId, cardId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }, + }; + this.bankaccounts = { + baseUrl: baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + get: function (customerId, bankAccountId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + delete: function (customerId, bankAccountId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/bankaccounts' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + }; } } - - -function Cards(baseData) { - var baseUrl = baseData.merchantId + '/cards'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback - })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback +class Cards { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/cards'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.get = function (cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + cardId, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; - - this.delete = function (cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + cardId, - requestData: {method: 'DELETE'}, - callback: callback + } + get(cardId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + cardId, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - this.update = function (cardId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + cardId, - requestData: {method: 'PUT', json: data}, - callback: callback + } + delete(cardId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, })); - }; + } } - -function Plans(baseData) { - var baseUrl = baseData.merchantId + '/plans'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Plans { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/plans'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; - - this.get = function (planId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + planId, - requestData: {method: 'GET'}, - callback: callback + } + get(planId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - this.update = function (planId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + planId, - requestData: {method: 'PUT', json: data}, - callback: callback + } + update(planId, data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'PUT', json: data }, + callback: callback, })); - }; - - this.delete = function (planId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + planId, - requestData: {method: 'DELETE'}, - callback: callback + } + delete(planId, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planId, + requestData: { method: 'DELETE' }, + callback: callback, })); - }; - - this.listSubscriptions = function (planId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + planId + '/subscriptions' + query, - requestData: {method: 'GET'}, - callback: callback + } + listSubscriptions(planId, data, callback) { + // Handle overloaded signatures like the original + let planIdResolved; + let dataResolved; + let cbResolved; + if (_.isFunction(data)) { + // Called as listSubscriptions(planId, callback) + planIdResolved = planId; + dataResolved = undefined; + cbResolved = data; + } + else if (_.isFunction(callback)) { + // Called as listSubscriptions(planId, data, callback) + planIdResolved = planId; + dataResolved = data; + cbResolved = callback; + } + else if (_.isFunction(planId)) { + // Called as listSubscriptions(callback) + planIdResolved = ''; + dataResolved = undefined; + cbResolved = planId; + } + else { + planIdResolved = planId; + dataResolved = data; + cbResolved = callback; + } + const query = dataResolved && + _.isObject(dataResolved) && + !_.isArray(dataResolved) && + !_.isFunction(dataResolved) && + !_.isEmpty(dataResolved) + ? stringifyParams(dataResolved) + : ''; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + planIdResolved + '/subscriptions' + query, + requestData: { method: 'GET' }, + callback: cbResolved, })); - }; + } } - - -function Webhooks(baseData) { - var baseUrl = baseData.merchantId + '/webhooks'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Webhooks { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/webhooks'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.verify = function (webhook_id, verification_code, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + webhook_id + '/verify' + '/' + verification_code, - requestData: {method: 'POST', json: '{}'}, - callback: callback + } + verify(webhook_id, verification_code, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id + '/verify' + '/' + verification_code, + requestData: { method: 'POST', json: '{}' }, + callback: callback, })); - }; - - this.get = function (webhook_id, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + webhook_id, - requestData: {method: 'GET'}, - callback: callback + } + get(webhook_id, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - - this.delete = function (webhook_id, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + webhook_id, - requestData: {method: 'DELETE'}, - callback: callback + } + delete(webhook_id, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + webhook_id, + requestData: { method: 'DELETE' }, + callback: callback, })); - }; - - this.list = function (callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'GET'}, - callback: callback + } + list(callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, })); - }; - + } } - -function Tokens(baseData) { - var baseUrl = baseData.merchantId + '/tokens'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Tokens { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/tokens'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.get = function (token_id, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + token_id, - requestData: {method: 'GET'}, - callback: callback + } + get(token_id, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + token_id, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - this.list = function (callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'GET'}, - callback: callback + } + list(callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'GET' }, + callback: callback, })); - }; - + } } - -function Checkouts(baseData) { - var baseUrl = baseData.merchantId + '/checkouts'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Checkouts { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/checkouts'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; - - this.get = function (checkout_id, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + checkout_id, - requestData: {method: 'GET'}, - callback: callback + } + get(checkout_id, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + checkout_id, + requestData: { method: 'GET' }, + callback: callback, })); - }; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; - - this.update = function (checkoutId, status, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl + '/' + checkoutId + "?status=" + status, - requestData: {method: 'PUT', json: data}, - callback: callback + } + update(checkoutId, status, data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + '/' + checkoutId + '?status=' + status, + requestData: { method: 'PUT', json: data }, + callback: callback, })); - }; + } } - -function Stores(baseData) { - var baseUrl = 'stores'; - - this.list = function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendStoreRequest(_.extend(baseData, { - apiUrl: baseUrl + query, - requestData: {method: 'GET'}, - callback: callback +class Stores { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = 'stores'; + } + list(data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + sendStoreRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); - }; + } } - -function Pse(baseData) { - var baseUrl = baseData.merchantId + '/charges'; - - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback +class Pse { + constructor(baseData) { + this.baseData = baseData; + this.baseUrl = baseData.merchantId + '/charges'; + } + create(data, callback) { + sendRequest(_.extend(this.baseData, { + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); - }; + } } - -function Groups(baseData) { - baseData.groupId = baseData.merchantId; - var baseUrl = 'groups' - this.customers = { - baseUrl: 'groups/' + baseData.merchantId + '/customers', - - create: function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl, - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - list: function (data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + query, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - get: function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: {method: 'GET'}, - callback: callback - })); - }, - - update: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: {method: 'PUT', json: data}, - callback: callback - })); - }, - - delete: function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: {method: 'DELETE'}, - callback: callback - })); - }, - - cards: { - baseUrl: 'groups/' + baseData.merchantId + '/customers/', - - create: function (customerId, data, callback) { +class Groups { + constructor(baseData) { + baseData.groupId = baseData.merchantId; + const self = this; + this.customers = { + baseUrl: 'groups/' + baseData.merchantId + '/customers', + create: function (data, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: {method: 'POST', json: data}, - callback: callback + apiUrl: this.baseUrl, + requestData: { method: 'POST', json: data }, + callback: callback, })); }, - - list: function (customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; + list: function (data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: {method: 'GET'}, - callback: callback + apiUrl: this.baseUrl + query, + requestData: { method: 'GET' }, + callback: cb, })); }, - - get: function (customerId, cardId, callback) { + get: function (customerId, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: {method: 'GET'}, - callback: callback + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'GET' }, + callback: callback, })); }, - - delete: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: {method: 'DELETE'}, - callback: callback - })); - } - }, - - charges: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function (merchantId, customerId, data, callback) { + update: function (customerId, data, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/charges', - requestData: {method: 'POST', json: data}, - callback: callback + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'PUT', json: data }, + callback: callback, })); }, - - capture: function (merchantId, customerId, transactionId, data, callback) { + delete: function (customerId, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/charges/' + transactionId + '/capture', - requestData: {method: 'POST', json: data}, - callback: callback + apiUrl: this.baseUrl + '/' + customerId, + requestData: { method: 'DELETE' }, + callback: callback, })); }, - - refund: function (merchantId, customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/charges/' + transactionId + '/refund', - requestData: {method: 'POST', json: data}, - callback: callback - })); - } - }, - - subscriptions: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function (merchantId, customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions', - requestData: {method: 'POST', json: data}, - callback: callback - })); + cards: { + baseUrl: 'groups/' + baseData.merchantId + '/customers/', + create: function (customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (customerId, data, callback) { + const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) + ? callback + : _.isFunction(data) + ? data + : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards' + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (customerId, cardId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + delete: function (customerId, cardId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + customerId + '/cards/' + cardId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }, }, - - list: function (merchantId, customerId, data, callback) { - var query = (data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data)) ? stringifyParams(data) : ''; - var callback = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions' + query, - requestData: {method: 'GET'}, - callback: callback - })); + charges: { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + create: function (merchantId, customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + capture: function (merchantId, customerId, transactionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/charges/' + + transactionId + + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + refund: function (merchantId, customerId, transactionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/charges/' + + transactionId + + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, }, - - get: function (merchantId, customerId, subscriptionId, callback) { + subscriptions: { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + create: function (merchantId, customerId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions', + requestData: { method: 'POST', json: data }, + callback: callback, + })); + }, + list: function (merchantId, customerId, data, callback) { + const query = data && + _.isObject(data) && + !_.isArray(data) && + !_.isFunction(data) && + !_.isEmpty(data) + ? stringifyParams(data) + : ''; + const cb = _.isFunction(callback) + ? callback + : _.isFunction(data) + ? data + : null; + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions' + + query, + requestData: { method: 'GET' }, + callback: cb, + })); + }, + get: function (merchantId, customerId, subscriptionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'GET' }, + callback: callback, + })); + }, + update: function (merchantId, customerId, subscriptionId, data, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'PUT', json: data }, + callback: callback, + })); + }, + delete: function (merchantId, customerId, subscriptionId, callback) { + sendRequest(_.extend(baseData, { + apiUrl: this.baseUrl + + merchantId + + '/customers/' + + customerId + + '/subscriptions/' + + subscriptionId, + requestData: { method: 'DELETE' }, + callback: callback, + })); + }, + }, + }; + this.charges = { + baseUrl: 'groups/' + baseData.merchantId + '/merchants/', + create: function (merchantId, data, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'GET'}, - callback: callback + apiUrl: this.baseUrl + merchantId + '/charges', + requestData: { method: 'POST', json: data }, + callback: callback, })); }, - - update: function (merchantId, customerId, subscriptionId, data, callback) { + capture: function (merchantId, transactionId, data, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'PUT', json: data}, - callback: callback + apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/capture', + requestData: { method: 'POST', json: data }, + callback: callback, })); }, - - delete: function (merchantId, customerId, subscriptionId, callback) { + refund: function (merchantId, transactionId, data, callback) { sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions/' + subscriptionId, - requestData: {method: 'DELETE'}, - callback: callback + apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/refund', + requestData: { method: 'POST', json: data }, + callback: callback, })); - } - } - }; - - this.charges = { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function (merchantId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - capture: function (merchantId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/capture', - requestData: {method: 'POST', json: data}, - callback: callback - })); - }, - - refund: function (merchantId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/refund', - requestData: {method: 'POST', json: data}, - callback: callback - })); - } - }; - + }, + }; + } } - - -var stringifyParams = function (params) { - return '?' + _.map(_.pairs(params), function (arr) { - return arr.join('='); - }).join('&'); +// ── Utilities ────────────────────────────────────────────────────── +function stringifyParams(params) { + return ('?' + + _.map(_.pairs(params), function (arr) { + return arr.join('='); + }).join('&')); } - -var sendRequest = function (data) { - var baseUrl = data.isSandbox ? Openpay.SANDBOX_URL + Openpay.SANDBOX_API_VERSION : Openpay.BASE_URL + Openpay.API_VERSION; - const url = baseUrl + urlUtils.escapeBrackets(data.apiUrl); +function sendRequest(data) { + const baseUrl = data.isSandbox + ? Openpay.SANDBOX_URL + Openpay.SANDBOX_API_VERSION + : Openpay.BASE_URL + Openpay.API_VERSION; + const url = baseUrl + (0, url_utils_1.escapeBrackets)(data.apiUrl); const options = { auth: data.privateKey + ':', - method: data.requestData.method || 'GET', + method: (data.requestData.method || 'GET'), contentType: 'json', timeout: data.timeout, data: data.requestData.json, - dataType: 'json' + dataType: 'json', }; - urllib.request(url, options, function (err, body, res) { - var resCode = res ? res.statusCode : null; - var error = resCode && (resCode != 200 && resCode != 201 && resCode != 204) ? body : null; + const resCode = res ? res.statusCode : null; + const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; data.callback(err ? err : error, err || error ? null : body, res); }); } - -var sendStoreRequest = function (data) { - var baseUrl = data.isSandbox ? Openpay.SANDBOX_URL + "/" : Openpay.BASE_URL + "/"; - const url = baseUrl + urlUtils.escapeBrackets(data.apiUrl); +function sendStoreRequest(data) { + const baseUrl = data.isSandbox + ? Openpay.SANDBOX_URL + '/' + : Openpay.BASE_URL + '/'; + const url = baseUrl + (0, url_utils_1.escapeBrackets)(data.apiUrl); const options = { auth: data.privateKey + ':', - method: data.requestData.method || 'GET', + method: (data.requestData.method || 'GET'), contentType: 'json', timeout: data.timeout, data: data.requestData.json, - dataType: 'json' + dataType: 'json', }; - urllib.request(url, options, function (err, body, res) { - var resCode = res ? res.statusCode : null; - var error = resCode && (resCode != 200 && resCode != 201 && resCode != 204) ? body : null; + const resCode = res ? res.statusCode : null; + const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; data.callback(err ? err : error, err || error ? null : body, res); }); } - module.exports = Openpay; +//# sourceMappingURL=openpay.js.map \ No newline at end of file diff --git a/lib/openpay.js.map b/lib/openpay.js.map new file mode 100644 index 0000000..9ae0773 --- /dev/null +++ b/lib/openpay.js.map @@ -0,0 +1 @@ +{"version":3,"file":"openpay.js","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/url-utils.d.ts b/lib/url-utils.d.ts new file mode 100644 index 0000000..69c759a --- /dev/null +++ b/lib/url-utils.d.ts @@ -0,0 +1,2 @@ +export declare function escapeBrackets(url: string): string; +//# sourceMappingURL=url-utils.d.ts.map \ No newline at end of file diff --git a/lib/url-utils.d.ts.map b/lib/url-utils.d.ts.map new file mode 100644 index 0000000..1e0c9d1 --- /dev/null +++ b/lib/url-utils.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKlD"} \ No newline at end of file diff --git a/lib/url-utils.js b/lib/url-utils.js index 14c6cd3..087856c 100644 --- a/lib/url-utils.js +++ b/lib/url-utils.js @@ -1,8 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.escapeBrackets = escapeBrackets; function escapeBrackets(url) { - url = url.replace(new RegExp('\\[', 'g'), encodeURI('[')) - url = url.replace(new RegExp('\]', 'g'), encodeURI(']')) - console.log('3:', url) + url = url.replace(new RegExp('\\[', 'g'), encodeURI('[')); + url = url.replace(new RegExp('\\]', 'g'), encodeURI(']')); + console.log('3:', url); return url; } - -exports.escapeBrackets = escapeBrackets; +//# sourceMappingURL=url-utils.js.map \ No newline at end of file diff --git a/lib/url-utils.js.map b/lib/url-utils.js.map new file mode 100644 index 0000000..07d64f6 --- /dev/null +++ b/lib/url-utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;AAAA,wBAA+B,GAAW;IACtC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file From 5e9c7d3b7c47d34b8a240255409d3e17217a7d5a Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:45:41 -0600 Subject: [PATCH 04/21] build: upgrade to modern TypeScript with strict mode and typed interfaces - strict: true, target ES2022, Node >=20 - Typed interfaces for all API resources (ChargeRequest, PayoutRequest, etc.) - Custom error classes: OpenpayError, NetworkError, TimeoutError - Replace underscore utils with native ES2022 equivalents - Remove console.log noise from url-utils - License, repository, keywords metadata --- package.json | 34 ++++-- src/errors.ts | 58 ++++++++++ src/stringify-params.ts | 32 ++++++ src/types.ts | 236 ++++++++++++++++++++++++++++++++++++++++ src/url-utils.ts | 11 +- tsconfig.json | 13 ++- 6 files changed, 366 insertions(+), 18 deletions(-) create mode 100644 src/errors.ts create mode 100644 src/stringify-params.ts create mode 100644 src/types.ts diff --git a/package.json b/package.json index 2673506..b72b7b6 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,33 @@ { "name": "openpay", - "description": "Openpay library", - "version": "2.0.1", - "dependencies": { - "underscore": "1.13.6", - "urllib": "^2.36.1" + "description": "Openpay API client for Node.js — typed, promise-friendly, and battle-tested", + "version": "3.0.0", + "license": "Apache-2.0", + "author": "Openpay", + "repository": { + "type": "git", + "url": "https://github.com/openpay/openpay-node" + }, + "keywords": [ + "openpay", + "payments", + "api", + "mexico", + "colombia", + "peru" + ], + "engines": { + "node": ">=20.0.0" }, - "main": "lib/openpay.js", - "types": "lib/openpay.d.ts", + "main": "./lib/index.js", + "types": "./lib/index.d.ts", "files": [ "lib/**/*" ], + "dependencies": { + "underscore": "1.13.6", + "urllib": "^2.36.1" + }, "devDependencies": { "@types/node": "^26.1.1", "@types/underscore": "^1.13.0", @@ -21,8 +38,5 @@ "build": "tsc --project tsconfig.json", "prepublishOnly": "npm run build", "test": "mocha" - }, - "engines": { - "node": ">=0.6.x" } } diff --git a/src/errors.ts b/src/errors.ts new file mode 100644 index 0000000..b744f57 --- /dev/null +++ b/src/errors.ts @@ -0,0 +1,58 @@ +// ── Custom Error Classes ─────────────────────────────────────────── + +export class OpenpayError extends Error { + public readonly statusCode: number; + public readonly body: unknown; + public readonly category?: string | undefined; + public readonly description?: string | undefined; + public readonly requestId?: string | undefined; + + constructor( + message: string, + statusCode: number, + body: unknown, + cause?: Error, + ) { + super(message, { cause }); + this.name = 'OpenpayError'; + this.statusCode = statusCode; + + // Extract details from the Openpay error body if possible + if (body !== null && typeof body === 'object') { + const b = body as Record; + this.body = body; + const cat = b['category']; + const desc = b['description']; + const reqId = b['request_id']; + if (typeof cat === 'string') this.category = cat; + if (typeof desc === 'string') this.description = desc; + if (typeof reqId === 'string') this.requestId = reqId; + } else { + this.body = body; + } + } + + /** Whether this is a client error (4xx). */ + get isClientError(): boolean { + return this.statusCode >= 400 && this.statusCode < 500; + } + + /** Whether this is a server error (5xx). */ + get isServerError(): boolean { + return this.statusCode >= 500; + } +} + +export class NetworkError extends OpenpayError { + constructor(cause: Error) { + super(`Network error: ${cause.message}`, 0, null, cause); + this.name = 'NetworkError'; + } +} + +export class TimeoutError extends OpenpayError { + constructor(timeoutMs: number) { + super(`Request timed out after ${timeoutMs}ms`, 408, null); + this.name = 'TimeoutError'; + } +} diff --git a/src/stringify-params.ts b/src/stringify-params.ts new file mode 100644 index 0000000..45a5d04 --- /dev/null +++ b/src/stringify-params.ts @@ -0,0 +1,32 @@ +import type { QueryParams } from './types'; + +/** + * Converts a plain object to a query string with `?` prefix. + * Returns an empty string when params is undefined, null, or empty. + */ +export function stringifyParams(params: QueryParams | undefined | null): string { + if (params == null || typeof params !== 'object' || Array.isArray(params)) { + return ''; + } + + const entries = Object.entries(params); + if (entries.length === 0) { + return ''; + } + + const parts = entries.map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`); + return '?' + parts.join('&'); +} + +/** + * Detect whether a value is a plain, non-array, non-null object + * with at least one key — used by list-method overload resolution. + */ +export function isPlainObjectWithKeys(value: unknown): value is Record { + return ( + typeof value === 'object' && + value !== null && + !Array.isArray(value) && + Object.keys(value as object).length > 0 + ); +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..f7120b5 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,236 @@ +// ── HTTP & Request Types ─────────────────────────────────────────── + +export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'; + +export interface RequestSpec { + apiUrl: string; + requestData: { + method: HttpMethod; + json?: unknown; + }; +} + +// ── Configuration ────────────────────────────────────────────────── + +export interface OpenpayConfig { + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; +} + +// ── Callback ─────────────────────────────────────────────────────── + +export type Callback = ( + error: Error | null, + body: T | null, + response: HttpResponse | null, +) => void; + +// ── HTTP Response ────────────────────────────────────────────────── + +export interface HttpResponse { + statusCode: number; + headers: Record; +} + +// ── Country Code ─────────────────────────────────────────────────── + +export type CountryCode = 'mx' | 'pe' | 'co'; + +// ── Query Params ─────────────────────────────────────────────────── + +export type QueryParams = Record; + +// ── API Response (generic resource) ──────────────────────────────── + +export interface OpenpayResource { + id: string; + [key: string]: unknown; +} + +// ── Charge ───────────────────────────────────────────────────────── + +export interface ChargeRequest { + method: 'card' | 'bank_account' | 'store'; + amount: number; + description: string; + card?: CardRequest; + source_id?: string; + capture?: boolean; + currency?: string; + device_session_id?: string; + customer?: CustomerRef; + confirm?: boolean; + send_email?: boolean; + redirect_url?: string; + use_3d_secure?: boolean; + metadata?: Record; +} + +export interface CardRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; +} + +export interface CustomerRef { + id?: string; + name: string; + email?: string; + phone_number?: string; + requires_account?: boolean; + address?: Address; +} + +export interface Address { + city?: string; + country_code?: string; + line1?: string; + line2?: string; + line3?: string; + postal_code?: string; + state?: string; +} + +export interface CaptureRequest { + amount?: number; +} + +export interface RefundRequest { + description?: string; + amount?: number; +} + +// ── Payout ───────────────────────────────────────────────────────── + +export interface PayoutRequest { + method: 'card' | 'bank_account'; + destination_id?: string; + amount: number; + description: string; + card?: CardRequest; + bank_account?: BankAccountRequest; +} + +export interface BankAccountRequest { + clabe: string; + holder_name: string; + bank_code?: string; + bank_name?: string; +} + +// ── Customer ─────────────────────────────────────────────────────── + +export interface CustomerRequest { + name: string; + email?: string; + phone_number?: string; + requires_account?: boolean; + address?: Address; + external_id?: string; + status?: string; +} + +// ── Card ─────────────────────────────────────────────────────────── + +export interface CardCreateRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; +} + +// ── Bank Account ─────────────────────────────────────────────────── + +export interface BankAccountCreateRequest { + clabe: string; + holder_name: string; + bank_code?: string; + bank_name?: string; + alias?: string; +} + +// ── Plan ─────────────────────────────────────────────────────────── + +export interface PlanRequest { + name: string; + amount: number; + repeat_every: number; + repeat_unit: 'day' | 'week' | 'month' | 'year'; + retry_times?: number; + status_after_retry?: 'cancelled' | 'unpaid'; + trial_days?: number; + currency?: string; +} + +// ── Subscription ─────────────────────────────────────────────────── + +export interface SubscriptionRequest { + plan_id: string; + card_id?: string; + token_id?: string; + trial_days?: number; + trial_end_date?: string; + coupon_id?: string; +} + +// ── Webhook ──────────────────────────────────────────────────────── + +export interface WebhookRequest { + url: string; + event_types: string[]; +} + +// ── Token ────────────────────────────────────────────────────────── + +export interface TokenRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; + address?: Address; +} + +// ── Checkout ─────────────────────────────────────────────────────── + +export interface CheckoutRequest { + amount: number; + description: string; + order_id?: string; + currency?: string; + customer?: CustomerRef; + send_email?: boolean; + redirect_url?: string; + confirm?: boolean; + iva?: number; + metadata?: Record; + expires_at?: string; + needs_shipping_contact?: boolean; + type?: 'redirect' | 'modal' | 'integration'; +} + +// ── PSE ──────────────────────────────────────────────────────────── + +export interface PseRequest { + method: ' bank_account'; + amount: number; + description: string; + customer?: CustomerRef; + bank_code: string; + redirect_url?: string; +} + +// ── Store ────────────────────────────────────────────────────────── + +export interface StoreListParams { + lte?: string; + gte?: string; + limit?: number; + offset?: number; + [key: string]: string | number | undefined; +} diff --git a/src/url-utils.ts b/src/url-utils.ts index ba4421e..51fb84d 100644 --- a/src/url-utils.ts +++ b/src/url-utils.ts @@ -1,6 +1,9 @@ +/** + * Escapes square brackets in URLs so they're safe for Openpay's API + * (which uses bracket notation in query params, e.g. creation[gte]). + */ export function escapeBrackets(url: string): string { - url = url.replace(new RegExp('\\[', 'g'), encodeURI('[')); - url = url.replace(new RegExp('\\]', 'g'), encodeURI(']')); - console.log('3:', url); - return url; + let result = url.replace(/\[/g, encodeURI('[')); + result = result.replace(/\]/g, encodeURI(']')); + return result; } diff --git a/tsconfig.json b/tsconfig.json index 2533175..e5bf98e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,17 +1,22 @@ { "compilerOptions": { - "target": "ES2015", + "target": "ES2022", "module": "commonjs", - "lib": ["ES2015", "DOM"], "outDir": "./lib", "rootDir": "./src", "declaration": true, "declarationMap": true, "sourceMap": true, - "strict": false, + "strict": true, "esModuleInterop": true, "skipLibCheck": true, - "forceConsistentCasingInFileNames": true + "types": ["node"], + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": false, + "noUnusedParameters": false, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "exactOptionalPropertyTypes": false }, "include": ["src/**/*.ts"], "exclude": ["node_modules", "test"] From dfe4dcccca9a3f3ec0442300be36b901edfb0921 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:45:46 -0600 Subject: [PATCH 05/21] refactor: extract HTTP layer and BaseResource abstract class (DIP, SRP) - HttpClient interface for dependency inversion - UrllibHttpClient / StoreHttpClient implementations - BaseResource provides shared request(), resolveListParams(), url() helpers - Resources depend on abstractions, not on urllib directly --- src/base-resource.ts | 64 +++++++++++++++++++++++ src/http-client.ts | 117 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 181 insertions(+) create mode 100644 src/base-resource.ts create mode 100644 src/http-client.ts diff --git a/src/base-resource.ts b/src/base-resource.ts new file mode 100644 index 0000000..040a245 --- /dev/null +++ b/src/base-resource.ts @@ -0,0 +1,64 @@ +import type { Callback, HttpMethod, OpenpayConfig, QueryParams } from './types'; +import type { HttpClient } from './http-client'; +import { stringifyParams, isPlainObjectWithKeys } from './stringify-params'; + +/** + * Abstract base for every Openpay API resource. + * + * Provides: + * - `request()` helper for HTTP calls + * - `list()` overload helper (data-or-callback resolution) + * - Promise + callback support methods + */ +export abstract class BaseResource { + protected readonly config: OpenpayConfig; + protected readonly httpClient: HttpClient; + protected readonly baseUrl: string; + + constructor(config: OpenpayConfig, httpClient: HttpClient, baseUrl: string) { + this.config = config; + this.httpClient = httpClient; + this.baseUrl = baseUrl; + } + + /** Issue an HTTP request to the API. */ + protected request( + method: HttpMethod, + path: string, + body: unknown | undefined, + callback: Callback, + ): void { + this.httpClient.request(method, path, body, this.config, callback); + } + + /** + * Resolves the common `list(data, callback)` / `list(callback)` overload. + * + * Returns: + * - `query` — URL query string (with `?` prefix, or `''`) + * - `cb` — the resolved callback + */ + protected resolveListParams( + dataOrCb: QueryParams | Callback | undefined, + cb?: Callback, + ): { query: string; cb: Callback | undefined } { + if (typeof dataOrCb === 'function') { + return { query: '', cb: dataOrCb as Callback }; + } + if (typeof cb === 'function') { + const q = isPlainObjectWithKeys(dataOrCb) ? stringifyParams(dataOrCb) : ''; + return { query: q, cb }; + } + return { query: '', cb: undefined }; + } + + /** Build a sub-path under this resource's base URL. */ + protected url(segment = ''): string { + return segment ? `${this.baseUrl}/${segment}` : this.baseUrl; + } + + /** Build a URL with a query string appended. */ + protected urlWithQuery(segment: string, query: string): string { + return query ? `${this.baseUrl}/${segment}${query}` : `${this.baseUrl}/${segment}`; + } +} diff --git a/src/http-client.ts b/src/http-client.ts new file mode 100644 index 0000000..eb919b5 --- /dev/null +++ b/src/http-client.ts @@ -0,0 +1,117 @@ +import * as http from 'http'; +import * as urllib from 'urllib'; +import type { HttpMethod, OpenpayConfig, Callback } from './types'; +import { OpenpayError, NetworkError } from './errors'; +import { escapeBrackets } from './url-utils'; + +// ── HTTP Client Interface (DIP: resources depend on this, not on urllib) ─ + +export interface HttpClient { + request( + method: HttpMethod, + url: string, + body: unknown | undefined, + config: OpenpayConfig, + callback: Callback, + ): void; +} + +// ── Urllib-based Implementation ──────────────────────────────────── + +export class UrllibHttpClient implements HttpClient { + request( + method: HttpMethod, + url: string, + body: unknown | undefined, + config: OpenpayConfig, + callback: Callback, + ): void { + const baseUrl = config.isSandbox + ? UrllibHttpClient.SANDBOX_URL + UrllibHttpClient.API_VERSION + : UrllibHttpClient.BASE_URL + UrllibHttpClient.API_VERSION; + + const fullUrl = baseUrl + escapeBrackets(url); + + const options: urllib.RequestOptions = { + auth: config.privateKey + ':', + method, + contentType: 'json', + timeout: config.timeout, + data: body, + dataType: 'json', + }; + + urllib.request(fullUrl, options, (err: Error | null, respBody: unknown, res: http.IncomingMessage) => { + if (err) { + callback(new NetworkError(err), null, null); + return; + } + + const resCode: number = res?.statusCode ?? 0; + const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; + + if (isSuccess) { + callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); + } else { + const openpayErr = new OpenpayError( + `HTTP ${resCode}`, + resCode, + respBody, + ); + callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); + } + }); + } + + static BASE_URL = 'https://api.openpay.mx'; + static API_VERSION = '/v1/'; + static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; +} + +// ── Store HTTP Client (uses different base URL format) ───────────── + +export class StoreHttpClient implements HttpClient { + request( + method: HttpMethod, + url: string, + body: unknown | undefined, + config: OpenpayConfig, + callback: Callback, + ): void { + const baseUrl = config.isSandbox + ? UrllibHttpClient.SANDBOX_URL + '/' + : UrllibHttpClient.BASE_URL + '/'; + + const fullUrl = baseUrl + escapeBrackets(url); + + const options: urllib.RequestOptions = { + auth: config.privateKey + ':', + method, + contentType: 'json', + timeout: config.timeout, + data: body, + dataType: 'json', + }; + + urllib.request(fullUrl, options, (err: Error | null, respBody: unknown, res: http.IncomingMessage) => { + if (err) { + callback(new NetworkError(err), null, null); + return; + } + + const resCode: number = res?.statusCode ?? 0; + const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; + + if (isSuccess) { + callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); + } else { + const openpayErr = new OpenpayError( + `HTTP ${resCode}`, + resCode, + respBody, + ); + callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); + } + }); + } +} From 946162d9d5609cea2b75f9282b8ba5f18d35278f Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:45:51 -0600 Subject: [PATCH 06/21] refactor: split resources into individual classes (SRP, ISP, OCP) - 13 resource files: merchant, charges, payouts, fees, plans, cards, customers (6 sub-resources), webhooks, tokens, checkouts, stores, pse, groups - Each resource is a class extending BaseResource - Nested resources composed as typed class instances - Open/Closed: new resources can be added without modifying existing code --- src/resources/cards.ts | 28 +++++ src/resources/charges.ts | 37 ++++++ src/resources/checkouts.ts | 33 ++++++ src/resources/customers.ts | 201 ++++++++++++++++++++++++++++++++ src/resources/fees.ts | 20 ++++ src/resources/groups.ts | 233 +++++++++++++++++++++++++++++++++++++ src/resources/merchant.ts | 16 +++ src/resources/payouts.ts | 24 ++++ src/resources/plans.ts | 70 +++++++++++ src/resources/pse.ts | 14 +++ src/resources/stores.ts | 18 +++ src/resources/tokens.ts | 21 ++++ src/resources/webhooks.ts | 34 ++++++ 13 files changed, 749 insertions(+) create mode 100644 src/resources/cards.ts create mode 100644 src/resources/charges.ts create mode 100644 src/resources/checkouts.ts create mode 100644 src/resources/customers.ts create mode 100644 src/resources/fees.ts create mode 100644 src/resources/groups.ts create mode 100644 src/resources/merchant.ts create mode 100644 src/resources/payouts.ts create mode 100644 src/resources/plans.ts create mode 100644 src/resources/pse.ts create mode 100644 src/resources/stores.ts create mode 100644 src/resources/tokens.ts create mode 100644 src/resources/webhooks.ts diff --git a/src/resources/cards.ts b/src/resources/cards.ts new file mode 100644 index 0000000..2b555bd --- /dev/null +++ b/src/resources/cards.ts @@ -0,0 +1,28 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class CardsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/cards`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + get(cardId: string, callback: Callback): void { + this.request('GET', this.url(cardId), undefined, callback); + } + + delete(cardId: string, callback: Callback): void { + this.request('DELETE', this.url(cardId), undefined, callback); + } +} diff --git a/src/resources/charges.ts b/src/resources/charges.ts new file mode 100644 index 0000000..b4e7615 --- /dev/null +++ b/src/resources/charges.ts @@ -0,0 +1,37 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class ChargesResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/charges`); + } + + /** Create a new charge. */ + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + /** List charges with optional filters. */ + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + /** Get a charge by transaction ID. */ + get(transactionId: string, callback: Callback): void { + this.request('GET', this.url(transactionId), undefined, callback); + } + + /** Capture a previously uncaptured charge. */ + capture(transactionId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${transactionId}/capture`), data, callback); + } + + /** Refund a charge. */ + refund(transactionId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${transactionId}/refund`), data, callback); + } +} diff --git a/src/resources/checkouts.ts b/src/resources/checkouts.ts new file mode 100644 index 0000000..161855a --- /dev/null +++ b/src/resources/checkouts.ts @@ -0,0 +1,33 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class CheckoutsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/checkouts`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + get(checkoutId: string, callback: Callback): void { + this.request('GET', this.url(checkoutId), undefined, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + update(checkoutId: string, status: string, data: unknown, callback: Callback): void { + this.request( + 'PUT', + this.url(`${checkoutId}?status=${status}`), + data, + callback, + ); + } +} diff --git a/src/resources/customers.ts b/src/resources/customers.ts new file mode 100644 index 0000000..c368f8f --- /dev/null +++ b/src/resources/customers.ts @@ -0,0 +1,201 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +// ── Customer Sub-Resources ───────────────────────────────────────── + +class CustomerCards extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/cards`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb!); + } + + get(customerId: string, cardId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } + + delete(customerId: string, cardId: string, callback: Callback): void { + this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } +} + +class CustomerCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/charges`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/charges`, query), undefined, resolvedCb!); + } + + get(customerId: string, transactionId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/charges/${transactionId}`), undefined, callback); + } + + capture(customerId: string, transactionId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/charges/${transactionId}/capture`), data, callback); + } + + refund(customerId: string, transactionId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/charges/${transactionId}/refund`), data, callback); + } +} + +class CustomerTransfers extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/transfers`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/transfers`, query), undefined, resolvedCb!); + } + + get(customerId: string, transactionId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/transfers/${transactionId}`), undefined, callback); + } +} + +class CustomerPayouts extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/payouts`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/payouts`, query), undefined, resolvedCb!); + } + + get(customerId: string, transactionId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/payouts/${transactionId}`), undefined, callback); + } +} + +class CustomerSubscriptions extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/subscriptions`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/subscriptions`, query), undefined, resolvedCb!); + } + + get(customerId: string, subscriptionId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } + + update(customerId: string, subscriptionId: string, data: unknown, callback: Callback): void { + this.request('PUT', this.url(`${customerId}/subscriptions/${subscriptionId}`), data, callback); + } + + delete(customerId: string, subscriptionId: string, callback: Callback): void { + this.request('DELETE', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } +} + +class CustomerBankAccounts extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/bankaccounts`), data, callback); + } + + get(customerId: string, bankAccountId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); + } + + delete(customerId: string, bankAccountId: string, callback: Callback): void { + this.request('DELETE', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/bankaccounts`, query), undefined, resolvedCb!); + } +} + +// ── Main Customers Resource ──────────────────────────────────────── + +export class CustomersResource extends BaseResource { + public readonly cards: CustomerCards; + public readonly charges: CustomerCharges; + public readonly transfers: CustomerTransfers; + public readonly payouts: CustomerPayouts; + public readonly subscriptions: CustomerSubscriptions; + public readonly bankaccounts: CustomerBankAccounts; + + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + + // Compose sub-resources (each shares the same config & http client) + this.cards = new CustomerCards(config, httpClient); + this.charges = new CustomerCharges(config, httpClient); + this.transfers = new CustomerTransfers(config, httpClient); + this.payouts = new CustomerPayouts(config, httpClient); + this.subscriptions = new CustomerSubscriptions(config, httpClient); + this.bankaccounts = new CustomerBankAccounts(config, httpClient); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + get(customerId: string, callback: Callback): void { + this.request('GET', this.url(customerId), undefined, callback); + } + + update(customerId: string, data: unknown, callback: Callback): void { + this.request('PUT', this.url(customerId), data, callback); + } + + delete(customerId: string, callback: Callback): void { + this.request('DELETE', this.url(customerId), undefined, callback); + } +} diff --git a/src/resources/fees.ts b/src/resources/fees.ts new file mode 100644 index 0000000..b1f0458 --- /dev/null +++ b/src/resources/fees.ts @@ -0,0 +1,20 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class FeesResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/fees`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } +} diff --git a/src/resources/groups.ts b/src/resources/groups.ts new file mode 100644 index 0000000..e1e99fc --- /dev/null +++ b/src/resources/groups.ts @@ -0,0 +1,233 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +// ── Group Sub-Resources ──────────────────────────────────────────── + +class GroupCustomerCards extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}/customers`); + } + + create(customerId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${customerId}/cards`), data, callback); + } + + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb!); + } + + get(customerId: string, cardId: string, callback: Callback): void { + this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } + + delete(customerId: string, cardId: string, callback: Callback): void { + this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } +} + +class GroupCustomerCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + + create(merchantId: string, customerId: string, data: unknown, callback: Callback): void { + this.request( + 'POST', + this.url(`${merchantId}/customers/${customerId}/charges`), + data, + callback, + ); + } + + capture( + merchantId: string, + customerId: string, + transactionId: string, + data: unknown, + callback: Callback, + ): void { + this.request( + 'POST', + this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/capture`), + data, + callback, + ); + } + + refund( + merchantId: string, + customerId: string, + transactionId: string, + data: unknown, + callback: Callback, + ): void { + this.request( + 'POST', + this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/refund`), + data, + callback, + ); + } +} + +class GroupCustomerSubscriptions extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + + create(merchantId: string, customerId: string, data: unknown, callback: Callback): void { + this.request( + 'POST', + this.url(`${merchantId}/customers/${customerId}/subscriptions`), + data, + callback, + ); + } + + list(merchantId: string, customerId: string, callback: Callback): void; + list(merchantId: string, customerId: string, data: QueryParams, callback: Callback): void; + list( + merchantId: string, + customerId: string, + dataOrCb: QueryParams | Callback, + cb?: Callback, + ): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request( + 'GET', + this.urlWithQuery(`${merchantId}/customers/${customerId}/subscriptions`, query), + undefined, + resolvedCb!, + ); + } + + get( + merchantId: string, + customerId: string, + subscriptionId: string, + callback: Callback, + ): void { + this.request( + 'GET', + this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), + undefined, + callback, + ); + } + + update( + merchantId: string, + customerId: string, + subscriptionId: string, + data: unknown, + callback: Callback, + ): void { + this.request( + 'PUT', + this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), + data, + callback, + ); + } + + delete( + merchantId: string, + customerId: string, + subscriptionId: string, + callback: Callback, + ): void { + this.request( + 'DELETE', + this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), + undefined, + callback, + ); + } +} + +// ── Group Customers ───────────────────────────────────────────────── + +class GroupCustomers extends BaseResource { + public readonly cards: GroupCustomerCards; + public readonly charges: GroupCustomerCharges; + public readonly subscriptions: GroupCustomerSubscriptions; + + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}/customers`); + + this.cards = new GroupCustomerCards(config, httpClient); + this.charges = new GroupCustomerCharges(config, httpClient); + this.subscriptions = new GroupCustomerSubscriptions(config, httpClient); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + get(customerId: string, callback: Callback): void { + this.request('GET', this.url(customerId), undefined, callback); + } + + update(customerId: string, data: unknown, callback: Callback): void { + this.request('PUT', this.url(customerId), data, callback); + } + + delete(customerId: string, callback: Callback): void { + this.request('DELETE', this.url(customerId), undefined, callback); + } +} + +// ── Group Charges ─────────────────────────────────────────────────── + +class GroupCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + + create(merchantId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${merchantId}/charges`), data, callback); + } + + capture(merchantId: string, transactionId: string, data: unknown, callback: Callback): void { + this.request( + 'POST', + this.url(`${merchantId}/charges/${transactionId}/capture`), + data, + callback, + ); + } + + refund(merchantId: string, transactionId: string, data: unknown, callback: Callback): void { + this.request( + 'POST', + this.url(`${merchantId}/charges/${transactionId}/refund`), + data, + callback, + ); + } +} + +// ── Main Groups Resource ──────────────────────────────────────────── + +export class GroupsResource extends BaseResource { + public readonly customers: GroupCustomers; + public readonly charges: GroupCharges; + + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `groups/${config.merchantId}`); + + this.customers = new GroupCustomers(config, httpClient); + this.charges = new GroupCharges(config, httpClient); + } +} diff --git a/src/resources/merchant.ts b/src/resources/merchant.ts new file mode 100644 index 0000000..8871c34 --- /dev/null +++ b/src/resources/merchant.ts @@ -0,0 +1,16 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; + +export class MerchantResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, config.merchantId); + } + + /** + * Get merchant information. + */ + get(callback: Callback): void { + this.request('GET', this.url(), undefined, callback); + } +} diff --git a/src/resources/payouts.ts b/src/resources/payouts.ts new file mode 100644 index 0000000..31e9e93 --- /dev/null +++ b/src/resources/payouts.ts @@ -0,0 +1,24 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class PayoutsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/payouts`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + get(transactionId: string, callback: Callback): void { + this.request('GET', this.url(transactionId), undefined, callback); + } +} diff --git a/src/resources/plans.ts b/src/resources/plans.ts new file mode 100644 index 0000000..cfc9641 --- /dev/null +++ b/src/resources/plans.ts @@ -0,0 +1,70 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class PlansResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/plans`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb!); + } + + get(planId: string, callback: Callback): void { + this.request('GET', this.url(planId), undefined, callback); + } + + update(planId: string, data: unknown, callback: Callback): void { + this.request('PUT', this.url(planId), data, callback); + } + + delete(planId: string, callback: Callback): void { + this.request('DELETE', this.url(planId), undefined, callback); + } + + /** List subscriptions under a plan. */ + listSubscriptions(callback: Callback): void; + listSubscriptions(planId: string, callback: Callback): void; + listSubscriptions(planId: string, data: QueryParams, callback: Callback): void; + listSubscriptions( + planIdOrCb: string | Callback, + dataOrCb?: QueryParams | Callback | undefined, + cb?: Callback, + ): void { + let planId: string; + let query = ''; + let resolvedCb: Callback | undefined; + + if (typeof planIdOrCb === 'function') { + // listSubscriptions(callback) + planId = ''; + resolvedCb = planIdOrCb; + } else if (typeof dataOrCb === 'function') { + // listSubscriptions(planId, callback) + planId = planIdOrCb; + resolvedCb = dataOrCb; + } else if (typeof cb === 'function') { + // listSubscriptions(planId, data, callback) + planId = planIdOrCb; + query = this.resolveListParams(dataOrCb as QueryParams, cb).query; + resolvedCb = cb; + } else { + // listSubscriptions(planId, data) + planId = planIdOrCb; + resolvedCb = undefined; + } + + const urlPath = planId + ? `${this.url(planId)}/subscriptions${query}` + : `${this.url()}${query}`; + this.request('GET', urlPath, undefined, resolvedCb!); + } +} diff --git a/src/resources/pse.ts b/src/resources/pse.ts new file mode 100644 index 0000000..5b6ca92 --- /dev/null +++ b/src/resources/pse.ts @@ -0,0 +1,14 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; + +export class PseResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/charges`); + } + + /** Create a PSE charge (Colombia). */ + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } +} diff --git a/src/resources/stores.ts b/src/resources/stores.ts new file mode 100644 index 0000000..598e53f --- /dev/null +++ b/src/resources/stores.ts @@ -0,0 +1,18 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; + +export class StoresResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + // Stores uses a different base URL (no merchant prefix, no /v1/) + super(config, httpClient, 'stores'); + } + + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + list(dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + // Stores uses the StoreHttpClient which has different BASE_URL logic + this.httpClient.request('GET', this.url() + query, undefined, this.config, resolvedCb!); + } +} diff --git a/src/resources/tokens.ts b/src/resources/tokens.ts new file mode 100644 index 0000000..791fcbb --- /dev/null +++ b/src/resources/tokens.ts @@ -0,0 +1,21 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; + +export class TokensResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/tokens`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + get(tokenId: string, callback: Callback): void { + this.request('GET', this.url(tokenId), undefined, callback); + } + + list(callback: Callback): void { + this.request('GET', this.url(), undefined, callback); + } +} diff --git a/src/resources/webhooks.ts b/src/resources/webhooks.ts new file mode 100644 index 0000000..c8eee48 --- /dev/null +++ b/src/resources/webhooks.ts @@ -0,0 +1,34 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; + +export class WebhooksResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient) { + super(config, httpClient, `${config.merchantId}/webhooks`); + } + + create(data: unknown, callback: Callback): void { + this.request('POST', this.url(), data, callback); + } + + verify(webhookId: string, verificationCode: string, callback: Callback): void { + this.request( + 'POST', + this.url(`${webhookId}/verify/${verificationCode}`), + '{}', + callback, + ); + } + + get(webhookId: string, callback: Callback): void { + this.request('GET', this.url(webhookId), undefined, callback); + } + + delete(webhookId: string, callback: Callback): void { + this.request('DELETE', this.url(webhookId), undefined, callback); + } + + list(callback: Callback): void { + this.request('GET', this.url(), undefined, callback); + } +} From fc2b02c60be97664603a1239c5d77fc76e9671f7 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:45:55 -0600 Subject: [PATCH 07/21] refactor: slim Openpay client class and barrel export - Openpay class now ~170 lines (was ~1500) - Resources instantiated with dependency injection (config + HttpClient) - rebuildResources() for dynamic config changes (setMerchantId, etc.) - index.ts barrel export with CommonJS export= for backwards compat --- src/index.ts | 2 + src/openpay.ts | 1566 ++++-------------------------------------------- 2 files changed, 121 insertions(+), 1447 deletions(-) create mode 100644 src/index.ts diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..e81a2c1 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,2 @@ +import Openpay = require('./openpay'); +export = Openpay; diff --git a/src/openpay.ts b/src/openpay.ts index 6413e88..82a2935 100644 --- a/src/openpay.ts +++ b/src/openpay.ts @@ -1,134 +1,128 @@ -import * as urllib from 'urllib'; -import * as _ from 'underscore'; -import { escapeBrackets } from './url-utils'; - -// ── Types ────────────────────────────────────────────────────────── - -type Callback = ( - error: any, - body: T | null, - response: urllib.HttpClientResponse -) => void; - -interface BaseData { - merchantId: string; - privateKey: string; - isSandbox: boolean; - timeout: number; - groupId?: string; -} - -interface RequestSpec { - apiUrl: string; - requestData: { - method: string; - json?: any; - data?: any; - }; - callback: Callback; -} - -// ── Main Class ──────────────────────────────────────────────────── - +import type { OpenpayConfig, CountryCode } from './types'; +import { UrllibHttpClient, StoreHttpClient } from './http-client'; +import { MerchantResource } from './resources/merchant'; +import { ChargesResource } from './resources/charges'; +import { PayoutsResource } from './resources/payouts'; +import { FeesResource } from './resources/fees'; +import { PlansResource } from './resources/plans'; +import { CardsResource } from './resources/cards'; +import { CustomersResource } from './resources/customers'; +import { WebhooksResource } from './resources/webhooks'; +import { TokensResource } from './resources/tokens'; +import { CheckoutsResource } from './resources/checkouts'; +import { StoresResource } from './resources/stores'; +import { PseResource } from './resources/pse'; +import { GroupsResource } from './resources/groups'; + +/** + * Openpay API client. + * + * Usage (callback style, backward-compatible): + * ```js + * const openpay = new Openpay('merchantId', 'sk_xxx', 'mx', false); + * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); + * ``` + */ class Openpay { + // ── Static Base URLs (per-country, mutable for backward compat) ── + static BASE_URL = 'https://api.openpay.mx'; static API_VERSION = '/v1/'; static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; static SANDBOX_API_VERSION = '/v1/'; - merchantId: string; - privateKey: string; - isSandbox: boolean; - timeout: number; + // ── Instance State ─────────────────────────────────────────────── + + private config: OpenpayConfig; + private apiHttpClient: UrllibHttpClient; + private storeHttpClient: StoreHttpClient; - // API resources – assigned in define() - groups!: Groups; - merchant!: Merchant; - charges!: Charges; - payouts!: Payouts; - fees!: Fees; - plans!: Plans; - cards!: Cards; - customers!: Customers; - webhooks!: Webhooks; - tokens!: Tokens; - checkouts!: Checkouts; - pse!: Pse; - stores!: Stores; + // ── Resources (public API surface) ─────────────────────────────── - // Methods - setMerchantId: (merchantId: string) => void; - setPrivateKey: (privateKey: string) => void; - setProductionReady: (isProductionReady: boolean) => void; - setTimeout: (timeout: number) => void; + public merchant: MerchantResource; + public charges: ChargesResource; + public payouts: PayoutsResource; + public fees: FeesResource; + public plans: PlansResource; + public cards: CardsResource; + public customers: CustomersResource; + public webhooks: WebhooksResource; + public tokens: TokensResource; + public checkouts: CheckoutsResource; + public stores: StoresResource; + public pse: PseResource; + public groups: GroupsResource; - _reDefine: () => void; + // ── Constructor ────────────────────────────────────────────────── constructor( merchantId: string, privateKey: string, - countryCode: string = 'mx', - isProductionReady?: boolean + countryCode: CountryCode = 'mx', + isProductionReady?: boolean, ) { - this.merchantId = merchantId; - this.privateKey = privateKey; - this.isSandbox = isProductionReady ? false : true; - this.timeout = 90000; - this.define({ - isSandbox: this.isSandbox, - privateKey: this.privateKey, - merchantId: this.merchantId, - timeout: this.timeout, - }); - this.setBaseUrl(countryCode); + const isSandbox = !isProductionReady; - this.setMerchantId = function (merchantId: string) { - this.merchantId = merchantId; - this._reDefine(); + this.config = { + merchantId, + privateKey, + isSandbox, + timeout: 90_000, }; - this.setPrivateKey = function (privateKey: string) { - this.privateKey = privateKey; - this._reDefine(); - }; + // Create HTTP clients (DIP: resources depend on these abstractions) + this.apiHttpClient = new UrllibHttpClient(); + this.storeHttpClient = new StoreHttpClient(); - this.setProductionReady = function (isProductionReady: boolean) { - this.isSandbox = !isProductionReady; - this._reDefine(); - }; + // Set base URLs per country + this.setBaseUrl(countryCode); - this.setTimeout = function (timeout: number) { - this.timeout = timeout; - this._reDefine(); - }; + // Instantiate resources & inject dependencies + this.merchant = new MerchantResource(this.config, this.apiHttpClient); + this.charges = new ChargesResource(this.config, this.apiHttpClient); + this.payouts = new PayoutsResource(this.config, this.apiHttpClient); + this.fees = new FeesResource(this.config, this.apiHttpClient); + this.plans = new PlansResource(this.config, this.apiHttpClient); + this.cards = new CardsResource(this.config, this.apiHttpClient); + this.customers = new CustomersResource(this.config, this.apiHttpClient); + this.webhooks = new WebhooksResource(this.config, this.apiHttpClient); + this.tokens = new TokensResource(this.config, this.apiHttpClient); + this.checkouts = new CheckoutsResource(this.config, this.apiHttpClient); + this.pse = new PseResource(this.config, this.apiHttpClient); + this.groups = new GroupsResource(this.config, this.apiHttpClient); - this._reDefine = function () { - this.define({ - isSandbox: this.isSandbox, - privateKey: this.privateKey, - merchantId: this.merchantId, - timeout: this.timeout, - }); - }; + // Stores uses its own HTTP client (different base URL format) + this.stores = new StoresResource(this.config, this.storeHttpClient); + } + + // ── Configuration Setters ──────────────────────────────────────── + + /** Change the merchant ID and rebuild resources. */ + setMerchantId(merchantId: string): void { + this.config = { ...this.config, merchantId }; + this.rebuildResources(); + } + + /** Change the private key and rebuild resources. */ + setPrivateKey(privateKey: string): void { + this.config = { ...this.config, privateKey }; + this.rebuildResources(); + } + + /** Toggle sandbox/production mode and rebuild resources. */ + setProductionReady(isProductionReady: boolean): void { + this.config = { ...this.config, isSandbox: !isProductionReady }; + this.rebuildResources(); } - define(baseData: BaseData): void { - this.groups = new Groups(baseData); - this.merchant = new Merchant(baseData); - this.charges = new Charges(baseData); - this.payouts = new Payouts(baseData); - this.fees = new Fees(baseData); - this.plans = new Plans(baseData); - this.cards = new Cards(baseData); - this.customers = new Customers(baseData); - this.webhooks = new Webhooks(baseData); - this.tokens = new Tokens(baseData); - this.checkouts = new Checkouts(baseData); - this.pse = new Pse(baseData); - this.stores = new Stores(baseData); + /** Change the HTTP request timeout and rebuild resources. */ + setTimeout(timeout: number): void { + this.config = { ...this.config, timeout }; + this.rebuildResources(); } - setBaseUrl(countryCode: string): void { + /** Per-country base URL configuration. */ + setBaseUrl(countryCode: CountryCode): void { console.log('setting base url from country'); switch (countryCode) { case 'pe': @@ -149,1348 +143,26 @@ class Openpay { console.error('Error country code, setting mx default.'); } } -} - -// ── Resource Classes ─────────────────────────────────────────────── - -class Merchant { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId; - } - - get(callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } -} - -class Charges { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/charges'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } - - get(transactionId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - capture(transactionId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - refund(transactionId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } -} - -class Payouts { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/payouts'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } - - get(transactionId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } -} - -class Fees { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/fees'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } -} - -class Customers { - private baseData: BaseData; - private baseUrl: string; - - // Sub-resources - charges: any; - transfers: any; - payouts: any; - subscriptions: any; - cards: any; - bankaccounts: any; - - constructor(baseData: BaseData) { - const self = this; - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/customers'; - - this.create = function (data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: self.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }; - - this.list = function (data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: self.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }; - - this.get = function (customerId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }; - - this.update = function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - }; - - this.delete = function (customerId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }; - - this.charges = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, transactionId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - capture: function ( - customerId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - refund: function ( - customerId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - }; - - this.transfers = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, transactionId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - }; - - this.payouts = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, transactionId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - }; - - this.subscriptions = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, subscriptionId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - update: function ( - customerId: string, - subscriptionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - }, - - delete: function (customerId: string, subscriptionId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - }; - - this.cards = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, cardId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - delete: function (customerId: string, cardId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - }; - - this.bankaccounts = { - baseUrl: baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - get: function (customerId: string, bankAccountId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - delete: function (customerId: string, bankAccountId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - }; - } - - // These are assigned in constructor via function expressions - create!: (data: any, callback: Callback) => void; - list!: (data: any, callback?: Callback) => void; - get!: (customerId: string, callback: Callback) => void; - update!: (customerId: string, data: any, callback: Callback) => void; - delete!: (customerId: string, callback: Callback) => void; -} - -class Cards { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/cards'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } - - get(cardId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - delete(cardId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - } -} - -class Plans { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/plans'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } - - get(planId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - update(planId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - } - - delete(planId: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - } - - listSubscriptions(callback: Callback): void; - listSubscriptions(planId: string, callback: Callback): void; - listSubscriptions(planId: string, data: any, callback: Callback): void; - listSubscriptions(planId: any, data?: any, callback?: Callback): void { - // Handle overloaded signatures like the original - let planIdResolved: string; - let dataResolved: any; - let cbResolved: Callback; - - if (_.isFunction(data)) { - // Called as listSubscriptions(planId, callback) - planIdResolved = planId; - dataResolved = undefined; - cbResolved = data; - } else if (_.isFunction(callback)) { - // Called as listSubscriptions(planId, data, callback) - planIdResolved = planId; - dataResolved = data; - cbResolved = callback!; - } else if (_.isFunction(planId)) { - // Called as listSubscriptions(callback) - planIdResolved = ''; - dataResolved = undefined; - cbResolved = planId; - } else { - planIdResolved = planId; - dataResolved = data; - cbResolved = callback as Callback; - } - - const query = - dataResolved && - _.isObject(dataResolved) && - !_.isArray(dataResolved) && - !_.isFunction(dataResolved) && - !_.isEmpty(dataResolved) - ? stringifyParams(dataResolved) - : ''; - - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planIdResolved + '/subscriptions' + query, - requestData: { method: 'GET' }, - callback: cbResolved, - }) - ); - } -} - -class Webhooks { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/webhooks'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - verify(webhook_id: string, verification_code: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id + '/verify' + '/' + verification_code, - requestData: { method: 'POST', json: '{}' }, - callback: callback, - }) - ); - } - - get(webhook_id: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - delete(webhook_id: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - } - - list(callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } -} - -class Tokens { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/tokens'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } - - get(token_id: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + token_id, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - list(callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } -} - -class Checkouts { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/checkouts'; - } - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); + // ── Helpers ────────────────────────────────────────────────────── + + /** Rebuild all resources after a config change. */ + private rebuildResources(): void { + // Re-assign resource properties (same pattern as original's _reDefine) + this.merchant = new MerchantResource(this.config, this.apiHttpClient); + this.charges = new ChargesResource(this.config, this.apiHttpClient); + this.payouts = new PayoutsResource(this.config, this.apiHttpClient); + this.fees = new FeesResource(this.config, this.apiHttpClient); + this.plans = new PlansResource(this.config, this.apiHttpClient); + this.cards = new CardsResource(this.config, this.apiHttpClient); + this.customers = new CustomersResource(this.config, this.apiHttpClient); + this.webhooks = new WebhooksResource(this.config, this.apiHttpClient); + this.tokens = new TokensResource(this.config, this.apiHttpClient); + this.checkouts = new CheckoutsResource(this.config, this.apiHttpClient); + this.pse = new PseResource(this.config, this.apiHttpClient); + this.groups = new GroupsResource(this.config, this.apiHttpClient); + this.stores = new StoresResource(this.config, this.storeHttpClient); } - - get(checkout_id: string, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + checkout_id, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } - - update(checkoutId: string, status: string, data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + checkoutId + '?status=' + status, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - } -} - -class Stores { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = 'stores'; - } - - list(callback: Callback): void; - list(data: any, callback: Callback): void; - list(data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendStoreRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - } -} - -class Pse { - private baseUrl: string; - private baseData: BaseData; - - constructor(baseData: BaseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/charges'; - } - - create(data: any, callback: Callback): void { - sendRequest( - _.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - } -} - -class Groups { - customers: any; - charges: any; - - constructor(baseData: BaseData) { - baseData.groupId = baseData.merchantId; - const self = this; - - this.customers = { - baseUrl: 'groups/' + baseData.merchantId + '/customers', - - create: function (data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) ? callback! : _.isFunction(data) ? data : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - update: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - }, - - delete: function (customerId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - - cards: { - baseUrl: 'groups/' + baseData.merchantId + '/customers/', - - create: function (customerId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function (customerId: string, data: any, callback?: Callback): void { - const query = - data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) - ? callback! - : _.isFunction(data) - ? data - : null; - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function (customerId: string, cardId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - delete: function (customerId: string, cardId: string, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - }, - - charges: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function ( - merchantId: string, - customerId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + merchantId + '/customers/' + customerId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - capture: function ( - merchantId: string, - customerId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/charges/' + - transactionId + - '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - refund: function ( - merchantId: string, - customerId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/charges/' + - transactionId + - '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - }, - - subscriptions: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function ( - merchantId: string, - customerId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - list: function ( - merchantId: string, - customerId: string, - data: any, - callback?: Callback - ): void { - const query = - data && - _.isObject(data) && - !_.isArray(data) && - !_.isFunction(data) && - !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb: Callback = _.isFunction(callback) - ? callback! - : _.isFunction(data) - ? data - : null; - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions' + - query, - requestData: { method: 'GET' }, - callback: cb, - }) - ); - }, - - get: function ( - merchantId: string, - customerId: string, - subscriptionId: string, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'GET' }, - callback: callback, - }) - ); - }, - - update: function ( - merchantId: string, - customerId: string, - subscriptionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'PUT', json: data }, - callback: callback, - }) - ); - }, - - delete: function ( - merchantId: string, - customerId: string, - subscriptionId: string, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: - this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'DELETE' }, - callback: callback, - }) - ); - }, - }, - }; - - this.charges = { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - - create: function (merchantId: string, data: any, callback: Callback): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - capture: function ( - merchantId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - - refund: function ( - merchantId: string, - transactionId: string, - data: any, - callback: Callback - ): void { - sendRequest( - _.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - }) - ); - }, - }; - } -} - -// ── Utilities ────────────────────────────────────────────────────── - -function stringifyParams(params: any): string { - return ( - '?' + - _.map(_.pairs(params), function (arr: string[]) { - return arr.join('='); - }).join('&') - ); -} - -function sendRequest(data: any): void { - const baseUrl = data.isSandbox - ? Openpay.SANDBOX_URL + Openpay.SANDBOX_API_VERSION - : Openpay.BASE_URL + Openpay.API_VERSION; - const url = baseUrl + escapeBrackets(data.apiUrl); - const options: urllib.RequestOptions = { - auth: data.privateKey + ':', - method: (data.requestData.method || 'GET') as urllib.HttpMethod, - contentType: 'json', - timeout: data.timeout, - data: data.requestData.json, - dataType: 'json', - }; - - urllib.request(url, options, function (err: any, body: any, res: any) { - const resCode = res ? res.statusCode : null; - const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; - data.callback(err ? err : error, err || error ? null : body, res); - }); -} - -function sendStoreRequest(data: any): void { - const baseUrl = data.isSandbox - ? Openpay.SANDBOX_URL + '/' - : Openpay.BASE_URL + '/'; - const url = baseUrl + escapeBrackets(data.apiUrl); - const options: urllib.RequestOptions = { - auth: data.privateKey + ':', - method: (data.requestData.method || 'GET') as urllib.HttpMethod, - contentType: 'json', - timeout: data.timeout, - data: data.requestData.json, - dataType: 'json', - }; - - urllib.request(url, options, function (err: any, body: any, res: any) { - const resCode = res ? res.statusCode : null; - const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; - data.callback(err ? err : error, err || error ? null : body, res); - }); } export = Openpay; From 88a97a727302d79bb853eaeb4b3552ee33b78b56 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:46:00 -0600 Subject: [PATCH 08/21] build: compiled output with strict mode type declarations - All .js, .d.ts, .d.ts.map, .js.map files - Both lib/openpay.js and lib/index.js export Openpay correctly - Fully backwards compatible: require('../lib/openpay') works as before --- lib/base-resource.d.ts | 34 + lib/base-resource.d.ts.map | 1 + lib/base-resource.js | 53 ++ lib/base-resource.js.map | 1 + lib/errors.d.ts | 19 + lib/errors.d.ts.map | 1 + lib/errors.js | 57 ++ lib/errors.js.map | 1 + lib/http-client.d.ts | 14 + lib/http-client.d.ts.map | 1 + lib/http-client.js | 109 +++ lib/http-client.js.map | 1 + lib/index.d.ts | 3 + lib/index.d.ts.map | 1 + lib/index.js | 4 + lib/index.js.map | 1 + lib/openpay.d.ts | 206 ++---- lib/openpay.d.ts.map | 2 +- lib/openpay.js | 1095 +++--------------------------- lib/openpay.js.map | 2 +- lib/resources/cards.d.ts | 12 + lib/resources/cards.d.ts.map | 1 + lib/resources/cards.js | 24 + lib/resources/cards.js.map | 1 + lib/resources/charges.d.ts | 18 + lib/resources/charges.d.ts.map | 1 + lib/resources/charges.js | 31 + lib/resources/charges.js.map | 1 + lib/resources/checkouts.d.ts | 12 + lib/resources/checkouts.d.ts.map | 1 + lib/resources/checkouts.js | 24 + lib/resources/checkouts.js.map | 1 + lib/resources/customers.d.ts | 68 ++ lib/resources/customers.d.ts.map | 1 + lib/resources/customers.js | 150 ++++ lib/resources/customers.js.map | 1 + lib/resources/fees.d.ts | 10 + lib/resources/fees.d.ts.map | 1 + lib/resources/fees.js | 18 + lib/resources/fees.js.map | 1 + lib/resources/groups.d.ts | 51 ++ lib/resources/groups.d.ts.map | 1 + lib/resources/groups.js | 113 +++ lib/resources/groups.js.map | 1 + lib/resources/merchant.d.ts | 11 + lib/resources/merchant.d.ts.map | 1 + lib/resources/merchant.js | 17 + lib/resources/merchant.js.map | 1 + lib/resources/payouts.d.ts | 11 + lib/resources/payouts.d.ts.map | 1 + lib/resources/payouts.js | 21 + lib/resources/payouts.js.map | 1 + lib/resources/plans.d.ts | 17 + lib/resources/plans.d.ts.map | 1 + lib/resources/plans.js | 57 ++ lib/resources/plans.js.map | 1 + lib/resources/pse.d.ts | 9 + lib/resources/pse.d.ts.map | 1 + lib/resources/pse.js | 15 + lib/resources/pse.js.map | 1 + lib/resources/stores.d.ts | 9 + lib/resources/stores.d.ts.map | 1 + lib/resources/stores.js | 17 + lib/resources/stores.js.map | 1 + lib/resources/tokens.d.ts | 10 + lib/resources/tokens.d.ts.map | 1 + lib/resources/tokens.js | 20 + lib/resources/tokens.js.map | 1 + lib/resources/webhooks.d.ts | 12 + lib/resources/webhooks.d.ts.map | 1 + lib/resources/webhooks.js | 26 + lib/resources/webhooks.js.map | 1 + lib/stringify-params.d.ts | 12 + lib/stringify-params.d.ts.map | 1 + lib/stringify-params.js | 30 + lib/stringify-params.js.map | 1 + lib/types.d.ts | 170 +++++ lib/types.d.ts.map | 1 + lib/types.js | 4 + lib/types.js.map | 1 + lib/url-utils.d.ts | 4 + lib/url-utils.d.ts.map | 2 +- lib/url-utils.js | 11 +- lib/url-utils.js.map | 2 +- 84 files changed, 1510 insertions(+), 1144 deletions(-) create mode 100644 lib/base-resource.d.ts create mode 100644 lib/base-resource.d.ts.map create mode 100644 lib/base-resource.js create mode 100644 lib/base-resource.js.map create mode 100644 lib/errors.d.ts create mode 100644 lib/errors.d.ts.map create mode 100644 lib/errors.js create mode 100644 lib/errors.js.map create mode 100644 lib/http-client.d.ts create mode 100644 lib/http-client.d.ts.map create mode 100644 lib/http-client.js create mode 100644 lib/http-client.js.map create mode 100644 lib/index.d.ts create mode 100644 lib/index.d.ts.map create mode 100644 lib/index.js create mode 100644 lib/index.js.map create mode 100644 lib/resources/cards.d.ts create mode 100644 lib/resources/cards.d.ts.map create mode 100644 lib/resources/cards.js create mode 100644 lib/resources/cards.js.map create mode 100644 lib/resources/charges.d.ts create mode 100644 lib/resources/charges.d.ts.map create mode 100644 lib/resources/charges.js create mode 100644 lib/resources/charges.js.map create mode 100644 lib/resources/checkouts.d.ts create mode 100644 lib/resources/checkouts.d.ts.map create mode 100644 lib/resources/checkouts.js create mode 100644 lib/resources/checkouts.js.map create mode 100644 lib/resources/customers.d.ts create mode 100644 lib/resources/customers.d.ts.map create mode 100644 lib/resources/customers.js create mode 100644 lib/resources/customers.js.map create mode 100644 lib/resources/fees.d.ts create mode 100644 lib/resources/fees.d.ts.map create mode 100644 lib/resources/fees.js create mode 100644 lib/resources/fees.js.map create mode 100644 lib/resources/groups.d.ts create mode 100644 lib/resources/groups.d.ts.map create mode 100644 lib/resources/groups.js create mode 100644 lib/resources/groups.js.map create mode 100644 lib/resources/merchant.d.ts create mode 100644 lib/resources/merchant.d.ts.map create mode 100644 lib/resources/merchant.js create mode 100644 lib/resources/merchant.js.map create mode 100644 lib/resources/payouts.d.ts create mode 100644 lib/resources/payouts.d.ts.map create mode 100644 lib/resources/payouts.js create mode 100644 lib/resources/payouts.js.map create mode 100644 lib/resources/plans.d.ts create mode 100644 lib/resources/plans.d.ts.map create mode 100644 lib/resources/plans.js create mode 100644 lib/resources/plans.js.map create mode 100644 lib/resources/pse.d.ts create mode 100644 lib/resources/pse.d.ts.map create mode 100644 lib/resources/pse.js create mode 100644 lib/resources/pse.js.map create mode 100644 lib/resources/stores.d.ts create mode 100644 lib/resources/stores.d.ts.map create mode 100644 lib/resources/stores.js create mode 100644 lib/resources/stores.js.map create mode 100644 lib/resources/tokens.d.ts create mode 100644 lib/resources/tokens.d.ts.map create mode 100644 lib/resources/tokens.js create mode 100644 lib/resources/tokens.js.map create mode 100644 lib/resources/webhooks.d.ts create mode 100644 lib/resources/webhooks.d.ts.map create mode 100644 lib/resources/webhooks.js create mode 100644 lib/resources/webhooks.js.map create mode 100644 lib/stringify-params.d.ts create mode 100644 lib/stringify-params.d.ts.map create mode 100644 lib/stringify-params.js create mode 100644 lib/stringify-params.js.map create mode 100644 lib/types.d.ts create mode 100644 lib/types.d.ts.map create mode 100644 lib/types.js create mode 100644 lib/types.js.map diff --git a/lib/base-resource.d.ts b/lib/base-resource.d.ts new file mode 100644 index 0000000..b2cd486 --- /dev/null +++ b/lib/base-resource.d.ts @@ -0,0 +1,34 @@ +import type { Callback, HttpMethod, OpenpayConfig, QueryParams } from './types'; +import type { HttpClient } from './http-client'; +/** + * Abstract base for every Openpay API resource. + * + * Provides: + * - `request()` helper for HTTP calls + * - `list()` overload helper (data-or-callback resolution) + * - Promise + callback support methods + */ +export declare abstract class BaseResource { + protected readonly config: OpenpayConfig; + protected readonly httpClient: HttpClient; + protected readonly baseUrl: string; + constructor(config: OpenpayConfig, httpClient: HttpClient, baseUrl: string); + /** Issue an HTTP request to the API. */ + protected request(method: HttpMethod, path: string, body: unknown | undefined, callback: Callback): void; + /** + * Resolves the common `list(data, callback)` / `list(callback)` overload. + * + * Returns: + * - `query` — URL query string (with `?` prefix, or `''`) + * - `cb` — the resolved callback + */ + protected resolveListParams(dataOrCb: QueryParams | Callback | undefined, cb?: Callback): { + query: string; + cb: Callback | undefined; + }; + /** Build a sub-path under this resource's base URL. */ + protected url(segment?: string): string; + /** Build a URL with a query string appended. */ + protected urlWithQuery(segment: string, query: string): string; +} +//# sourceMappingURL=base-resource.d.ts.map \ No newline at end of file diff --git a/lib/base-resource.d.ts.map b/lib/base-resource.d.ts.map new file mode 100644 index 0000000..4451ca5 --- /dev/null +++ b/lib/base-resource.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../src/base-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;GAOG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAIzE;IAED,wCAAwC;IACxC,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAEN;IAED;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CACzB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,EAC5C,EAAE,CAAC,EAAE,QAAQ,GACZ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,CAS7C;IAED,uDAAuD;IACvD,SAAS,CAAC,GAAG,CAAC,OAAO,SAAK,GAAG,MAAM,CAElC;IAED,gDAAgD;IAChD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;CACF"} \ No newline at end of file diff --git a/lib/base-resource.js b/lib/base-resource.js new file mode 100644 index 0000000..7927cf3 --- /dev/null +++ b/lib/base-resource.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaseResource = void 0; +const stringify_params_1 = require("./stringify-params"); +/** + * Abstract base for every Openpay API resource. + * + * Provides: + * - `request()` helper for HTTP calls + * - `list()` overload helper (data-or-callback resolution) + * - Promise + callback support methods + */ +class BaseResource { + config; + httpClient; + baseUrl; + constructor(config, httpClient, baseUrl) { + this.config = config; + this.httpClient = httpClient; + this.baseUrl = baseUrl; + } + /** Issue an HTTP request to the API. */ + request(method, path, body, callback) { + this.httpClient.request(method, path, body, this.config, callback); + } + /** + * Resolves the common `list(data, callback)` / `list(callback)` overload. + * + * Returns: + * - `query` — URL query string (with `?` prefix, or `''`) + * - `cb` — the resolved callback + */ + resolveListParams(dataOrCb, cb) { + if (typeof dataOrCb === 'function') { + return { query: '', cb: dataOrCb }; + } + if (typeof cb === 'function') { + const q = (0, stringify_params_1.isPlainObjectWithKeys)(dataOrCb) ? (0, stringify_params_1.stringifyParams)(dataOrCb) : ''; + return { query: q, cb }; + } + return { query: '', cb: undefined }; + } + /** Build a sub-path under this resource's base URL. */ + url(segment = '') { + return segment ? `${this.baseUrl}/${segment}` : this.baseUrl; + } + /** Build a URL with a query string appended. */ + urlWithQuery(segment, query) { + return query ? `${this.baseUrl}/${segment}${query}` : `${this.baseUrl}/${segment}`; + } +} +exports.BaseResource = BaseResource; +//# sourceMappingURL=base-resource.js.map \ No newline at end of file diff --git a/lib/base-resource.js.map b/lib/base-resource.js.map new file mode 100644 index 0000000..6794f6e --- /dev/null +++ b/lib/base-resource.js.map @@ -0,0 +1 @@ +{"version":3,"file":"base-resource.js","sourceRoot":"","sources":["../src/base-resource.ts"],"names":[],"mappings":";;;AAEA,yDAA4E;AAE5E;;;;;;;GAOG;AACH;IACqB,MAAM,CAAgB;IACtB,UAAU,CAAa;IACvB,OAAO,CAAS;IAEnC,YAAY,MAAqB,EAAE,UAAsB,EAAE,OAAe;QACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,wCAAwC;IAC9B,OAAO,CACf,MAAkB,EAClB,IAAY,EACZ,IAAyB,EACzB,QAAkB;QAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACO,iBAAiB,CACzB,QAA4C,EAC5C,EAAa;QAEb,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,QAAoB,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,IAAA,wCAAqB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,kCAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,uDAAuD;IAC7C,GAAG,CAAC,OAAO,GAAG,EAAE;QACxB,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/D,CAAC;IAED,gDAAgD;IACtC,YAAY,CAAC,OAAe,EAAE,KAAa;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IACrF,CAAC;CACF"} \ No newline at end of file diff --git a/lib/errors.d.ts b/lib/errors.d.ts new file mode 100644 index 0000000..da779c8 --- /dev/null +++ b/lib/errors.d.ts @@ -0,0 +1,19 @@ +export declare class OpenpayError extends Error { + readonly statusCode: number; + readonly body: unknown; + readonly category?: string | undefined; + readonly description?: string | undefined; + readonly requestId?: string | undefined; + constructor(message: string, statusCode: number, body: unknown, cause?: Error); + /** Whether this is a client error (4xx). */ + get isClientError(): boolean; + /** Whether this is a server error (5xx). */ + get isServerError(): boolean; +} +export declare class NetworkError extends OpenpayError { + constructor(cause: Error); +} +export declare class TimeoutError extends OpenpayError { + constructor(timeoutMs: number); +} +//# sourceMappingURL=errors.d.ts.map \ No newline at end of file diff --git a/lib/errors.d.ts.map b/lib/errors.d.ts.map new file mode 100644 index 0000000..a639949 --- /dev/null +++ b/lib/errors.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/C,YACE,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,KAAK,CAAC,EAAE,KAAK,EAmBd;IAED,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAE3B;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,KAAK,EAAE,KAAK,EAGvB;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,SAAS,EAAE,MAAM,EAG5B;CACF"} \ No newline at end of file diff --git a/lib/errors.js b/lib/errors.js new file mode 100644 index 0000000..6d86b38 --- /dev/null +++ b/lib/errors.js @@ -0,0 +1,57 @@ +"use strict"; +// ── Custom Error Classes ─────────────────────────────────────────── +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TimeoutError = exports.NetworkError = exports.OpenpayError = void 0; +class OpenpayError extends Error { + statusCode; + body; + category; + description; + requestId; + constructor(message, statusCode, body, cause) { + super(message, { cause }); + this.name = 'OpenpayError'; + this.statusCode = statusCode; + // Extract details from the Openpay error body if possible + if (body !== null && typeof body === 'object') { + const b = body; + this.body = body; + const cat = b['category']; + const desc = b['description']; + const reqId = b['request_id']; + if (typeof cat === 'string') + this.category = cat; + if (typeof desc === 'string') + this.description = desc; + if (typeof reqId === 'string') + this.requestId = reqId; + } + else { + this.body = body; + } + } + /** Whether this is a client error (4xx). */ + get isClientError() { + return this.statusCode >= 400 && this.statusCode < 500; + } + /** Whether this is a server error (5xx). */ + get isServerError() { + return this.statusCode >= 500; + } +} +exports.OpenpayError = OpenpayError; +class NetworkError extends OpenpayError { + constructor(cause) { + super(`Network error: ${cause.message}`, 0, null, cause); + this.name = 'NetworkError'; + } +} +exports.NetworkError = NetworkError; +class TimeoutError extends OpenpayError { + constructor(timeoutMs) { + super(`Request timed out after ${timeoutMs}ms`, 408, null); + this.name = 'TimeoutError'; + } +} +exports.TimeoutError = TimeoutError; +//# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/lib/errors.js.map b/lib/errors.js.map new file mode 100644 index 0000000..593732b --- /dev/null +++ b/lib/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;AAEtE,kBAA0B,SAAQ,KAAK;IACrB,UAAU,CAAS;IACnB,IAAI,CAAU;IACd,QAAQ,CAAsB;IAC9B,WAAW,CAAsB;IACjC,SAAS,CAAsB;IAE/C,YACE,OAAe,EACf,UAAkB,EAClB,IAAa,EACb,KAAa;QAEb,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,0DAA0D;QAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,IAA+B,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,4CAA4C;IAC5C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAChC,CAAC;CACF;;AAED,kBAA0B,SAAQ,YAAY;IAC5C,YAAY,KAAY;QACtB,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;;AAED,kBAA0B,SAAQ,YAAY;IAC5C,YAAY,SAAiB;QAC3B,KAAK,CAAC,2BAA2B,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"} \ No newline at end of file diff --git a/lib/http-client.d.ts b/lib/http-client.d.ts new file mode 100644 index 0000000..2397cb0 --- /dev/null +++ b/lib/http-client.d.ts @@ -0,0 +1,14 @@ +import type { HttpMethod, OpenpayConfig, Callback } from './types'; +export interface HttpClient { + request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; +} +export declare class UrllibHttpClient implements HttpClient { + request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; + static BASE_URL: string; + static API_VERSION: string; + static SANDBOX_URL: string; +} +export declare class StoreHttpClient implements HttpClient { + request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; +} +//# sourceMappingURL=http-client.d.ts.map \ No newline at end of file diff --git a/lib/http-client.d.ts.map b/lib/http-client.d.ts.map new file mode 100644 index 0000000..b8900fe --- /dev/null +++ b/lib/http-client.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnE,MAAM,WAAW,UAAU;IACzB,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAAC;CACT;AAID,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAoCN;IAED,MAAM,CAAC,QAAQ,SAA4B;IAC3C,MAAM,CAAC,WAAW,SAAU;IAC5B,MAAM,CAAC,WAAW,SAAoC;CACvD;AAID,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAoCN;CACF"} \ No newline at end of file diff --git a/lib/http-client.js b/lib/http-client.js new file mode 100644 index 0000000..3d78180 --- /dev/null +++ b/lib/http-client.js @@ -0,0 +1,109 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StoreHttpClient = exports.UrllibHttpClient = void 0; +const urllib = __importStar(require("urllib")); +const errors_1 = require("./errors"); +const url_utils_1 = require("./url-utils"); +// ── Urllib-based Implementation ──────────────────────────────────── +class UrllibHttpClient { + request(method, url, body, config, callback) { + const baseUrl = config.isSandbox + ? UrllibHttpClient.SANDBOX_URL + UrllibHttpClient.API_VERSION + : UrllibHttpClient.BASE_URL + UrllibHttpClient.API_VERSION; + const fullUrl = baseUrl + (0, url_utils_1.escapeBrackets)(url); + const options = { + auth: config.privateKey + ':', + method, + contentType: 'json', + timeout: config.timeout, + data: body, + dataType: 'json', + }; + urllib.request(fullUrl, options, (err, respBody, res) => { + if (err) { + callback(new errors_1.NetworkError(err), null, null); + return; + } + const resCode = res?.statusCode ?? 0; + const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; + if (isSuccess) { + callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); + } + else { + const openpayErr = new errors_1.OpenpayError(`HTTP ${resCode}`, resCode, respBody); + callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); + } + }); + } + static BASE_URL = 'https://api.openpay.mx'; + static API_VERSION = '/v1/'; + static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; +} +exports.UrllibHttpClient = UrllibHttpClient; +// ── Store HTTP Client (uses different base URL format) ───────────── +class StoreHttpClient { + request(method, url, body, config, callback) { + const baseUrl = config.isSandbox + ? UrllibHttpClient.SANDBOX_URL + '/' + : UrllibHttpClient.BASE_URL + '/'; + const fullUrl = baseUrl + (0, url_utils_1.escapeBrackets)(url); + const options = { + auth: config.privateKey + ':', + method, + contentType: 'json', + timeout: config.timeout, + data: body, + dataType: 'json', + }; + urllib.request(fullUrl, options, (err, respBody, res) => { + if (err) { + callback(new errors_1.NetworkError(err), null, null); + return; + } + const resCode = res?.statusCode ?? 0; + const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; + if (isSuccess) { + callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); + } + else { + const openpayErr = new errors_1.OpenpayError(`HTTP ${resCode}`, resCode, respBody); + callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); + } + }); + } +} +exports.StoreHttpClient = StoreHttpClient; +//# sourceMappingURL=http-client.js.map \ No newline at end of file diff --git a/lib/http-client.js.map b/lib/http-client.js.map new file mode 100644 index 0000000..baab88e --- /dev/null +++ b/lib/http-client.js.map @@ -0,0 +1 @@ +{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.d.ts b/lib/index.d.ts new file mode 100644 index 0000000..2e44f1c --- /dev/null +++ b/lib/index.d.ts @@ -0,0 +1,3 @@ +import Openpay = require('./openpay'); +export = Openpay; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/index.d.ts.map b/lib/index.d.ts.map new file mode 100644 index 0000000..603dc91 --- /dev/null +++ b/lib/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,GAAG,QAAQ,WAAW,CAAC,CAAC;SAC7B,OAAO"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..35e4a99 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,4 @@ +"use strict"; +const Openpay = require("./openpay"); +module.exports = Openpay; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map new file mode 100644 index 0000000..0f43d1d --- /dev/null +++ b/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,MAAO,OAAO,wBAAwB;AACtC,iBAAS,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/openpay.d.ts b/lib/openpay.d.ts index df7602c..02f9e86 100644 --- a/lib/openpay.d.ts +++ b/lib/openpay.d.ts @@ -1,162 +1,60 @@ -import * as urllib from 'urllib'; -type Callback = (error: any, body: T | null, response: urllib.HttpClientResponse) => void; -interface BaseData { - merchantId: string; - privateKey: string; - isSandbox: boolean; - timeout: number; - groupId?: string; -} +import type { CountryCode } from './types'; +import { MerchantResource } from './resources/merchant'; +import { ChargesResource } from './resources/charges'; +import { PayoutsResource } from './resources/payouts'; +import { FeesResource } from './resources/fees'; +import { PlansResource } from './resources/plans'; +import { CardsResource } from './resources/cards'; +import { CustomersResource } from './resources/customers'; +import { WebhooksResource } from './resources/webhooks'; +import { TokensResource } from './resources/tokens'; +import { CheckoutsResource } from './resources/checkouts'; +import { StoresResource } from './resources/stores'; +import { PseResource } from './resources/pse'; +import { GroupsResource } from './resources/groups'; +/** + * Openpay API client. + * + * Usage (callback style, backward-compatible): + * ```js + * const openpay = new Openpay('merchantId', 'sk_xxx', 'mx', false); + * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); + * ``` + */ declare class Openpay { static BASE_URL: string; static API_VERSION: string; static SANDBOX_URL: string; static SANDBOX_API_VERSION: string; - merchantId: string; - privateKey: string; - isSandbox: boolean; - timeout: number; - groups: Groups; - merchant: Merchant; - charges: Charges; - payouts: Payouts; - fees: Fees; - plans: Plans; - cards: Cards; - customers: Customers; - webhooks: Webhooks; - tokens: Tokens; - checkouts: Checkouts; - pse: Pse; - stores: Stores; - setMerchantId: (merchantId: string) => void; - setPrivateKey: (privateKey: string) => void; - setProductionReady: (isProductionReady: boolean) => void; - setTimeout: (timeout: number) => void; - _reDefine: () => void; - constructor(merchantId: string, privateKey: string, countryCode?: string, isProductionReady?: boolean); - define(baseData: BaseData): void; - setBaseUrl(countryCode: string): void; -} -declare class Merchant { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - get(callback: Callback): void; -} -declare class Charges { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; - get(transactionId: string, callback: Callback): void; - capture(transactionId: string, data: any, callback: Callback): void; - refund(transactionId: string, data: any, callback: Callback): void; -} -declare class Payouts { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; - get(transactionId: string, callback: Callback): void; -} -declare class Fees { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; -} -declare class Customers { - private baseData; - private baseUrl; - charges: any; - transfers: any; - payouts: any; - subscriptions: any; - cards: any; - bankaccounts: any; - constructor(baseData: BaseData); - create: (data: any, callback: Callback) => void; - list: (data: any, callback?: Callback) => void; - get: (customerId: string, callback: Callback) => void; - update: (customerId: string, data: any, callback: Callback) => void; - delete: (customerId: string, callback: Callback) => void; -} -declare class Cards { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; - get(cardId: string, callback: Callback): void; - delete(cardId: string, callback: Callback): void; -} -declare class Plans { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; - get(planId: string, callback: Callback): void; - update(planId: string, data: any, callback: Callback): void; - delete(planId: string, callback: Callback): void; - listSubscriptions(callback: Callback): void; - listSubscriptions(planId: string, callback: Callback): void; - listSubscriptions(planId: string, data: any, callback: Callback): void; -} -declare class Webhooks { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - verify(webhook_id: string, verification_code: string, callback: Callback): void; - get(webhook_id: string, callback: Callback): void; - delete(webhook_id: string, callback: Callback): void; - list(callback: Callback): void; -} -declare class Tokens { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - get(token_id: string, callback: Callback): void; - list(callback: Callback): void; -} -declare class Checkouts { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; - get(checkout_id: string, callback: Callback): void; - list(callback: Callback): void; - list(data: any, callback: Callback): void; - update(checkoutId: string, status: string, data: any, callback: Callback): void; -} -declare class Stores { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - list(callback: Callback): void; - list(data: any, callback: Callback): void; -} -declare class Pse { - private baseUrl; - private baseData; - constructor(baseData: BaseData); - create(data: any, callback: Callback): void; -} -declare class Groups { - customers: any; - charges: any; - constructor(baseData: BaseData); + private config; + private apiHttpClient; + private storeHttpClient; + merchant: MerchantResource; + charges: ChargesResource; + payouts: PayoutsResource; + fees: FeesResource; + plans: PlansResource; + cards: CardsResource; + customers: CustomersResource; + webhooks: WebhooksResource; + tokens: TokensResource; + checkouts: CheckoutsResource; + stores: StoresResource; + pse: PseResource; + groups: GroupsResource; + constructor(merchantId: string, privateKey: string, countryCode?: CountryCode, isProductionReady?: boolean); + /** Change the merchant ID and rebuild resources. */ + setMerchantId(merchantId: string): void; + /** Change the private key and rebuild resources. */ + setPrivateKey(privateKey: string): void; + /** Toggle sandbox/production mode and rebuild resources. */ + setProductionReady(isProductionReady: boolean): void; + /** Change the HTTP request timeout and rebuild resources. */ + setTimeout(timeout: number): void; + /** Per-country base URL configuration. */ + setBaseUrl(countryCode: CountryCode): void; + /** Rebuild all resources after a config change. */ + private rebuildResources; } export = Openpay; //# sourceMappingURL=openpay.d.ts.map \ No newline at end of file diff --git a/lib/openpay.d.ts.map b/lib/openpay.d.ts.map index 9ecdbd4..fffcd8e 100644 --- a/lib/openpay.d.ts.map +++ b/lib/openpay.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"openpay.d.ts","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"openpay.d.ts","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;GAQG;AACH,cAAM,OAAO;IAGX,MAAM,CAAC,QAAQ,SAA4B;IAC3C,MAAM,CAAC,WAAW,SAAU;IAC5B,MAAM,CAAC,WAAW,SAAoC;IACtD,MAAM,CAAC,mBAAmB,SAAU;IAIpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,eAAe,CAAkB;IAIlC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IAI9B,YACE,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,WAAkB,EAC/B,iBAAiB,CAAC,EAAE,OAAO,EAkC5B;IAID,oDAAoD;IACpD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,oDAAoD;IACpD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,4DAA4D;IAC5D,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAGnD;IAED,6DAA6D;IAC7D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhC;IAED,0CAA0C;IAC1C,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAoBzC;IAID,mDAAmD;IACnD,OAAO,CAAC,gBAAgB;CAgBzB;SAEQ,OAAO"} \ No newline at end of file diff --git a/lib/openpay.js b/lib/openpay.js index 3d94aad..d6ced11 100644 --- a/lib/openpay.js +++ b/lib/openpay.js @@ -1,94 +1,103 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -const urllib = __importStar(require("urllib")); -const _ = __importStar(require("underscore")); -const url_utils_1 = require("./url-utils"); -// ── Main Class ──────────────────────────────────────────────────── +const http_client_1 = require("./http-client"); +const merchant_1 = require("./resources/merchant"); +const charges_1 = require("./resources/charges"); +const payouts_1 = require("./resources/payouts"); +const fees_1 = require("./resources/fees"); +const plans_1 = require("./resources/plans"); +const cards_1 = require("./resources/cards"); +const customers_1 = require("./resources/customers"); +const webhooks_1 = require("./resources/webhooks"); +const tokens_1 = require("./resources/tokens"); +const checkouts_1 = require("./resources/checkouts"); +const stores_1 = require("./resources/stores"); +const pse_1 = require("./resources/pse"); +const groups_1 = require("./resources/groups"); +/** + * Openpay API client. + * + * Usage (callback style, backward-compatible): + * ```js + * const openpay = new Openpay('merchantId', 'sk_xxx', 'mx', false); + * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); + * ``` + */ class Openpay { + // ── Static Base URLs (per-country, mutable for backward compat) ── + static BASE_URL = 'https://api.openpay.mx'; + static API_VERSION = '/v1/'; + static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; + static SANDBOX_API_VERSION = '/v1/'; + // ── Instance State ─────────────────────────────────────────────── + config; + apiHttpClient; + storeHttpClient; + // ── Resources (public API surface) ─────────────────────────────── + merchant; + charges; + payouts; + fees; + plans; + cards; + customers; + webhooks; + tokens; + checkouts; + stores; + pse; + groups; + // ── Constructor ────────────────────────────────────────────────── constructor(merchantId, privateKey, countryCode = 'mx', isProductionReady) { - this.merchantId = merchantId; - this.privateKey = privateKey; - this.isSandbox = isProductionReady ? false : true; - this.timeout = 90000; - this.define({ - isSandbox: this.isSandbox, - privateKey: this.privateKey, - merchantId: this.merchantId, - timeout: this.timeout, - }); + const isSandbox = !isProductionReady; + this.config = { + merchantId, + privateKey, + isSandbox, + timeout: 90_000, + }; + // Create HTTP clients (DIP: resources depend on these abstractions) + this.apiHttpClient = new http_client_1.UrllibHttpClient(); + this.storeHttpClient = new http_client_1.StoreHttpClient(); + // Set base URLs per country this.setBaseUrl(countryCode); - this.setMerchantId = function (merchantId) { - this.merchantId = merchantId; - this._reDefine(); - }; - this.setPrivateKey = function (privateKey) { - this.privateKey = privateKey; - this._reDefine(); - }; - this.setProductionReady = function (isProductionReady) { - this.isSandbox = !isProductionReady; - this._reDefine(); - }; - this.setTimeout = function (timeout) { - this.timeout = timeout; - this._reDefine(); - }; - this._reDefine = function () { - this.define({ - isSandbox: this.isSandbox, - privateKey: this.privateKey, - merchantId: this.merchantId, - timeout: this.timeout, - }); - }; - } - define(baseData) { - this.groups = new Groups(baseData); - this.merchant = new Merchant(baseData); - this.charges = new Charges(baseData); - this.payouts = new Payouts(baseData); - this.fees = new Fees(baseData); - this.plans = new Plans(baseData); - this.cards = new Cards(baseData); - this.customers = new Customers(baseData); - this.webhooks = new Webhooks(baseData); - this.tokens = new Tokens(baseData); - this.checkouts = new Checkouts(baseData); - this.pse = new Pse(baseData); - this.stores = new Stores(baseData); - } + // Instantiate resources & inject dependencies + this.merchant = new merchant_1.MerchantResource(this.config, this.apiHttpClient); + this.charges = new charges_1.ChargesResource(this.config, this.apiHttpClient); + this.payouts = new payouts_1.PayoutsResource(this.config, this.apiHttpClient); + this.fees = new fees_1.FeesResource(this.config, this.apiHttpClient); + this.plans = new plans_1.PlansResource(this.config, this.apiHttpClient); + this.cards = new cards_1.CardsResource(this.config, this.apiHttpClient); + this.customers = new customers_1.CustomersResource(this.config, this.apiHttpClient); + this.webhooks = new webhooks_1.WebhooksResource(this.config, this.apiHttpClient); + this.tokens = new tokens_1.TokensResource(this.config, this.apiHttpClient); + this.checkouts = new checkouts_1.CheckoutsResource(this.config, this.apiHttpClient); + this.pse = new pse_1.PseResource(this.config, this.apiHttpClient); + this.groups = new groups_1.GroupsResource(this.config, this.apiHttpClient); + // Stores uses its own HTTP client (different base URL format) + this.stores = new stores_1.StoresResource(this.config, this.storeHttpClient); + } + // ── Configuration Setters ──────────────────────────────────────── + /** Change the merchant ID and rebuild resources. */ + setMerchantId(merchantId) { + this.config = { ...this.config, merchantId }; + this.rebuildResources(); + } + /** Change the private key and rebuild resources. */ + setPrivateKey(privateKey) { + this.config = { ...this.config, privateKey }; + this.rebuildResources(); + } + /** Toggle sandbox/production mode and rebuild resources. */ + setProductionReady(isProductionReady) { + this.config = { ...this.config, isSandbox: !isProductionReady }; + this.rebuildResources(); + } + /** Change the HTTP request timeout and rebuild resources. */ + setTimeout(timeout) { + this.config = { ...this.config, timeout }; + this.rebuildResources(); + } + /** Per-country base URL configuration. */ setBaseUrl(countryCode) { console.log('setting base url from country'); switch (countryCode) { @@ -110,902 +119,24 @@ class Openpay { console.error('Error country code, setting mx default.'); } } -} -Openpay.BASE_URL = 'https://api.openpay.mx'; -Openpay.API_VERSION = '/v1/'; -Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.mx'; -Openpay.SANDBOX_API_VERSION = '/v1/'; -// ── Resource Classes ─────────────────────────────────────────────── -class Merchant { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId; - } - get(callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - })); - } -} -class Charges { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/charges'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } - get(transactionId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - })); - } - capture(transactionId, data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - refund(transactionId, data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } -} -class Payouts { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/payouts'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } - get(transactionId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - })); - } -} -class Fees { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/fees'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } -} -class Customers { - constructor(baseData) { - const self = this; - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/customers'; - this.create = function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: self.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }; - this.list = function (data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: self.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }; - this.get = function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'GET' }, - callback: callback, - })); - }; - this.update = function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - }; - this.delete = function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: self.baseUrl + '/' + customerId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }; - this.charges = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - capture: function (customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - refund: function (customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/charges/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - }; - this.transfers = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/transfers/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - }; - this.payouts = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, transactionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/payouts/' + transactionId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - }; - this.subscriptions = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - update: function (customerId, subscriptionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - }, - delete: function (customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/subscriptions/' + subscriptionId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - }; - this.cards = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - delete: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - }; - this.bankaccounts = { - baseUrl: baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - get: function (customerId, bankAccountId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - delete: function (customerId, bankAccountId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts/' + bankAccountId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/bankaccounts' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - }; - } -} -class Cards { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/cards'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } - get(cardId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - })); + // ── Helpers ────────────────────────────────────────────────────── + /** Rebuild all resources after a config change. */ + rebuildResources() { + // Re-assign resource properties (same pattern as original's _reDefine) + this.merchant = new merchant_1.MerchantResource(this.config, this.apiHttpClient); + this.charges = new charges_1.ChargesResource(this.config, this.apiHttpClient); + this.payouts = new payouts_1.PayoutsResource(this.config, this.apiHttpClient); + this.fees = new fees_1.FeesResource(this.config, this.apiHttpClient); + this.plans = new plans_1.PlansResource(this.config, this.apiHttpClient); + this.cards = new cards_1.CardsResource(this.config, this.apiHttpClient); + this.customers = new customers_1.CustomersResource(this.config, this.apiHttpClient); + this.webhooks = new webhooks_1.WebhooksResource(this.config, this.apiHttpClient); + this.tokens = new tokens_1.TokensResource(this.config, this.apiHttpClient); + this.checkouts = new checkouts_1.CheckoutsResource(this.config, this.apiHttpClient); + this.pse = new pse_1.PseResource(this.config, this.apiHttpClient); + this.groups = new groups_1.GroupsResource(this.config, this.apiHttpClient); + this.stores = new stores_1.StoresResource(this.config, this.storeHttpClient); } - delete(cardId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - } -} -class Plans { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/plans'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } - get(planId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'GET' }, - callback: callback, - })); - } - update(planId, data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - } - delete(planId, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - } - listSubscriptions(planId, data, callback) { - // Handle overloaded signatures like the original - let planIdResolved; - let dataResolved; - let cbResolved; - if (_.isFunction(data)) { - // Called as listSubscriptions(planId, callback) - planIdResolved = planId; - dataResolved = undefined; - cbResolved = data; - } - else if (_.isFunction(callback)) { - // Called as listSubscriptions(planId, data, callback) - planIdResolved = planId; - dataResolved = data; - cbResolved = callback; - } - else if (_.isFunction(planId)) { - // Called as listSubscriptions(callback) - planIdResolved = ''; - dataResolved = undefined; - cbResolved = planId; - } - else { - planIdResolved = planId; - dataResolved = data; - cbResolved = callback; - } - const query = dataResolved && - _.isObject(dataResolved) && - !_.isArray(dataResolved) && - !_.isFunction(dataResolved) && - !_.isEmpty(dataResolved) - ? stringifyParams(dataResolved) - : ''; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + planIdResolved + '/subscriptions' + query, - requestData: { method: 'GET' }, - callback: cbResolved, - })); - } -} -class Webhooks { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/webhooks'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - verify(webhook_id, verification_code, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id + '/verify' + '/' + verification_code, - requestData: { method: 'POST', json: '{}' }, - callback: callback, - })); - } - get(webhook_id, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id, - requestData: { method: 'GET' }, - callback: callback, - })); - } - delete(webhook_id, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + webhook_id, - requestData: { method: 'DELETE' }, - callback: callback, - })); - } - list(callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - })); - } -} -class Tokens { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/tokens'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - get(token_id, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + token_id, - requestData: { method: 'GET' }, - callback: callback, - })); - } - list(callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'GET' }, - callback: callback, - })); - } -} -class Checkouts { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/checkouts'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } - get(checkout_id, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + checkout_id, - requestData: { method: 'GET' }, - callback: callback, - })); - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } - update(checkoutId, status, data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + '/' + checkoutId + '?status=' + status, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - } -} -class Stores { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = 'stores'; - } - list(data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendStoreRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - } -} -class Pse { - constructor(baseData) { - this.baseData = baseData; - this.baseUrl = baseData.merchantId + '/charges'; - } - create(data, callback) { - sendRequest(_.extend(this.baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - } -} -class Groups { - constructor(baseData) { - baseData.groupId = baseData.merchantId; - const self = this; - this.customers = { - baseUrl: 'groups/' + baseData.merchantId + '/customers', - create: function (data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl, - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) ? callback : _.isFunction(data) ? data : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - update: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - }, - delete: function (customerId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + '/' + customerId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - cards: { - baseUrl: 'groups/' + baseData.merchantId + '/customers/', - create: function (customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (customerId, data, callback) { - const query = data && _.isObject(data) && !_.isArray(data) && !_.isFunction(data) && !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) - ? callback - : _.isFunction(data) - ? data - : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards' + query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - delete: function (customerId, cardId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + customerId + '/cards/' + cardId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - }, - charges: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - create: function (merchantId, customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - capture: function (merchantId, customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/charges/' + - transactionId + - '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - refund: function (merchantId, customerId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/charges/' + - transactionId + - '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - }, - subscriptions: { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - create: function (merchantId, customerId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/customers/' + customerId + '/subscriptions', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - list: function (merchantId, customerId, data, callback) { - const query = data && - _.isObject(data) && - !_.isArray(data) && - !_.isFunction(data) && - !_.isEmpty(data) - ? stringifyParams(data) - : ''; - const cb = _.isFunction(callback) - ? callback - : _.isFunction(data) - ? data - : null; - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions' + - query, - requestData: { method: 'GET' }, - callback: cb, - })); - }, - get: function (merchantId, customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'GET' }, - callback: callback, - })); - }, - update: function (merchantId, customerId, subscriptionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'PUT', json: data }, - callback: callback, - })); - }, - delete: function (merchantId, customerId, subscriptionId, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + - merchantId + - '/customers/' + - customerId + - '/subscriptions/' + - subscriptionId, - requestData: { method: 'DELETE' }, - callback: callback, - })); - }, - }, - }; - this.charges = { - baseUrl: 'groups/' + baseData.merchantId + '/merchants/', - create: function (merchantId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - capture: function (merchantId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/capture', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - refund: function (merchantId, transactionId, data, callback) { - sendRequest(_.extend(baseData, { - apiUrl: this.baseUrl + merchantId + '/charges/' + transactionId + '/refund', - requestData: { method: 'POST', json: data }, - callback: callback, - })); - }, - }; - } -} -// ── Utilities ────────────────────────────────────────────────────── -function stringifyParams(params) { - return ('?' + - _.map(_.pairs(params), function (arr) { - return arr.join('='); - }).join('&')); -} -function sendRequest(data) { - const baseUrl = data.isSandbox - ? Openpay.SANDBOX_URL + Openpay.SANDBOX_API_VERSION - : Openpay.BASE_URL + Openpay.API_VERSION; - const url = baseUrl + (0, url_utils_1.escapeBrackets)(data.apiUrl); - const options = { - auth: data.privateKey + ':', - method: (data.requestData.method || 'GET'), - contentType: 'json', - timeout: data.timeout, - data: data.requestData.json, - dataType: 'json', - }; - urllib.request(url, options, function (err, body, res) { - const resCode = res ? res.statusCode : null; - const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; - data.callback(err ? err : error, err || error ? null : body, res); - }); -} -function sendStoreRequest(data) { - const baseUrl = data.isSandbox - ? Openpay.SANDBOX_URL + '/' - : Openpay.BASE_URL + '/'; - const url = baseUrl + (0, url_utils_1.escapeBrackets)(data.apiUrl); - const options = { - auth: data.privateKey + ':', - method: (data.requestData.method || 'GET'), - contentType: 'json', - timeout: data.timeout, - data: data.requestData.json, - dataType: 'json', - }; - urllib.request(url, options, function (err, body, res) { - const resCode = res ? res.statusCode : null; - const error = resCode && resCode != 200 && resCode != 201 && resCode != 204 ? body : null; - data.callback(err ? err : error, err || error ? null : body, res); - }); } module.exports = Openpay; //# sourceMappingURL=openpay.js.map \ No newline at end of file diff --git a/lib/openpay.js.map b/lib/openpay.js.map index 9ae0773..fa4b913 100644 --- a/lib/openpay.js.map +++ b/lib/openpay.js.map @@ -1 +1 @@ -{"version":3,"file":"openpay.js","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"openpay.js","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":";AACA,+CAAkE;AAClE,mDAAwD;AACxD,iDAAsD;AACtD,iDAAsD;AACtD,2CAAgD;AAChD,6CAAkD;AAClD,6CAAkD;AAClD,qDAA0D;AAC1D,mDAAwD;AACxD,+CAAoD;AACpD,qDAA0D;AAC1D,+CAAoD;AACpD,yCAA8C;AAC9C,+CAAoD;AAEpD;;;;;;;;GAQG;AACH,MAAM,OAAO;IACX,oEAAoE;IAEpE,MAAM,CAAC,QAAQ,GAAG,wBAAwB,CAAC;IAC3C,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,WAAW,GAAG,gCAAgC,CAAC;IACtD,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAEpC,oEAAoE;IAE5D,MAAM,CAAgB;IACtB,aAAa,CAAmB;IAChC,eAAe,CAAkB;IAEzC,oEAAoE;IAE7D,QAAQ,CAAmB;IAC3B,OAAO,CAAkB;IACzB,OAAO,CAAkB;IACzB,IAAI,CAAe;IACnB,KAAK,CAAgB;IACrB,KAAK,CAAgB;IACrB,SAAS,CAAoB;IAC7B,QAAQ,CAAmB;IAC3B,MAAM,CAAiB;IACvB,SAAS,CAAoB;IAC7B,MAAM,CAAiB;IACvB,GAAG,CAAc;IACjB,MAAM,CAAiB;IAE9B,oEAAoE;IAEpE,YACE,UAAkB,EAClB,UAAkB,EAClB,WAAW,GAAgB,IAAI,EAC/B,iBAA2B;QAE3B,MAAM,SAAS,GAAG,CAAC,iBAAiB,CAAC;QAErC,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU;YACV,UAAU;YACV,SAAS;YACT,OAAO,EAAE,MAAM;SAChB,CAAC;QAEF,oEAAoE;QACpE,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAgB,EAAE,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,6BAAe,EAAE,CAAC;QAE7C,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAE7B,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,GAAG,IAAI,iBAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAElE,8DAA8D;QAC9D,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACtE,CAAC;IAED,oEAAoE;IAEpE,oDAAoD;IACpD,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,oDAAoD;IACpD,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAC7C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,4DAA4D;IAC5D,kBAAkB,CAAC,iBAA0B;QAC3C,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAChE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,6DAA6D;IAC7D,UAAU,CAAC,OAAe;QACxB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,0CAA0C;IAC1C,UAAU,CAAC,WAAwB;QACjC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAC5B,OAAO,CAAC,QAAQ,GAAG,wBAAwB,CAAC;gBAC5C,OAAO,CAAC,WAAW,GAAG,gCAAgC,CAAC;gBACvD,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAChC,OAAO,CAAC,QAAQ,GAAG,wBAAwB,CAAC;gBAC5C,OAAO,CAAC,WAAW,GAAG,gCAAgC,CAAC;gBACvD,MAAM;YACR,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,oEAAoE;IAEpE,mDAAmD;IAC3C,gBAAgB;QACtB,uEAAuE;QACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,QAAQ,GAAG,IAAI,2BAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,SAAS,GAAG,IAAI,6BAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,GAAG,IAAI,iBAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACtE,CAAC;CACF;AAED,iBAAS,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/resources/cards.d.ts b/lib/resources/cards.d.ts new file mode 100644 index 0000000..0c5697e --- /dev/null +++ b/lib/resources/cards.d.ts @@ -0,0 +1,12 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class CardsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + get(cardId: string, callback: Callback): void; + delete(cardId: string, callback: Callback): void; +} +//# sourceMappingURL=cards.d.ts.map \ No newline at end of file diff --git a/lib/resources/cards.d.ts.map b/lib/resources/cards.d.ts.map new file mode 100644 index 0000000..21f7679 --- /dev/null +++ b/lib/resources/cards.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/resources/cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5C;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;CACF"} \ No newline at end of file diff --git a/lib/resources/cards.js b/lib/resources/cards.js new file mode 100644 index 0000000..45a1b8d --- /dev/null +++ b/lib/resources/cards.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CardsResource = void 0; +const base_resource_1 = require("../base-resource"); +class CardsResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/cards`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + get(cardId, callback) { + this.request('GET', this.url(cardId), undefined, callback); + } + delete(cardId, callback) { + this.request('DELETE', this.url(cardId), undefined, callback); + } +} +exports.CardsResource = CardsResource; +//# sourceMappingURL=cards.js.map \ No newline at end of file diff --git a/lib/resources/cards.js.map b/lib/resources/cards.js.map new file mode 100644 index 0000000..77a62f5 --- /dev/null +++ b/lib/resources/cards.js.map @@ -0,0 +1 @@ +{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/resources/cards.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,mBAA2B,SAAQ,4BAAY;IAC7C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,QAAkB;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/charges.d.ts b/lib/resources/charges.d.ts new file mode 100644 index 0000000..048b063 --- /dev/null +++ b/lib/resources/charges.d.ts @@ -0,0 +1,18 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class ChargesResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + /** Create a new charge. */ + create(data: unknown, callback: Callback): void; + /** List charges with optional filters. */ + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + /** Get a charge by transaction ID. */ + get(transactionId: string, callback: Callback): void; + /** Capture a previously uncaptured charge. */ + capture(transactionId: string, data: unknown, callback: Callback): void; + /** Refund a charge. */ + refund(transactionId: string, data: unknown, callback: Callback): void; +} +//# sourceMappingURL=charges.d.ts.map \ No newline at end of file diff --git a/lib/resources/charges.d.ts.map b/lib/resources/charges.d.ts.map new file mode 100644 index 0000000..4820537 --- /dev/null +++ b/lib/resources/charges.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"charges.d.ts","sourceRoot":"","sources":["../../src/resources/charges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,0CAA0C;IAC1C,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,sCAAsC;IACtC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;IAED,8CAA8C;IAC9C,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEtE;IAED,uBAAuB;IACvB,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAErE;CACF"} \ No newline at end of file diff --git a/lib/resources/charges.js b/lib/resources/charges.js new file mode 100644 index 0000000..7623dba --- /dev/null +++ b/lib/resources/charges.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ChargesResource = void 0; +const base_resource_1 = require("../base-resource"); +class ChargesResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/charges`); + } + /** Create a new charge. */ + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + /** Get a charge by transaction ID. */ + get(transactionId, callback) { + this.request('GET', this.url(transactionId), undefined, callback); + } + /** Capture a previously uncaptured charge. */ + capture(transactionId, data, callback) { + this.request('POST', this.url(`${transactionId}/capture`), data, callback); + } + /** Refund a charge. */ + refund(transactionId, data, callback) { + this.request('POST', this.url(`${transactionId}/refund`), data, callback); + } +} +exports.ChargesResource = ChargesResource; +//# sourceMappingURL=charges.js.map \ No newline at end of file diff --git a/lib/resources/charges.js.map b/lib/resources/charges.js.map new file mode 100644 index 0000000..7ea7aa5 --- /dev/null +++ b/lib/resources/charges.js.map @@ -0,0 +1 @@ +{"version":3,"file":"charges.js","sourceRoot":"","sources":["../../src/resources/charges.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,qBAA6B,SAAQ,4BAAY;IAC/C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAKD,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,sCAAsC;IACtC,GAAG,CAAC,aAAqB,EAAE,QAAkB;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,aAAqB,EAAE,IAAa,EAAE,QAAkB;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,aAAqB,EAAE,IAAa,EAAE,QAAkB;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/checkouts.d.ts b/lib/resources/checkouts.d.ts new file mode 100644 index 0000000..4504cf6 --- /dev/null +++ b/lib/resources/checkouts.d.ts @@ -0,0 +1,12 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class CheckoutsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + get(checkoutId: string, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + update(checkoutId: string, status: string, data: unknown, callback: Callback): void; +} +//# sourceMappingURL=checkouts.d.ts.map \ No newline at end of file diff --git a/lib/resources/checkouts.d.ts.map b/lib/resources/checkouts.d.ts.map new file mode 100644 index 0000000..d396d37 --- /dev/null +++ b/lib/resources/checkouts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"checkouts.d.ts","sourceRoot":"","sources":["../../src/resources/checkouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEhD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAOlF;CACF"} \ No newline at end of file diff --git a/lib/resources/checkouts.js b/lib/resources/checkouts.js new file mode 100644 index 0000000..8327c07 --- /dev/null +++ b/lib/resources/checkouts.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CheckoutsResource = void 0; +const base_resource_1 = require("../base-resource"); +class CheckoutsResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/checkouts`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + get(checkoutId, callback) { + this.request('GET', this.url(checkoutId), undefined, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + update(checkoutId, status, data, callback) { + this.request('PUT', this.url(`${checkoutId}?status=${status}`), data, callback); + } +} +exports.CheckoutsResource = CheckoutsResource; +//# sourceMappingURL=checkouts.js.map \ No newline at end of file diff --git a/lib/resources/checkouts.js.map b/lib/resources/checkouts.js.map new file mode 100644 index 0000000..30ff518 --- /dev/null +++ b/lib/resources/checkouts.js.map @@ -0,0 +1 @@ +{"version":3,"file":"checkouts.js","sourceRoot":"","sources":["../../src/resources/checkouts.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,uBAA+B,SAAQ,4BAAY;IACjD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,QAAkB;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,MAAc,EAAE,IAAa,EAAE,QAAkB;QAC1E,IAAI,CAAC,OAAO,CACV,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,WAAW,MAAM,EAAE,CAAC,EAC1C,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/customers.d.ts b/lib/resources/customers.d.ts new file mode 100644 index 0000000..80b1a46 --- /dev/null +++ b/lib/resources/customers.d.ts @@ -0,0 +1,68 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +declare class CustomerCards extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, cardId: string, callback: Callback): void; + delete(customerId: string, cardId: string, callback: Callback): void; +} +declare class CustomerCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, transactionId: string, callback: Callback): void; + capture(customerId: string, transactionId: string, data: unknown, callback: Callback): void; + refund(customerId: string, transactionId: string, data: unknown, callback: Callback): void; +} +declare class CustomerTransfers extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, transactionId: string, callback: Callback): void; +} +declare class CustomerPayouts extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, transactionId: string, callback: Callback): void; +} +declare class CustomerSubscriptions extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, subscriptionId: string, callback: Callback): void; + update(customerId: string, subscriptionId: string, data: unknown, callback: Callback): void; + delete(customerId: string, subscriptionId: string, callback: Callback): void; +} +declare class CustomerBankAccounts extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + get(customerId: string, bankAccountId: string, callback: Callback): void; + delete(customerId: string, bankAccountId: string, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; +} +export declare class CustomersResource extends BaseResource { + readonly cards: CustomerCards; + readonly charges: CustomerCharges; + readonly transfers: CustomerTransfers; + readonly payouts: CustomerPayouts; + readonly subscriptions: CustomerSubscriptions; + readonly bankaccounts: CustomerBankAccounts; + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + get(customerId: string, callback: Callback): void; + update(customerId: string, data: unknown, callback: Callback): void; + delete(customerId: string, callback: Callback): void; +} +export {}; +//# sourceMappingURL=customers.d.ts.map \ No newline at end of file diff --git a/lib/resources/customers.d.ts.map b/lib/resources/customers.d.ts.map new file mode 100644 index 0000000..d3a4bed --- /dev/null +++ b/lib/resources/customers.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAIrE,cAAM,aAAc,SAAQ,YAAY;IACtC,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMtE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEhE;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnE;CACF;AAED,cAAM,eAAgB,SAAQ,YAAY;IACxC,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMtE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE;IAED,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1F;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEzF;CACF;AAED,cAAM,iBAAkB,SAAQ,YAAY;IAC1C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMtE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE;CACF;AAED,cAAM,eAAgB,SAAQ,YAAY;IACxC,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMtE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE;CACF;AAED,cAAM,qBAAsB,SAAQ,YAAY;IAC9C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMtE,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAExE;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1F;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE3E;CACF;AAED,cAAM,oBAAqB,SAAQ,YAAY;IAC7C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEvE;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE1E;IAED,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAKvE;AAID,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,SAAS,EAAE,iBAAiB,CAAC;IAC7C,SAAgB,OAAO,EAAE,eAAe,CAAC;IACzC,SAAgB,aAAa,EAAE,qBAAqB,CAAC;IACrD,SAAgB,YAAY,EAAE,oBAAoB,CAAC;IAEnD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAUxD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEhD;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElE;IAED,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;CACF"} \ No newline at end of file diff --git a/lib/resources/customers.js b/lib/resources/customers.js new file mode 100644 index 0000000..62763c4 --- /dev/null +++ b/lib/resources/customers.js @@ -0,0 +1,150 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CustomersResource = void 0; +const base_resource_1 = require("../base-resource"); +// ── Customer Sub-Resources ───────────────────────────────────────── +class CustomerCards extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/cards`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb); + } + get(customerId, cardId, callback) { + this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } + delete(customerId, cardId, callback) { + this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } +} +class CustomerCharges extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/charges`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/charges`, query), undefined, resolvedCb); + } + get(customerId, transactionId, callback) { + this.request('GET', this.url(`${customerId}/charges/${transactionId}`), undefined, callback); + } + capture(customerId, transactionId, data, callback) { + this.request('POST', this.url(`${customerId}/charges/${transactionId}/capture`), data, callback); + } + refund(customerId, transactionId, data, callback) { + this.request('POST', this.url(`${customerId}/charges/${transactionId}/refund`), data, callback); + } +} +class CustomerTransfers extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/transfers`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/transfers`, query), undefined, resolvedCb); + } + get(customerId, transactionId, callback) { + this.request('GET', this.url(`${customerId}/transfers/${transactionId}`), undefined, callback); + } +} +class CustomerPayouts extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/payouts`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/payouts`, query), undefined, resolvedCb); + } + get(customerId, transactionId, callback) { + this.request('GET', this.url(`${customerId}/payouts/${transactionId}`), undefined, callback); + } +} +class CustomerSubscriptions extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/subscriptions`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/subscriptions`, query), undefined, resolvedCb); + } + get(customerId, subscriptionId, callback) { + this.request('GET', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } + update(customerId, subscriptionId, data, callback) { + this.request('PUT', this.url(`${customerId}/subscriptions/${subscriptionId}`), data, callback); + } + delete(customerId, subscriptionId, callback) { + this.request('DELETE', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } +} +class CustomerBankAccounts extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/bankaccounts`), data, callback); + } + get(customerId, bankAccountId, callback) { + this.request('GET', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); + } + delete(customerId, bankAccountId, callback) { + this.request('DELETE', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/bankaccounts`, query), undefined, resolvedCb); + } +} +// ── Main Customers Resource ──────────────────────────────────────── +class CustomersResource extends base_resource_1.BaseResource { + cards; + charges; + transfers; + payouts; + subscriptions; + bankaccounts; + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/customers`); + // Compose sub-resources (each shares the same config & http client) + this.cards = new CustomerCards(config, httpClient); + this.charges = new CustomerCharges(config, httpClient); + this.transfers = new CustomerTransfers(config, httpClient); + this.payouts = new CustomerPayouts(config, httpClient); + this.subscriptions = new CustomerSubscriptions(config, httpClient); + this.bankaccounts = new CustomerBankAccounts(config, httpClient); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + get(customerId, callback) { + this.request('GET', this.url(customerId), undefined, callback); + } + update(customerId, data, callback) { + this.request('PUT', this.url(customerId), data, callback); + } + delete(customerId, callback) { + this.request('DELETE', this.url(customerId), undefined, callback); + } +} +exports.CustomersResource = CustomersResource; +//# sourceMappingURL=customers.js.map \ No newline at end of file diff --git a/lib/resources/customers.js.map b/lib/resources/customers.js.map new file mode 100644 index 0000000..94bc094 --- /dev/null +++ b/lib/resources/customers.js.map @@ -0,0 +1 @@ +{"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/fees.d.ts b/lib/resources/fees.d.ts new file mode 100644 index 0000000..bdf5fc5 --- /dev/null +++ b/lib/resources/fees.d.ts @@ -0,0 +1,10 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class FeesResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; +} +//# sourceMappingURL=fees.d.ts.map \ No newline at end of file diff --git a/lib/resources/fees.d.ts.map b/lib/resources/fees.d.ts.map new file mode 100644 index 0000000..5fc9848 --- /dev/null +++ b/lib/resources/fees.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/resources/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAKnD"} \ No newline at end of file diff --git a/lib/resources/fees.js b/lib/resources/fees.js new file mode 100644 index 0000000..19248c0 --- /dev/null +++ b/lib/resources/fees.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FeesResource = void 0; +const base_resource_1 = require("../base-resource"); +class FeesResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/fees`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } +} +exports.FeesResource = FeesResource; +//# sourceMappingURL=fees.js.map \ No newline at end of file diff --git a/lib/resources/fees.js.map b/lib/resources/fees.js.map new file mode 100644 index 0000000..741569f --- /dev/null +++ b/lib/resources/fees.js.map @@ -0,0 +1 @@ +{"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/resources/fees.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,kBAA0B,SAAQ,4BAAY;IAC5C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/groups.d.ts b/lib/resources/groups.d.ts new file mode 100644 index 0000000..29395d2 --- /dev/null +++ b/lib/resources/groups.d.ts @@ -0,0 +1,51 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +declare class GroupCustomerCards extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(customerId: string, data: unknown, callback: Callback): void; + list(customerId: string, callback: Callback): void; + list(customerId: string, data: QueryParams, callback: Callback): void; + get(customerId: string, cardId: string, callback: Callback): void; + delete(customerId: string, cardId: string, callback: Callback): void; +} +declare class GroupCustomerCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(merchantId: string, customerId: string, data: unknown, callback: Callback): void; + capture(merchantId: string, customerId: string, transactionId: string, data: unknown, callback: Callback): void; + refund(merchantId: string, customerId: string, transactionId: string, data: unknown, callback: Callback): void; +} +declare class GroupCustomerSubscriptions extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(merchantId: string, customerId: string, data: unknown, callback: Callback): void; + list(merchantId: string, customerId: string, callback: Callback): void; + list(merchantId: string, customerId: string, data: QueryParams, callback: Callback): void; + get(merchantId: string, customerId: string, subscriptionId: string, callback: Callback): void; + update(merchantId: string, customerId: string, subscriptionId: string, data: unknown, callback: Callback): void; + delete(merchantId: string, customerId: string, subscriptionId: string, callback: Callback): void; +} +declare class GroupCustomers extends BaseResource { + readonly cards: GroupCustomerCards; + readonly charges: GroupCustomerCharges; + readonly subscriptions: GroupCustomerSubscriptions; + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + get(customerId: string, callback: Callback): void; + update(customerId: string, data: unknown, callback: Callback): void; + delete(customerId: string, callback: Callback): void; +} +declare class GroupCharges extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(merchantId: string, data: unknown, callback: Callback): void; + capture(merchantId: string, transactionId: string, data: unknown, callback: Callback): void; + refund(merchantId: string, transactionId: string, data: unknown, callback: Callback): void; +} +export declare class GroupsResource extends BaseResource { + readonly customers: GroupCustomers; + readonly charges: GroupCharges; + constructor(config: OpenpayConfig, httpClient: HttpClient); +} +export {}; +//# sourceMappingURL=groups.d.ts.map \ No newline at end of file diff --git a/lib/resources/groups.d.ts.map b/lib/resources/groups.d.ts.map new file mode 100644 index 0000000..2a8e98f --- /dev/null +++ b/lib/resources/groups.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/resources/groups.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/groups.js b/lib/resources/groups.js new file mode 100644 index 0000000..a37829c --- /dev/null +++ b/lib/resources/groups.js @@ -0,0 +1,113 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GroupsResource = void 0; +const base_resource_1 = require("../base-resource"); +// ── Group Sub-Resources ──────────────────────────────────────────── +class GroupCustomerCards extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}/customers`); + } + create(customerId, data, callback) { + this.request('POST', this.url(`${customerId}/cards`), data, callback); + } + list(customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb); + } + get(customerId, cardId, callback) { + this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } + delete(customerId, cardId, callback) { + this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + } +} +class GroupCustomerCharges extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + create(merchantId, customerId, data, callback) { + this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges`), data, callback); + } + capture(merchantId, customerId, transactionId, data, callback) { + this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/capture`), data, callback); + } + refund(merchantId, customerId, transactionId, data, callback) { + this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/refund`), data, callback); + } +} +class GroupCustomerSubscriptions extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + create(merchantId, customerId, data, callback) { + this.request('POST', this.url(`${merchantId}/customers/${customerId}/subscriptions`), data, callback); + } + list(merchantId, customerId, dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${merchantId}/customers/${customerId}/subscriptions`, query), undefined, resolvedCb); + } + get(merchantId, customerId, subscriptionId, callback) { + this.request('GET', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } + update(merchantId, customerId, subscriptionId, data, callback) { + this.request('PUT', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), data, callback); + } + delete(merchantId, customerId, subscriptionId, callback) { + this.request('DELETE', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + } +} +// ── Group Customers ───────────────────────────────────────────────── +class GroupCustomers extends base_resource_1.BaseResource { + cards; + charges; + subscriptions; + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}/customers`); + this.cards = new GroupCustomerCards(config, httpClient); + this.charges = new GroupCustomerCharges(config, httpClient); + this.subscriptions = new GroupCustomerSubscriptions(config, httpClient); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + get(customerId, callback) { + this.request('GET', this.url(customerId), undefined, callback); + } + update(customerId, data, callback) { + this.request('PUT', this.url(customerId), data, callback); + } + delete(customerId, callback) { + this.request('DELETE', this.url(customerId), undefined, callback); + } +} +// ── Group Charges ─────────────────────────────────────────────────── +class GroupCharges extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}/merchants`); + } + create(merchantId, data, callback) { + this.request('POST', this.url(`${merchantId}/charges`), data, callback); + } + capture(merchantId, transactionId, data, callback) { + this.request('POST', this.url(`${merchantId}/charges/${transactionId}/capture`), data, callback); + } + refund(merchantId, transactionId, data, callback) { + this.request('POST', this.url(`${merchantId}/charges/${transactionId}/refund`), data, callback); + } +} +// ── Main Groups Resource ──────────────────────────────────────────── +class GroupsResource extends base_resource_1.BaseResource { + customers; + charges; + constructor(config, httpClient) { + super(config, httpClient, `groups/${config.merchantId}`); + this.customers = new GroupCustomers(config, httpClient); + this.charges = new GroupCharges(config, httpClient); + } +} +exports.GroupsResource = GroupsResource; +//# sourceMappingURL=groups.js.map \ No newline at end of file diff --git a/lib/resources/groups.js.map b/lib/resources/groups.js.map new file mode 100644 index 0000000..eaa0789 --- /dev/null +++ b/lib/resources/groups.js.map @@ -0,0 +1 @@ +{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/resources/groups.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/merchant.d.ts b/lib/resources/merchant.d.ts new file mode 100644 index 0000000..3925ff7 --- /dev/null +++ b/lib/resources/merchant.d.ts @@ -0,0 +1,11 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; +export declare class MerchantResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + /** + * Get merchant information. + */ + get(callback: Callback): void; +} +//# sourceMappingURL=merchant.d.ts.map \ No newline at end of file diff --git a/lib/resources/merchant.d.ts.map b/lib/resources/merchant.d.ts.map new file mode 100644 index 0000000..9690806 --- /dev/null +++ b/lib/resources/merchant.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"merchant.d.ts","sourceRoot":"","sources":["../../src/resources/merchant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5B;CACF"} \ No newline at end of file diff --git a/lib/resources/merchant.js b/lib/resources/merchant.js new file mode 100644 index 0000000..b7d547a --- /dev/null +++ b/lib/resources/merchant.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MerchantResource = void 0; +const base_resource_1 = require("../base-resource"); +class MerchantResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, config.merchantId); + } + /** + * Get merchant information. + */ + get(callback) { + this.request('GET', this.url(), undefined, callback); + } +} +exports.MerchantResource = MerchantResource; +//# sourceMappingURL=merchant.js.map \ No newline at end of file diff --git a/lib/resources/merchant.js.map b/lib/resources/merchant.js.map new file mode 100644 index 0000000..f363f66 --- /dev/null +++ b/lib/resources/merchant.js.map @@ -0,0 +1 @@ +{"version":3,"file":"merchant.js","sourceRoot":"","sources":["../../src/resources/merchant.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,sBAA8B,SAAQ,4BAAY;IAChD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,QAAkB;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/payouts.d.ts b/lib/resources/payouts.d.ts new file mode 100644 index 0000000..fd9403a --- /dev/null +++ b/lib/resources/payouts.d.ts @@ -0,0 +1,11 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class PayoutsResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + get(transactionId: string, callback: Callback): void; +} +//# sourceMappingURL=payouts.d.ts.map \ No newline at end of file diff --git a/lib/resources/payouts.d.ts.map b/lib/resources/payouts.d.ts.map new file mode 100644 index 0000000..130083e --- /dev/null +++ b/lib/resources/payouts.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"payouts.d.ts","sourceRoot":"","sources":["../../src/resources/payouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;CACF"} \ No newline at end of file diff --git a/lib/resources/payouts.js b/lib/resources/payouts.js new file mode 100644 index 0000000..4960946 --- /dev/null +++ b/lib/resources/payouts.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PayoutsResource = void 0; +const base_resource_1 = require("../base-resource"); +class PayoutsResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/payouts`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + get(transactionId, callback) { + this.request('GET', this.url(transactionId), undefined, callback); + } +} +exports.PayoutsResource = PayoutsResource; +//# sourceMappingURL=payouts.js.map \ No newline at end of file diff --git a/lib/resources/payouts.js.map b/lib/resources/payouts.js.map new file mode 100644 index 0000000..abd9912 --- /dev/null +++ b/lib/resources/payouts.js.map @@ -0,0 +1 @@ +{"version":3,"file":"payouts.js","sourceRoot":"","sources":["../../src/resources/payouts.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,qBAA6B,SAAQ,4BAAY;IAC/C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,aAAqB,EAAE,QAAkB;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/plans.d.ts b/lib/resources/plans.d.ts new file mode 100644 index 0000000..1626cfe --- /dev/null +++ b/lib/resources/plans.d.ts @@ -0,0 +1,17 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class PlansResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; + get(planId: string, callback: Callback): void; + update(planId: string, data: unknown, callback: Callback): void; + delete(planId: string, callback: Callback): void; + /** List subscriptions under a plan. */ + listSubscriptions(callback: Callback): void; + listSubscriptions(planId: string, callback: Callback): void; + listSubscriptions(planId: string, data: QueryParams, callback: Callback): void; +} +//# sourceMappingURL=plans.d.ts.map \ No newline at end of file diff --git a/lib/resources/plans.d.ts.map b/lib/resources/plans.d.ts.map new file mode 100644 index 0000000..6fa257e --- /dev/null +++ b/lib/resources/plans.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/resources/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5C;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9D;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;IAED,uCAAuC;IACvC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAkChF"} \ No newline at end of file diff --git a/lib/resources/plans.js b/lib/resources/plans.js new file mode 100644 index 0000000..ea1fbeb --- /dev/null +++ b/lib/resources/plans.js @@ -0,0 +1,57 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PlansResource = void 0; +const base_resource_1 = require("../base-resource"); +class PlansResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/plans`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.url() + query, undefined, resolvedCb); + } + get(planId, callback) { + this.request('GET', this.url(planId), undefined, callback); + } + update(planId, data, callback) { + this.request('PUT', this.url(planId), data, callback); + } + delete(planId, callback) { + this.request('DELETE', this.url(planId), undefined, callback); + } + listSubscriptions(planIdOrCb, dataOrCb, cb) { + let planId; + let query = ''; + let resolvedCb; + if (typeof planIdOrCb === 'function') { + // listSubscriptions(callback) + planId = ''; + resolvedCb = planIdOrCb; + } + else if (typeof dataOrCb === 'function') { + // listSubscriptions(planId, callback) + planId = planIdOrCb; + resolvedCb = dataOrCb; + } + else if (typeof cb === 'function') { + // listSubscriptions(planId, data, callback) + planId = planIdOrCb; + query = this.resolveListParams(dataOrCb, cb).query; + resolvedCb = cb; + } + else { + // listSubscriptions(planId, data) + planId = planIdOrCb; + resolvedCb = undefined; + } + const urlPath = planId + ? `${this.url(planId)}/subscriptions${query}` + : `${this.url()}${query}`; + this.request('GET', urlPath, undefined, resolvedCb); + } +} +exports.PlansResource = PlansResource; +//# sourceMappingURL=plans.js.map \ No newline at end of file diff --git a/lib/resources/plans.js.map b/lib/resources/plans.js.map new file mode 100644 index 0000000..d5444ca --- /dev/null +++ b/lib/resources/plans.js.map @@ -0,0 +1 @@ +{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/resources/plans.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,mBAA2B,SAAQ,4BAAY;IAC7C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,QAAkB;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,IAAa,EAAE,QAAkB;QACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAMD,iBAAiB,CACf,UAA6B,EAC7B,QAA6C,EAC7C,EAAa;QAEb,IAAI,MAAc,CAAC;QACnB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,UAAgC,CAAC;QAErC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,8BAA8B;YAC9B,MAAM,GAAG,EAAE,CAAC;YACZ,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1C,sCAAsC;YACtC,MAAM,GAAG,UAAU,CAAC;YACpB,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YACpC,4CAA4C;YAC5C,MAAM,GAAG,UAAU,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAuB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YAClE,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,GAAG,UAAU,CAAC;YACpB,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM;YACpB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,EAAE;YAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/pse.d.ts b/lib/resources/pse.d.ts new file mode 100644 index 0000000..33d7372 --- /dev/null +++ b/lib/resources/pse.d.ts @@ -0,0 +1,9 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; +export declare class PseResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + /** Create a PSE charge (Colombia). */ + create(data: unknown, callback: Callback): void; +} +//# sourceMappingURL=pse.d.ts.map \ No newline at end of file diff --git a/lib/resources/pse.d.ts.map b/lib/resources/pse.d.ts.map new file mode 100644 index 0000000..b134a66 --- /dev/null +++ b/lib/resources/pse.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"pse.d.ts","sourceRoot":"","sources":["../../src/resources/pse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,sCAAsC;IACtC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;CACF"} \ No newline at end of file diff --git a/lib/resources/pse.js b/lib/resources/pse.js new file mode 100644 index 0000000..9538561 --- /dev/null +++ b/lib/resources/pse.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PseResource = void 0; +const base_resource_1 = require("../base-resource"); +class PseResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/charges`); + } + /** Create a PSE charge (Colombia). */ + create(data, callback) { + this.request('POST', this.url(), data, callback); + } +} +exports.PseResource = PseResource; +//# sourceMappingURL=pse.js.map \ No newline at end of file diff --git a/lib/resources/pse.js.map b/lib/resources/pse.js.map new file mode 100644 index 0000000..6669126 --- /dev/null +++ b/lib/resources/pse.js.map @@ -0,0 +1 @@ +{"version":3,"file":"pse.js","sourceRoot":"","sources":["../../src/resources/pse.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,iBAAyB,SAAQ,4BAAY;IAC3C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,sCAAsC;IACtC,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/stores.d.ts b/lib/resources/stores.d.ts new file mode 100644 index 0000000..6e26a77 --- /dev/null +++ b/lib/resources/stores.d.ts @@ -0,0 +1,9 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig, QueryParams } from '../types'; +export declare class StoresResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + list(callback: Callback): void; + list(data: QueryParams, callback: Callback): void; +} +//# sourceMappingURL=stores.d.ts.map \ No newline at end of file diff --git a/lib/resources/stores.d.ts.map b/lib/resources/stores.d.ts.map new file mode 100644 index 0000000..41b72ee --- /dev/null +++ b/lib/resources/stores.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/resources/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAGxD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAMnD"} \ No newline at end of file diff --git a/lib/resources/stores.js b/lib/resources/stores.js new file mode 100644 index 0000000..401df12 --- /dev/null +++ b/lib/resources/stores.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StoresResource = void 0; +const base_resource_1 = require("../base-resource"); +class StoresResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + // Stores uses a different base URL (no merchant prefix, no /v1/) + super(config, httpClient, 'stores'); + } + list(dataOrCb, cb) { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + // Stores uses the StoreHttpClient which has different BASE_URL logic + this.httpClient.request('GET', this.url() + query, undefined, this.config, resolvedCb); + } +} +exports.StoresResource = StoresResource; +//# sourceMappingURL=stores.js.map \ No newline at end of file diff --git a/lib/resources/stores.js.map b/lib/resources/stores.js.map new file mode 100644 index 0000000..629bf9c --- /dev/null +++ b/lib/resources/stores.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/resources/stores.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,oBAA4B,SAAQ,4BAAY;IAC9C,YAAY,MAAqB,EAAE,UAAsB;QACvD,iEAAiE;QACjE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,qEAAqE;QACrE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAW,CAAC,CAAC;IAC1F,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/tokens.d.ts b/lib/resources/tokens.d.ts new file mode 100644 index 0000000..ee27def --- /dev/null +++ b/lib/resources/tokens.d.ts @@ -0,0 +1,10 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; +export declare class TokensResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + get(tokenId: string, callback: Callback): void; + list(callback: Callback): void; +} +//# sourceMappingURL=tokens.d.ts.map \ No newline at end of file diff --git a/lib/resources/tokens.d.ts.map b/lib/resources/tokens.d.ts.map new file mode 100644 index 0000000..02f96f1 --- /dev/null +++ b/lib/resources/tokens.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/resources/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7B;CACF"} \ No newline at end of file diff --git a/lib/resources/tokens.js b/lib/resources/tokens.js new file mode 100644 index 0000000..c35efad --- /dev/null +++ b/lib/resources/tokens.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TokensResource = void 0; +const base_resource_1 = require("../base-resource"); +class TokensResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/tokens`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + get(tokenId, callback) { + this.request('GET', this.url(tokenId), undefined, callback); + } + list(callback) { + this.request('GET', this.url(), undefined, callback); + } +} +exports.TokensResource = TokensResource; +//# sourceMappingURL=tokens.js.map \ No newline at end of file diff --git a/lib/resources/tokens.js.map b/lib/resources/tokens.js.map new file mode 100644 index 0000000..6328f31 --- /dev/null +++ b/lib/resources/tokens.js.map @@ -0,0 +1 @@ +{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/resources/tokens.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,oBAA4B,SAAQ,4BAAY;IAC9C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,QAAkB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/webhooks.d.ts b/lib/resources/webhooks.d.ts new file mode 100644 index 0000000..e6dea57 --- /dev/null +++ b/lib/resources/webhooks.d.ts @@ -0,0 +1,12 @@ +import { BaseResource } from '../base-resource'; +import type { HttpClient } from '../http-client'; +import type { Callback, OpenpayConfig } from '../types'; +export declare class WebhooksResource extends BaseResource { + constructor(config: OpenpayConfig, httpClient: HttpClient); + create(data: unknown, callback: Callback): void; + verify(webhookId: string, verificationCode: string, callback: Callback): void; + get(webhookId: string, callback: Callback): void; + delete(webhookId: string, callback: Callback): void; + list(callback: Callback): void; +} +//# sourceMappingURL=webhooks.d.ts.map \ No newline at end of file diff --git a/lib/resources/webhooks.d.ts.map b/lib/resources/webhooks.d.ts.map new file mode 100644 index 0000000..5e863e2 --- /dev/null +++ b/lib/resources/webhooks.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAO5E;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7B;CACF"} \ No newline at end of file diff --git a/lib/resources/webhooks.js b/lib/resources/webhooks.js new file mode 100644 index 0000000..71e3b9d --- /dev/null +++ b/lib/resources/webhooks.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WebhooksResource = void 0; +const base_resource_1 = require("../base-resource"); +class WebhooksResource extends base_resource_1.BaseResource { + constructor(config, httpClient) { + super(config, httpClient, `${config.merchantId}/webhooks`); + } + create(data, callback) { + this.request('POST', this.url(), data, callback); + } + verify(webhookId, verificationCode, callback) { + this.request('POST', this.url(`${webhookId}/verify/${verificationCode}`), '{}', callback); + } + get(webhookId, callback) { + this.request('GET', this.url(webhookId), undefined, callback); + } + delete(webhookId, callback) { + this.request('DELETE', this.url(webhookId), undefined, callback); + } + list(callback) { + this.request('GET', this.url(), undefined, callback); + } +} +exports.WebhooksResource = WebhooksResource; +//# sourceMappingURL=webhooks.js.map \ No newline at end of file diff --git a/lib/resources/webhooks.js.map b/lib/resources/webhooks.js.map new file mode 100644 index 0000000..7b6d550 --- /dev/null +++ b/lib/resources/webhooks.js.map @@ -0,0 +1 @@ +{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,sBAA8B,SAAQ,4BAAY;IAChD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,gBAAwB,EAAE,QAAkB;QACpE,IAAI,CAAC,OAAO,CACV,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,WAAW,gBAAgB,EAAE,CAAC,EACnD,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,QAAkB;QAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/stringify-params.d.ts b/lib/stringify-params.d.ts new file mode 100644 index 0000000..037d8bf --- /dev/null +++ b/lib/stringify-params.d.ts @@ -0,0 +1,12 @@ +import type { QueryParams } from './types'; +/** + * Converts a plain object to a query string with `?` prefix. + * Returns an empty string when params is undefined, null, or empty. + */ +export declare function stringifyParams(params: QueryParams | undefined | null): string; +/** + * Detect whether a value is a plain, non-array, non-null object + * with at least one key — used by list-method overload resolution. + */ +export declare function isPlainObjectWithKeys(value: unknown): value is Record; +//# sourceMappingURL=stringify-params.d.ts.map \ No newline at end of file diff --git a/lib/stringify-params.d.ts.map b/lib/stringify-params.d.ts.map new file mode 100644 index 0000000..5d018a4 --- /dev/null +++ b/lib/stringify-params.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"stringify-params.d.ts","sourceRoot":"","sources":["../src/stringify-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAY9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOtF"} \ No newline at end of file diff --git a/lib/stringify-params.js b/lib/stringify-params.js new file mode 100644 index 0000000..19b2f9e --- /dev/null +++ b/lib/stringify-params.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.stringifyParams = stringifyParams; +exports.isPlainObjectWithKeys = isPlainObjectWithKeys; +/** + * Converts a plain object to a query string with `?` prefix. + * Returns an empty string when params is undefined, null, or empty. + */ +function stringifyParams(params) { + if (params == null || typeof params !== 'object' || Array.isArray(params)) { + return ''; + } + const entries = Object.entries(params); + if (entries.length === 0) { + return ''; + } + const parts = entries.map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`); + return '?' + parts.join('&'); +} +/** + * Detect whether a value is a plain, non-array, non-null object + * with at least one key — used by list-method overload resolution. + */ +function isPlainObjectWithKeys(value) { + return (typeof value === 'object' && + value !== null && + !Array.isArray(value) && + Object.keys(value).length > 0); +} +//# sourceMappingURL=stringify-params.js.map \ No newline at end of file diff --git a/lib/stringify-params.js.map b/lib/stringify-params.js.map new file mode 100644 index 0000000..e8efc6b --- /dev/null +++ b/lib/stringify-params.js.map @@ -0,0 +1 @@ +{"version":3,"file":"stringify-params.js","sourceRoot":"","sources":["../src/stringify-params.ts"],"names":[],"mappings":";;;;AAEA;;;GAGG;AACH,yBAAgC,MAAsC;IACpE,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,+BAAsC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/lib/types.d.ts b/lib/types.d.ts new file mode 100644 index 0000000..1fad313 --- /dev/null +++ b/lib/types.d.ts @@ -0,0 +1,170 @@ +export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'; +export interface RequestSpec { + apiUrl: string; + requestData: { + method: HttpMethod; + json?: unknown; + }; +} +export interface OpenpayConfig { + merchantId: string; + privateKey: string; + isSandbox: boolean; + timeout: number; +} +export type Callback = (error: Error | null, body: T | null, response: HttpResponse | null) => void; +export interface HttpResponse { + statusCode: number; + headers: Record; +} +export type CountryCode = 'mx' | 'pe' | 'co'; +export type QueryParams = Record; +export interface OpenpayResource { + id: string; + [key: string]: unknown; +} +export interface ChargeRequest { + method: 'card' | 'bank_account' | 'store'; + amount: number; + description: string; + card?: CardRequest; + source_id?: string; + capture?: boolean; + currency?: string; + device_session_id?: string; + customer?: CustomerRef; + confirm?: boolean; + send_email?: boolean; + redirect_url?: string; + use_3d_secure?: boolean; + metadata?: Record; +} +export interface CardRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; +} +export interface CustomerRef { + id?: string; + name: string; + email?: string; + phone_number?: string; + requires_account?: boolean; + address?: Address; +} +export interface Address { + city?: string; + country_code?: string; + line1?: string; + line2?: string; + line3?: string; + postal_code?: string; + state?: string; +} +export interface CaptureRequest { + amount?: number; +} +export interface RefundRequest { + description?: string; + amount?: number; +} +export interface PayoutRequest { + method: 'card' | 'bank_account'; + destination_id?: string; + amount: number; + description: string; + card?: CardRequest; + bank_account?: BankAccountRequest; +} +export interface BankAccountRequest { + clabe: string; + holder_name: string; + bank_code?: string; + bank_name?: string; +} +export interface CustomerRequest { + name: string; + email?: string; + phone_number?: string; + requires_account?: boolean; + address?: Address; + external_id?: string; + status?: string; +} +export interface CardCreateRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; +} +export interface BankAccountCreateRequest { + clabe: string; + holder_name: string; + bank_code?: string; + bank_name?: string; + alias?: string; +} +export interface PlanRequest { + name: string; + amount: number; + repeat_every: number; + repeat_unit: 'day' | 'week' | 'month' | 'year'; + retry_times?: number; + status_after_retry?: 'cancelled' | 'unpaid'; + trial_days?: number; + currency?: string; +} +export interface SubscriptionRequest { + plan_id: string; + card_id?: string; + token_id?: string; + trial_days?: number; + trial_end_date?: string; + coupon_id?: string; +} +export interface WebhookRequest { + url: string; + event_types: string[]; +} +export interface TokenRequest { + card_number: string; + holder_name: string; + expiration_year: string; + expiration_month: string; + cvv2: string; + address?: Address; +} +export interface CheckoutRequest { + amount: number; + description: string; + order_id?: string; + currency?: string; + customer?: CustomerRef; + send_email?: boolean; + redirect_url?: string; + confirm?: boolean; + iva?: number; + metadata?: Record; + expires_at?: string; + needs_shipping_contact?: boolean; + type?: 'redirect' | 'modal' | 'integration'; +} +export interface PseRequest { + method: ' bank_account'; + amount: number; + description: string; + customer?: CustomerRef; + bank_code: string; + redirect_url?: string; +} +export interface StoreListParams { + lte?: string; + gte?: string; + limit?: number; + offset?: number; + [key: string]: string | number | undefined; +} +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/lib/types.d.ts.map b/lib/types.d.ts.map new file mode 100644 index 0000000..02f2539 --- /dev/null +++ b/lib/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types.js b/lib/types.js new file mode 100644 index 0000000..71faed7 --- /dev/null +++ b/lib/types.js @@ -0,0 +1,4 @@ +"use strict"; +// ── HTTP & Request Types ─────────────────────────────────────────── +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/types.js.map b/lib/types.js.map new file mode 100644 index 0000000..2e000b6 --- /dev/null +++ b/lib/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,sEAAsE"} \ No newline at end of file diff --git a/lib/url-utils.d.ts b/lib/url-utils.d.ts index 69c759a..c174ce2 100644 --- a/lib/url-utils.d.ts +++ b/lib/url-utils.d.ts @@ -1,2 +1,6 @@ +/** + * Escapes square brackets in URLs so they're safe for Openpay's API + * (which uses bracket notation in query params, e.g. creation[gte]). + */ export declare function escapeBrackets(url: string): string; //# sourceMappingURL=url-utils.d.ts.map \ No newline at end of file diff --git a/lib/url-utils.d.ts.map b/lib/url-utils.d.ts.map index 1e0c9d1..4e8a3ad 100644 --- a/lib/url-utils.d.ts.map +++ b/lib/url-utils.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKlD"} \ No newline at end of file +{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD"} \ No newline at end of file diff --git a/lib/url-utils.js b/lib/url-utils.js index 087856c..73781dc 100644 --- a/lib/url-utils.js +++ b/lib/url-utils.js @@ -1,10 +1,13 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.escapeBrackets = escapeBrackets; +/** + * Escapes square brackets in URLs so they're safe for Openpay's API + * (which uses bracket notation in query params, e.g. creation[gte]). + */ function escapeBrackets(url) { - url = url.replace(new RegExp('\\[', 'g'), encodeURI('[')); - url = url.replace(new RegExp('\\]', 'g'), encodeURI(']')); - console.log('3:', url); - return url; + let result = url.replace(/\[/g, encodeURI('[')); + result = result.replace(/\]/g, encodeURI(']')); + return result; } //# sourceMappingURL=url-utils.js.map \ No newline at end of file diff --git a/lib/url-utils.js.map b/lib/url-utils.js.map index 07d64f6..d71e56f 100644 --- a/lib/url-utils.js.map +++ b/lib/url-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;AAAA,wBAA+B,GAAW;IACtC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvB,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file +{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,wBAA+B,GAAW;IACxC,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"} \ No newline at end of file From 11d979edaed2be81a624baba5d49f4eff66c143c Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:50:07 -0600 Subject: [PATCH 09/21] docs: update README for v3 TypeScript SOLID refactor - Add Requirements section (Node >=20, TypeScript optional) - Add Quick Start with JavaScript and TypeScript examples - Add constructor parameters table with country code - Add Architecture section showing file tree and SOLID principles - Add Upgrading from v2.x migration guide - Update Development section with build step - Remove duplicate Configuration/Development sections - Keep all existing per-country API examples intact --- README.md | 213 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 173 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index c52d8f1..9fbfa79 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,83 @@ ![Openpay nodejs](https://www.openpay.mx/img/github/nodejs.jpg) +> **📦 v3.x (this branch):** Full TypeScript rewrite with strict mode, SOLID architecture, +> typed interfaces for every resource, and Node.js ≥ 20 LTS. +> The callback API is 100 % backwards-compatible with v2.x. +> See [Upgrading from v2.x](#upgrading-from-v2x) below. + +## Requirements + +- **Node.js ≥ 20.0.0** (active LTS) +- TypeScript ≥ 5.x (optional — types are bundled) + ## Installation -`npm install openpay` +```bash +npm install openpay +``` + +## Quick Start + +### JavaScript (callback API — backwards compatible) + +```js +var Openpay = require('openpay'); +var openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); + +openpay.charges.create({ + method: 'card', + card: { + card_number: '4111111111111111', + holder_name: 'John Doe', + expiration_year: '28', + expiration_month: '12', + cvv2: '110' + }, + amount: 200.00, + description: 'Service Charge' +}, function (error, body, response) { + if (error) return console.error(error); + console.log('Charge created:', body.id); +}); +``` + +### TypeScript (typed — zero `any`) + +```ts +import Openpay from 'openpay'; +import type { + ChargeRequest, + CustomerRequest, + PayoutRequest, + Callback, +} from 'openpay/types'; +import { OpenpayError } from 'openpay/errors'; + +const openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); + +// All request data is fully typed +const charge: ChargeRequest = { + method: 'card', + card: { + card_number: '4111111111111111', + holder_name: 'John Doe', + expiration_year: '28', + expiration_month: '12', + cvv2: '110', + }, + amount: 200.00, + description: 'Service Charge', +}; + +openpay.charges.create(charge, (error, body, response) => { + if (error instanceof OpenpayError) { + console.error(`Openpay ${error.statusCode}: ${error.description}`); + return; + } + // body is typed as `unknown` — narrow it with your own guards + console.log('Charge created:', (body as Record).id); +}); +``` ## Documentation @@ -11,19 +86,107 @@ Full API documentation available at http://docs.openpay.mx/. ## Overview ```js -//class +// Import var Openpay = require('openpay'); -//instantiation -var openpay = new Openpay(' your merchant id ', ' your private key ', [ isProduction ]); -//use the api -openpay.< resource_name >.< method_name >( ... ) +// or: import Openpay from 'openpay'; + +// Instantiation (country code is optional, defaults to 'mx') +var openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); +// merchantId privateKey country isProduction + +// Use any resource +openpay..(params..., callback); ``` -All methods accept an optional callback as last argument. +### Constructor parameters + +| Param | Type | Required | Default | Description | +|-------|------|----------|---------|-------------| +| `merchantId` | `string` | ✅ | — | Your Openpay merchant ID | +| `privateKey` | `string` | ✅ | — | Your Openpay private key (`sk_...`) | +| `countryCode` | `'mx' \| 'pe' \| 'co'` | — | `'mx'` | Country API endpoint | +| `isProductionReady` | `boolean` | — | `false` | `true` = production, `false` = sandbox | + +All methods accept a callback as the **last** argument. + +The callback signature is `function(error, body, response)`: +- `error` — `null` when the response status is 200, 201, or 204; otherwise an `Error` (or `OpenpayError` in v3) +- `body` — the parsed JSON response body (`null` on error) +- `response` — `{ statusCode, headers }` + +## Architecture (v3.x) + +The library follows **SOLID** principles and clean TypeScript patterns: + +``` +src/ + openpay.ts # Openpay client class (~170 lines) + base-resource.ts # Abstract base for all resources + http-client.ts # HttpClient interface + urllib implementation (DIP) + types.ts # Typed interfaces for all request/response shapes + errors.ts # OpenpayError, NetworkError, TimeoutError + stringify-params.ts # Native ES2022 query-string builder (no underscore) + url-utils.ts # URL bracket escaping + resources/ + merchant.ts # GET /{merchantId} + charges.ts # POST /{merchantId}/charges ... + payouts.ts # POST /{merchantId}/payouts ... + fees.ts # POST /{merchantId}/fees ... + plans.ts # CRUD /{merchantId}/plans ... + cards.ts # CRUD /{merchantId}/cards ... + customers.ts # CRUD + 6 sub-resources (cards, charges, transfers, ...) + webhooks.ts # CRUD /{merchantId}/webhooks ... + tokens.ts # CRUD /{merchantId}/tokens ... + checkouts.ts # CRUD /{merchantId}/checkouts ... + stores.ts # GET /stores (different base URL) + pse.ts # POST /{merchantId}/charges (PSE) + groups.ts # Group customers + charges + subscriptions +``` + +| Principle | How it's applied | +|-----------|-----------------| +| **S**ingle Responsibility | Each resource class handles exactly one API entity | +| **O**pen/Closed | New resources extend `BaseResource` without modifying existing code | +| **L**iskov Substitution | Every resource has a uniform `request()` / `list()` interface | +| **I**nterface Segregation | `HttpClient`, `Callback`, `OpenpayConfig` — small, focused contracts | +| **D**ependency Inversion | Resources depend on the `HttpClient` abstraction, not on `urllib` directly | + +## Upgrading from v2.x -The callback function should follow the format: function(error, body, response) {...}. -* error: null if the response status code is 200, 201, 204 -* body: null if the response status code is different from 200, 201, 204 +### What changed + +- **Node.js ≥ 20** is now required (was `>=0.6.x`) +- The library is written in **TypeScript** with `strict: true` +- The `underscore` dependency has been removed (native ES2022 replacements) +- Errors are `OpenpayError` instances with `.statusCode`, `.description`, `.category`, `.requestId` +- Constructor now accepts `countryCode` as the **third** argument: + +```js +// v2.x +new Openpay(merchantId, privateKey, isProduction); + +// v3.x +new Openpay(merchantId, privateKey, countryCode, isProduction); +``` + +### What still works + +- All `require('openpay')` / `require('../lib/openpay')` calls +- Every resource method and signature +- The `error, body, response` callback pattern +- `setMerchantId()`, `setPrivateKey()`, `setProductionReady()`, `setTimeout()` +- All three country codes: `'mx'`, `'pe'`, `'co'` + +## Development + +To run the tests you'll need your sandbox credentials from your +[Dashboard](https://sandbox-dashboard.openpay.mx/): + +```bash +npm install +npm run build # compile TypeScript → JavaScript +npm test # run the mocha test suite +``` ## Examples @@ -87,36 +250,6 @@ openpay.payouts.create(payout, function (error, body, response){ }); ``` -## Configuration -Before use the library will be necessary to set up your Merchant ID and Private key. - -```js -var Openpay = require('openpay'); -var openpay = new Openpay('your merchant id', 'your private key', 'mx', false); -openpay.setTimeout(30000); -``` - -In addition, you can set the merchant id, private key, and the mode like this - -```js -openpay.setMerchantId(' your merchant id '); -openpay.setPrivateKey(' your private key '); -openpay.setProductionReady(true) -``` - -Once configured the library, you can use it to interact with Openpay API services. - -## Development - -To run the tests you'll need your sandbox credentials: merchant id and private key from your [Dashboard](https://sandbox-dashboard.openpay.mx/): - -```bash -$ npm install -g mocha -$ npm test -``` - -# Implementation - ## Usage for Mexico ### Bank accounts From 80cf2450897de67aff14b37d78aa5421ba67d702 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 10:53:32 -0600 Subject: [PATCH 10/21] release: prepare @neo-cheems/openpay for npm publish - Rename package to @neo-cheems/openpay (scoped) - Remove unused underscore dependency - Add publishConfig.access: public for scoped package - Update repository, bugs, homepage URLs - Update README with new install/require paths --- README.md | 18 +++++++++--------- package.json | 20 +++++++++++++------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 9fbfa79..bce028b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ ## Installation ```bash -npm install openpay +npm install @neo-cheems/openpay ``` ## Quick Start @@ -21,7 +21,7 @@ npm install openpay ### JavaScript (callback API — backwards compatible) ```js -var Openpay = require('openpay'); +var Openpay = require('@neo-cheems/openpay'); var openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); openpay.charges.create({ @@ -44,14 +44,14 @@ openpay.charges.create({ ### TypeScript (typed — zero `any`) ```ts -import Openpay from 'openpay'; +import Openpay from '@neo-cheems/openpay'; import type { ChargeRequest, CustomerRequest, PayoutRequest, Callback, -} from 'openpay/types'; -import { OpenpayError } from 'openpay/errors'; +} from '@neo-cheems/openpay/types'; +import { OpenpayError } from '@neo-cheems/openpay/errors'; const openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); @@ -87,8 +87,8 @@ Full API documentation available at http://docs.openpay.mx/. ```js // Import -var Openpay = require('openpay'); -// or: import Openpay from 'openpay'; +var Openpay = require('@neo-cheems/openpay'); +// or: import Openpay from '@neo-cheems/openpay'; // Instantiation (country code is optional, defaults to 'mx') var openpay = new Openpay('your_merchant_id', 'your_private_key', 'mx', false); @@ -163,7 +163,7 @@ src/ ```js // v2.x -new Openpay(merchantId, privateKey, isProduction); +new Openpay(merchantId, privateKey, isProduction); // old v2 signature // v3.x new Openpay(merchantId, privateKey, countryCode, isProduction); @@ -171,7 +171,7 @@ new Openpay(merchantId, privateKey, countryCode, isProduction); ### What still works -- All `require('openpay')` / `require('../lib/openpay')` calls +- All `require('@neo-cheems/openpay')` / `require('openpay')` calls (legacy compat) - Every resource method and signature - The `error, body, response` callback pattern - `setMerchantId()`, `setPrivateKey()`, `setProductionReady()`, `setTimeout()` diff --git a/package.json b/package.json index b72b7b6..e0934c1 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,25 @@ { - "name": "openpay", - "description": "Openpay API client for Node.js — typed, promise-friendly, and battle-tested", + "name": "@neo-cheems/openpay", + "description": "Openpay API client for Node.js — typed, SOLID, and battle-tested", "version": "3.0.0", "license": "Apache-2.0", - "author": "Openpay", + "author": "neo-cheems", "repository": { "type": "git", - "url": "https://github.com/openpay/openpay-node" + "url": "https://github.com/tesuser4444/openpay-node-ts" }, + "bugs": { + "url": "https://github.com/tesuser4444/openpay-node-ts/issues" + }, + "homepage": "https://github.com/tesuser4444/openpay-node-ts#readme", "keywords": [ "openpay", "payments", "api", "mexico", "colombia", - "peru" + "peru", + "typescript" ], "engines": { "node": ">=20.0.0" @@ -24,13 +29,14 @@ "files": [ "lib/**/*" ], + "publishConfig": { + "access": "public" + }, "dependencies": { - "underscore": "1.13.6", "urllib": "^2.36.1" }, "devDependencies": { "@types/node": "^26.1.1", - "@types/underscore": "^1.13.0", "mocha": "10.2.0", "typescript": "^7.0.2" }, From 5bed0a01d94a04e5bbccdb903ed29a5420d6da69 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Fri, 17 Jul 2026 11:01:59 -0600 Subject: [PATCH 11/21] release: bump version to 4.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - package.json: 3.0.0 → 4.0.0 - README: v3.x → v4.x references --- README.md | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bce028b..f545a70 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![Openpay nodejs](https://www.openpay.mx/img/github/nodejs.jpg) -> **📦 v3.x (this branch):** Full TypeScript rewrite with strict mode, SOLID architecture, +> **📦 v4.x (this branch):** Full TypeScript rewrite with strict mode, SOLID architecture, > typed interfaces for every resource, and Node.js ≥ 20 LTS. > The callback API is 100 % backwards-compatible with v2.x. > See [Upgrading from v2.x](#upgrading-from-v2x) below. @@ -110,11 +110,11 @@ openpay..(params..., callback); All methods accept a callback as the **last** argument. The callback signature is `function(error, body, response)`: -- `error` — `null` when the response status is 200, 201, or 204; otherwise an `Error` (or `OpenpayError` in v3) +- `error` — `null` when the response status is 200, 201, or 204; otherwise an `Error` (or `OpenpayError` in v4) - `body` — the parsed JSON response body (`null` on error) - `response` — `{ statusCode, headers }` -## Architecture (v3.x) +## Architecture (v4.x) The library follows **SOLID** principles and clean TypeScript patterns: @@ -165,7 +165,7 @@ src/ // v2.x new Openpay(merchantId, privateKey, isProduction); // old v2 signature -// v3.x +// v4.x new Openpay(merchantId, privateKey, countryCode, isProduction); ``` diff --git a/package.json b/package.json index e0934c1..d07e48a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@neo-cheems/openpay", "description": "Openpay API client for Node.js — typed, SOLID, and battle-tested", - "version": "3.0.0", + "version": "4.0.0", "license": "Apache-2.0", "author": "neo-cheems", "repository": { From bc6ef906630d9fd3f4044961e7db2c7214665e9a Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:08:15 -0600 Subject: [PATCH 12/21] build: untrack lib/ directory (already in .gitignore) lib/ contains compiled JS output. It was already in .gitignore but was previously committed, so git still tracked it. This commit removes it from tracking while keeping the files on disk. --- lib/base-resource.d.ts | 34 ------- lib/base-resource.d.ts.map | 1 - lib/base-resource.js | 53 ---------- lib/base-resource.js.map | 1 - lib/errors.d.ts | 19 ---- lib/errors.d.ts.map | 1 - lib/errors.js | 57 ----------- lib/errors.js.map | 1 - lib/http-client.d.ts | 14 --- lib/http-client.d.ts.map | 1 - lib/http-client.js | 109 -------------------- lib/http-client.js.map | 1 - lib/index.d.ts | 3 - lib/index.d.ts.map | 1 - lib/index.js | 4 - lib/index.js.map | 1 - lib/openpay.d.ts | 60 ----------- lib/openpay.d.ts.map | 1 - lib/openpay.js | 142 -------------------------- lib/openpay.js.map | 1 - lib/resources/cards.d.ts | 12 --- lib/resources/cards.d.ts.map | 1 - lib/resources/cards.js | 24 ----- lib/resources/cards.js.map | 1 - lib/resources/charges.d.ts | 18 ---- lib/resources/charges.d.ts.map | 1 - lib/resources/charges.js | 31 ------ lib/resources/charges.js.map | 1 - lib/resources/checkouts.d.ts | 12 --- lib/resources/checkouts.d.ts.map | 1 - lib/resources/checkouts.js | 24 ----- lib/resources/checkouts.js.map | 1 - lib/resources/customers.d.ts | 68 ------------- lib/resources/customers.d.ts.map | 1 - lib/resources/customers.js | 150 --------------------------- lib/resources/customers.js.map | 1 - lib/resources/fees.d.ts | 10 -- lib/resources/fees.d.ts.map | 1 - lib/resources/fees.js | 18 ---- lib/resources/fees.js.map | 1 - lib/resources/groups.d.ts | 51 ---------- lib/resources/groups.d.ts.map | 1 - lib/resources/groups.js | 113 -------------------- lib/resources/groups.js.map | 1 - lib/resources/merchant.d.ts | 11 -- lib/resources/merchant.d.ts.map | 1 - lib/resources/merchant.js | 17 ---- lib/resources/merchant.js.map | 1 - lib/resources/payouts.d.ts | 11 -- lib/resources/payouts.d.ts.map | 1 - lib/resources/payouts.js | 21 ---- lib/resources/payouts.js.map | 1 - lib/resources/plans.d.ts | 17 ---- lib/resources/plans.d.ts.map | 1 - lib/resources/plans.js | 57 ----------- lib/resources/plans.js.map | 1 - lib/resources/pse.d.ts | 9 -- lib/resources/pse.d.ts.map | 1 - lib/resources/pse.js | 15 --- lib/resources/pse.js.map | 1 - lib/resources/stores.d.ts | 9 -- lib/resources/stores.d.ts.map | 1 - lib/resources/stores.js | 17 ---- lib/resources/stores.js.map | 1 - lib/resources/tokens.d.ts | 10 -- lib/resources/tokens.d.ts.map | 1 - lib/resources/tokens.js | 20 ---- lib/resources/tokens.js.map | 1 - lib/resources/webhooks.d.ts | 12 --- lib/resources/webhooks.d.ts.map | 1 - lib/resources/webhooks.js | 26 ----- lib/resources/webhooks.js.map | 1 - lib/stringify-params.d.ts | 12 --- lib/stringify-params.d.ts.map | 1 - lib/stringify-params.js | 30 ------ lib/stringify-params.js.map | 1 - lib/types.d.ts | 170 ------------------------------- lib/types.d.ts.map | 1 - lib/types.js | 4 - lib/types.js.map | 1 - lib/url-utils.d.ts | 6 -- lib/url-utils.d.ts.map | 1 - lib/url-utils.js | 13 --- lib/url-utils.js.map | 1 - 84 files changed, 1555 deletions(-) delete mode 100644 lib/base-resource.d.ts delete mode 100644 lib/base-resource.d.ts.map delete mode 100644 lib/base-resource.js delete mode 100644 lib/base-resource.js.map delete mode 100644 lib/errors.d.ts delete mode 100644 lib/errors.d.ts.map delete mode 100644 lib/errors.js delete mode 100644 lib/errors.js.map delete mode 100644 lib/http-client.d.ts delete mode 100644 lib/http-client.d.ts.map delete mode 100644 lib/http-client.js delete mode 100644 lib/http-client.js.map delete mode 100644 lib/index.d.ts delete mode 100644 lib/index.d.ts.map delete mode 100644 lib/index.js delete mode 100644 lib/index.js.map delete mode 100644 lib/openpay.d.ts delete mode 100644 lib/openpay.d.ts.map delete mode 100644 lib/openpay.js delete mode 100644 lib/openpay.js.map delete mode 100644 lib/resources/cards.d.ts delete mode 100644 lib/resources/cards.d.ts.map delete mode 100644 lib/resources/cards.js delete mode 100644 lib/resources/cards.js.map delete mode 100644 lib/resources/charges.d.ts delete mode 100644 lib/resources/charges.d.ts.map delete mode 100644 lib/resources/charges.js delete mode 100644 lib/resources/charges.js.map delete mode 100644 lib/resources/checkouts.d.ts delete mode 100644 lib/resources/checkouts.d.ts.map delete mode 100644 lib/resources/checkouts.js delete mode 100644 lib/resources/checkouts.js.map delete mode 100644 lib/resources/customers.d.ts delete mode 100644 lib/resources/customers.d.ts.map delete mode 100644 lib/resources/customers.js delete mode 100644 lib/resources/customers.js.map delete mode 100644 lib/resources/fees.d.ts delete mode 100644 lib/resources/fees.d.ts.map delete mode 100644 lib/resources/fees.js delete mode 100644 lib/resources/fees.js.map delete mode 100644 lib/resources/groups.d.ts delete mode 100644 lib/resources/groups.d.ts.map delete mode 100644 lib/resources/groups.js delete mode 100644 lib/resources/groups.js.map delete mode 100644 lib/resources/merchant.d.ts delete mode 100644 lib/resources/merchant.d.ts.map delete mode 100644 lib/resources/merchant.js delete mode 100644 lib/resources/merchant.js.map delete mode 100644 lib/resources/payouts.d.ts delete mode 100644 lib/resources/payouts.d.ts.map delete mode 100644 lib/resources/payouts.js delete mode 100644 lib/resources/payouts.js.map delete mode 100644 lib/resources/plans.d.ts delete mode 100644 lib/resources/plans.d.ts.map delete mode 100644 lib/resources/plans.js delete mode 100644 lib/resources/plans.js.map delete mode 100644 lib/resources/pse.d.ts delete mode 100644 lib/resources/pse.d.ts.map delete mode 100644 lib/resources/pse.js delete mode 100644 lib/resources/pse.js.map delete mode 100644 lib/resources/stores.d.ts delete mode 100644 lib/resources/stores.d.ts.map delete mode 100644 lib/resources/stores.js delete mode 100644 lib/resources/stores.js.map delete mode 100644 lib/resources/tokens.d.ts delete mode 100644 lib/resources/tokens.d.ts.map delete mode 100644 lib/resources/tokens.js delete mode 100644 lib/resources/tokens.js.map delete mode 100644 lib/resources/webhooks.d.ts delete mode 100644 lib/resources/webhooks.d.ts.map delete mode 100644 lib/resources/webhooks.js delete mode 100644 lib/resources/webhooks.js.map delete mode 100644 lib/stringify-params.d.ts delete mode 100644 lib/stringify-params.d.ts.map delete mode 100644 lib/stringify-params.js delete mode 100644 lib/stringify-params.js.map delete mode 100644 lib/types.d.ts delete mode 100644 lib/types.d.ts.map delete mode 100644 lib/types.js delete mode 100644 lib/types.js.map delete mode 100644 lib/url-utils.d.ts delete mode 100644 lib/url-utils.d.ts.map delete mode 100644 lib/url-utils.js delete mode 100644 lib/url-utils.js.map diff --git a/lib/base-resource.d.ts b/lib/base-resource.d.ts deleted file mode 100644 index b2cd486..0000000 --- a/lib/base-resource.d.ts +++ /dev/null @@ -1,34 +0,0 @@ -import type { Callback, HttpMethod, OpenpayConfig, QueryParams } from './types'; -import type { HttpClient } from './http-client'; -/** - * Abstract base for every Openpay API resource. - * - * Provides: - * - `request()` helper for HTTP calls - * - `list()` overload helper (data-or-callback resolution) - * - Promise + callback support methods - */ -export declare abstract class BaseResource { - protected readonly config: OpenpayConfig; - protected readonly httpClient: HttpClient; - protected readonly baseUrl: string; - constructor(config: OpenpayConfig, httpClient: HttpClient, baseUrl: string); - /** Issue an HTTP request to the API. */ - protected request(method: HttpMethod, path: string, body: unknown | undefined, callback: Callback): void; - /** - * Resolves the common `list(data, callback)` / `list(callback)` overload. - * - * Returns: - * - `query` — URL query string (with `?` prefix, or `''`) - * - `cb` — the resolved callback - */ - protected resolveListParams(dataOrCb: QueryParams | Callback | undefined, cb?: Callback): { - query: string; - cb: Callback | undefined; - }; - /** Build a sub-path under this resource's base URL. */ - protected url(segment?: string): string; - /** Build a URL with a query string appended. */ - protected urlWithQuery(segment: string, query: string): string; -} -//# sourceMappingURL=base-resource.d.ts.map \ No newline at end of file diff --git a/lib/base-resource.d.ts.map b/lib/base-resource.d.ts.map deleted file mode 100644 index 4451ca5..0000000 --- a/lib/base-resource.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base-resource.d.ts","sourceRoot":"","sources":["../src/base-resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;GAOG;AACH,8BAAsB,YAAY;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IACzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEnC,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAIzE;IAED,wCAAwC;IACxC,SAAS,CAAC,OAAO,CACf,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAEN;IAED;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CACzB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,EAC5C,EAAE,CAAC,EAAE,QAAQ,GACZ;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,QAAQ,GAAG,SAAS,CAAA;KAAE,CAS7C;IAED,uDAAuD;IACvD,SAAS,CAAC,GAAG,CAAC,OAAO,SAAK,GAAG,MAAM,CAElC;IAED,gDAAgD;IAChD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;CACF"} \ No newline at end of file diff --git a/lib/base-resource.js b/lib/base-resource.js deleted file mode 100644 index 7927cf3..0000000 --- a/lib/base-resource.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.BaseResource = void 0; -const stringify_params_1 = require("./stringify-params"); -/** - * Abstract base for every Openpay API resource. - * - * Provides: - * - `request()` helper for HTTP calls - * - `list()` overload helper (data-or-callback resolution) - * - Promise + callback support methods - */ -class BaseResource { - config; - httpClient; - baseUrl; - constructor(config, httpClient, baseUrl) { - this.config = config; - this.httpClient = httpClient; - this.baseUrl = baseUrl; - } - /** Issue an HTTP request to the API. */ - request(method, path, body, callback) { - this.httpClient.request(method, path, body, this.config, callback); - } - /** - * Resolves the common `list(data, callback)` / `list(callback)` overload. - * - * Returns: - * - `query` — URL query string (with `?` prefix, or `''`) - * - `cb` — the resolved callback - */ - resolveListParams(dataOrCb, cb) { - if (typeof dataOrCb === 'function') { - return { query: '', cb: dataOrCb }; - } - if (typeof cb === 'function') { - const q = (0, stringify_params_1.isPlainObjectWithKeys)(dataOrCb) ? (0, stringify_params_1.stringifyParams)(dataOrCb) : ''; - return { query: q, cb }; - } - return { query: '', cb: undefined }; - } - /** Build a sub-path under this resource's base URL. */ - url(segment = '') { - return segment ? `${this.baseUrl}/${segment}` : this.baseUrl; - } - /** Build a URL with a query string appended. */ - urlWithQuery(segment, query) { - return query ? `${this.baseUrl}/${segment}${query}` : `${this.baseUrl}/${segment}`; - } -} -exports.BaseResource = BaseResource; -//# sourceMappingURL=base-resource.js.map \ No newline at end of file diff --git a/lib/base-resource.js.map b/lib/base-resource.js.map deleted file mode 100644 index 6794f6e..0000000 --- a/lib/base-resource.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"base-resource.js","sourceRoot":"","sources":["../src/base-resource.ts"],"names":[],"mappings":";;;AAEA,yDAA4E;AAE5E;;;;;;;GAOG;AACH;IACqB,MAAM,CAAgB;IACtB,UAAU,CAAa;IACvB,OAAO,CAAS;IAEnC,YAAY,MAAqB,EAAE,UAAsB,EAAE,OAAe;QACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,wCAAwC;IAC9B,OAAO,CACf,MAAkB,EAClB,IAAY,EACZ,IAAyB,EACzB,QAAkB;QAElB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;OAMG;IACO,iBAAiB,CACzB,QAA4C,EAC5C,EAAa;QAEb,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,QAAoB,EAAE,CAAC;QACjD,CAAC;QACD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,IAAA,wCAAqB,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAA,kCAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,uDAAuD;IAC7C,GAAG,CAAC,OAAO,GAAG,EAAE;QACxB,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/D,CAAC;IAED,gDAAgD;IACtC,YAAY,CAAC,OAAe,EAAE,KAAa;QACnD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC;IACrF,CAAC;CACF"} \ No newline at end of file diff --git a/lib/errors.d.ts b/lib/errors.d.ts deleted file mode 100644 index da779c8..0000000 --- a/lib/errors.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export declare class OpenpayError extends Error { - readonly statusCode: number; - readonly body: unknown; - readonly category?: string | undefined; - readonly description?: string | undefined; - readonly requestId?: string | undefined; - constructor(message: string, statusCode: number, body: unknown, cause?: Error); - /** Whether this is a client error (4xx). */ - get isClientError(): boolean; - /** Whether this is a server error (5xx). */ - get isServerError(): boolean; -} -export declare class NetworkError extends OpenpayError { - constructor(cause: Error); -} -export declare class TimeoutError extends OpenpayError { - constructor(timeoutMs: number); -} -//# sourceMappingURL=errors.d.ts.map \ No newline at end of file diff --git a/lib/errors.d.ts.map b/lib/errors.d.ts.map deleted file mode 100644 index a639949..0000000 --- a/lib/errors.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,IAAI,EAAE,OAAO,CAAC;IAC9B,SAAgB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,SAAgB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,SAAgB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/C,YACE,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,KAAK,CAAC,EAAE,KAAK,EAmBd;IAED,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAE3B;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,KAAK,EAAE,KAAK,EAGvB;CACF;AAED,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,SAAS,EAAE,MAAM,EAG5B;CACF"} \ No newline at end of file diff --git a/lib/errors.js b/lib/errors.js deleted file mode 100644 index 6d86b38..0000000 --- a/lib/errors.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -// ── Custom Error Classes ─────────────────────────────────────────── -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TimeoutError = exports.NetworkError = exports.OpenpayError = void 0; -class OpenpayError extends Error { - statusCode; - body; - category; - description; - requestId; - constructor(message, statusCode, body, cause) { - super(message, { cause }); - this.name = 'OpenpayError'; - this.statusCode = statusCode; - // Extract details from the Openpay error body if possible - if (body !== null && typeof body === 'object') { - const b = body; - this.body = body; - const cat = b['category']; - const desc = b['description']; - const reqId = b['request_id']; - if (typeof cat === 'string') - this.category = cat; - if (typeof desc === 'string') - this.description = desc; - if (typeof reqId === 'string') - this.requestId = reqId; - } - else { - this.body = body; - } - } - /** Whether this is a client error (4xx). */ - get isClientError() { - return this.statusCode >= 400 && this.statusCode < 500; - } - /** Whether this is a server error (5xx). */ - get isServerError() { - return this.statusCode >= 500; - } -} -exports.OpenpayError = OpenpayError; -class NetworkError extends OpenpayError { - constructor(cause) { - super(`Network error: ${cause.message}`, 0, null, cause); - this.name = 'NetworkError'; - } -} -exports.NetworkError = NetworkError; -class TimeoutError extends OpenpayError { - constructor(timeoutMs) { - super(`Request timed out after ${timeoutMs}ms`, 408, null); - this.name = 'TimeoutError'; - } -} -exports.TimeoutError = TimeoutError; -//# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/lib/errors.js.map b/lib/errors.js.map deleted file mode 100644 index 593732b..0000000 --- a/lib/errors.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";AAAA,sEAAsE;;;AAEtE,kBAA0B,SAAQ,KAAK;IACrB,UAAU,CAAS;IACnB,IAAI,CAAU;IACd,QAAQ,CAAsB;IAC9B,WAAW,CAAsB;IACjC,SAAS,CAAsB;IAE/C,YACE,OAAe,EACf,UAAkB,EAClB,IAAa,EACb,KAAa;QAEb,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,0DAA0D;QAC1D,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,IAA+B,CAAC;YAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;YAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACzD,CAAC;IAED,4CAA4C;IAC5C,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC;IAChC,CAAC;CACF;;AAED,kBAA0B,SAAQ,YAAY;IAC5C,YAAY,KAAY;QACtB,KAAK,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;;AAED,kBAA0B,SAAQ,YAAY;IAC5C,YAAY,SAAiB;QAC3B,KAAK,CAAC,2BAA2B,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"} \ No newline at end of file diff --git a/lib/http-client.d.ts b/lib/http-client.d.ts deleted file mode 100644 index 2397cb0..0000000 --- a/lib/http-client.d.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { HttpMethod, OpenpayConfig, Callback } from './types'; -export interface HttpClient { - request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; -} -export declare class UrllibHttpClient implements HttpClient { - request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; - static BASE_URL: string; - static API_VERSION: string; - static SANDBOX_URL: string; -} -export declare class StoreHttpClient implements HttpClient { - request(method: HttpMethod, url: string, body: unknown | undefined, config: OpenpayConfig, callback: Callback): void; -} -//# sourceMappingURL=http-client.d.ts.map \ No newline at end of file diff --git a/lib/http-client.d.ts.map b/lib/http-client.d.ts.map deleted file mode 100644 index b8900fe..0000000 --- a/lib/http-client.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnE,MAAM,WAAW,UAAU;IACzB,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAAC;CACT;AAID,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAoCN;IAED,MAAM,CAAC,QAAQ,SAA4B;IAC3C,MAAM,CAAC,WAAW,SAAU;IAC5B,MAAM,CAAC,WAAW,SAAoC;CACvD;AAID,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CACL,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,QAAQ,GACjB,IAAI,CAoCN;CACF"} \ No newline at end of file diff --git a/lib/http-client.js b/lib/http-client.js deleted file mode 100644 index 3d78180..0000000 --- a/lib/http-client.js +++ /dev/null @@ -1,109 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || (function () { - var ownKeys = function(o) { - ownKeys = Object.getOwnPropertyNames || function (o) { - var ar = []; - for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; - return ar; - }; - return ownKeys(o); - }; - return function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); - __setModuleDefault(result, mod); - return result; - }; -})(); -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StoreHttpClient = exports.UrllibHttpClient = void 0; -const urllib = __importStar(require("urllib")); -const errors_1 = require("./errors"); -const url_utils_1 = require("./url-utils"); -// ── Urllib-based Implementation ──────────────────────────────────── -class UrllibHttpClient { - request(method, url, body, config, callback) { - const baseUrl = config.isSandbox - ? UrllibHttpClient.SANDBOX_URL + UrllibHttpClient.API_VERSION - : UrllibHttpClient.BASE_URL + UrllibHttpClient.API_VERSION; - const fullUrl = baseUrl + (0, url_utils_1.escapeBrackets)(url); - const options = { - auth: config.privateKey + ':', - method, - contentType: 'json', - timeout: config.timeout, - data: body, - dataType: 'json', - }; - urllib.request(fullUrl, options, (err, respBody, res) => { - if (err) { - callback(new errors_1.NetworkError(err), null, null); - return; - } - const resCode = res?.statusCode ?? 0; - const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; - if (isSuccess) { - callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); - } - else { - const openpayErr = new errors_1.OpenpayError(`HTTP ${resCode}`, resCode, respBody); - callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); - } - }); - } - static BASE_URL = 'https://api.openpay.mx'; - static API_VERSION = '/v1/'; - static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; -} -exports.UrllibHttpClient = UrllibHttpClient; -// ── Store HTTP Client (uses different base URL format) ───────────── -class StoreHttpClient { - request(method, url, body, config, callback) { - const baseUrl = config.isSandbox - ? UrllibHttpClient.SANDBOX_URL + '/' - : UrllibHttpClient.BASE_URL + '/'; - const fullUrl = baseUrl + (0, url_utils_1.escapeBrackets)(url); - const options = { - auth: config.privateKey + ':', - method, - contentType: 'json', - timeout: config.timeout, - data: body, - dataType: 'json', - }; - urllib.request(fullUrl, options, (err, respBody, res) => { - if (err) { - callback(new errors_1.NetworkError(err), null, null); - return; - } - const resCode = res?.statusCode ?? 0; - const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; - if (isSuccess) { - callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); - } - else { - const openpayErr = new errors_1.OpenpayError(`HTTP ${resCode}`, resCode, respBody); - callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); - } - }); - } -} -exports.StoreHttpClient = StoreHttpClient; -//# sourceMappingURL=http-client.js.map \ No newline at end of file diff --git a/lib/http-client.js.map b/lib/http-client.js.map deleted file mode 100644 index baab88e..0000000 --- a/lib/http-client.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.d.ts b/lib/index.d.ts deleted file mode 100644 index 2e44f1c..0000000 --- a/lib/index.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Openpay = require('./openpay'); -export = Openpay; -//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/lib/index.d.ts.map b/lib/index.d.ts.map deleted file mode 100644 index 603dc91..0000000 --- a/lib/index.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,GAAG,QAAQ,WAAW,CAAC,CAAC;SAC7B,OAAO"} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 35e4a99..0000000 --- a/lib/index.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -const Openpay = require("./openpay"); -module.exports = Openpay; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map deleted file mode 100644 index 0f43d1d..0000000 --- a/lib/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,MAAO,OAAO,wBAAwB;AACtC,iBAAS,OAAO,CAAC"} \ No newline at end of file diff --git a/lib/openpay.d.ts b/lib/openpay.d.ts deleted file mode 100644 index 02f9e86..0000000 --- a/lib/openpay.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { CountryCode } from './types'; -import { MerchantResource } from './resources/merchant'; -import { ChargesResource } from './resources/charges'; -import { PayoutsResource } from './resources/payouts'; -import { FeesResource } from './resources/fees'; -import { PlansResource } from './resources/plans'; -import { CardsResource } from './resources/cards'; -import { CustomersResource } from './resources/customers'; -import { WebhooksResource } from './resources/webhooks'; -import { TokensResource } from './resources/tokens'; -import { CheckoutsResource } from './resources/checkouts'; -import { StoresResource } from './resources/stores'; -import { PseResource } from './resources/pse'; -import { GroupsResource } from './resources/groups'; -/** - * Openpay API client. - * - * Usage (callback style, backward-compatible): - * ```js - * const openpay = new Openpay('merchantId', 'sk_xxx', 'mx', false); - * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); - * ``` - */ -declare class Openpay { - static BASE_URL: string; - static API_VERSION: string; - static SANDBOX_URL: string; - static SANDBOX_API_VERSION: string; - private config; - private apiHttpClient; - private storeHttpClient; - merchant: MerchantResource; - charges: ChargesResource; - payouts: PayoutsResource; - fees: FeesResource; - plans: PlansResource; - cards: CardsResource; - customers: CustomersResource; - webhooks: WebhooksResource; - tokens: TokensResource; - checkouts: CheckoutsResource; - stores: StoresResource; - pse: PseResource; - groups: GroupsResource; - constructor(merchantId: string, privateKey: string, countryCode?: CountryCode, isProductionReady?: boolean); - /** Change the merchant ID and rebuild resources. */ - setMerchantId(merchantId: string): void; - /** Change the private key and rebuild resources. */ - setPrivateKey(privateKey: string): void; - /** Toggle sandbox/production mode and rebuild resources. */ - setProductionReady(isProductionReady: boolean): void; - /** Change the HTTP request timeout and rebuild resources. */ - setTimeout(timeout: number): void; - /** Per-country base URL configuration. */ - setBaseUrl(countryCode: CountryCode): void; - /** Rebuild all resources after a config change. */ - private rebuildResources; -} -export = Openpay; -//# sourceMappingURL=openpay.d.ts.map \ No newline at end of file diff --git a/lib/openpay.d.ts.map b/lib/openpay.d.ts.map deleted file mode 100644 index fffcd8e..0000000 --- a/lib/openpay.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"openpay.d.ts","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,WAAW,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;GAQG;AACH,cAAM,OAAO;IAGX,MAAM,CAAC,QAAQ,SAA4B;IAC3C,MAAM,CAAC,WAAW,SAAU;IAC5B,MAAM,CAAC,WAAW,SAAoC;IACtD,MAAM,CAAC,mBAAmB,SAAU;IAIpC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,eAAe,CAAkB;IAIlC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,WAAW,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;IAI9B,YACE,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,WAAkB,EAC/B,iBAAiB,CAAC,EAAE,OAAO,EAkC5B;IAID,oDAAoD;IACpD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,oDAAoD;IACpD,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAGtC;IAED,4DAA4D;IAC5D,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAGnD;IAED,6DAA6D;IAC7D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGhC;IAED,0CAA0C;IAC1C,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,CAoBzC;IAID,mDAAmD;IACnD,OAAO,CAAC,gBAAgB;CAgBzB;SAEQ,OAAO"} \ No newline at end of file diff --git a/lib/openpay.js b/lib/openpay.js deleted file mode 100644 index d6ced11..0000000 --- a/lib/openpay.js +++ /dev/null @@ -1,142 +0,0 @@ -"use strict"; -const http_client_1 = require("./http-client"); -const merchant_1 = require("./resources/merchant"); -const charges_1 = require("./resources/charges"); -const payouts_1 = require("./resources/payouts"); -const fees_1 = require("./resources/fees"); -const plans_1 = require("./resources/plans"); -const cards_1 = require("./resources/cards"); -const customers_1 = require("./resources/customers"); -const webhooks_1 = require("./resources/webhooks"); -const tokens_1 = require("./resources/tokens"); -const checkouts_1 = require("./resources/checkouts"); -const stores_1 = require("./resources/stores"); -const pse_1 = require("./resources/pse"); -const groups_1 = require("./resources/groups"); -/** - * Openpay API client. - * - * Usage (callback style, backward-compatible): - * ```js - * const openpay = new Openpay('merchantId', 'sk_xxx', 'mx', false); - * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); - * ``` - */ -class Openpay { - // ── Static Base URLs (per-country, mutable for backward compat) ── - static BASE_URL = 'https://api.openpay.mx'; - static API_VERSION = '/v1/'; - static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; - static SANDBOX_API_VERSION = '/v1/'; - // ── Instance State ─────────────────────────────────────────────── - config; - apiHttpClient; - storeHttpClient; - // ── Resources (public API surface) ─────────────────────────────── - merchant; - charges; - payouts; - fees; - plans; - cards; - customers; - webhooks; - tokens; - checkouts; - stores; - pse; - groups; - // ── Constructor ────────────────────────────────────────────────── - constructor(merchantId, privateKey, countryCode = 'mx', isProductionReady) { - const isSandbox = !isProductionReady; - this.config = { - merchantId, - privateKey, - isSandbox, - timeout: 90_000, - }; - // Create HTTP clients (DIP: resources depend on these abstractions) - this.apiHttpClient = new http_client_1.UrllibHttpClient(); - this.storeHttpClient = new http_client_1.StoreHttpClient(); - // Set base URLs per country - this.setBaseUrl(countryCode); - // Instantiate resources & inject dependencies - this.merchant = new merchant_1.MerchantResource(this.config, this.apiHttpClient); - this.charges = new charges_1.ChargesResource(this.config, this.apiHttpClient); - this.payouts = new payouts_1.PayoutsResource(this.config, this.apiHttpClient); - this.fees = new fees_1.FeesResource(this.config, this.apiHttpClient); - this.plans = new plans_1.PlansResource(this.config, this.apiHttpClient); - this.cards = new cards_1.CardsResource(this.config, this.apiHttpClient); - this.customers = new customers_1.CustomersResource(this.config, this.apiHttpClient); - this.webhooks = new webhooks_1.WebhooksResource(this.config, this.apiHttpClient); - this.tokens = new tokens_1.TokensResource(this.config, this.apiHttpClient); - this.checkouts = new checkouts_1.CheckoutsResource(this.config, this.apiHttpClient); - this.pse = new pse_1.PseResource(this.config, this.apiHttpClient); - this.groups = new groups_1.GroupsResource(this.config, this.apiHttpClient); - // Stores uses its own HTTP client (different base URL format) - this.stores = new stores_1.StoresResource(this.config, this.storeHttpClient); - } - // ── Configuration Setters ──────────────────────────────────────── - /** Change the merchant ID and rebuild resources. */ - setMerchantId(merchantId) { - this.config = { ...this.config, merchantId }; - this.rebuildResources(); - } - /** Change the private key and rebuild resources. */ - setPrivateKey(privateKey) { - this.config = { ...this.config, privateKey }; - this.rebuildResources(); - } - /** Toggle sandbox/production mode and rebuild resources. */ - setProductionReady(isProductionReady) { - this.config = { ...this.config, isSandbox: !isProductionReady }; - this.rebuildResources(); - } - /** Change the HTTP request timeout and rebuild resources. */ - setTimeout(timeout) { - this.config = { ...this.config, timeout }; - this.rebuildResources(); - } - /** Per-country base URL configuration. */ - setBaseUrl(countryCode) { - console.log('setting base url from country'); - switch (countryCode) { - case 'pe': - console.log('Country Peru'); - Openpay.BASE_URL = 'https://api.openpay.pe'; - Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.pe'; - break; - case 'co': - console.log('Country Colombia'); - Openpay.BASE_URL = 'https://api.openpay.co'; - Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.co'; - break; - case 'mx': - console.log('Country Mexico'); - console.log('Default value'); - break; - default: - console.error('Error country code, setting mx default.'); - } - } - // ── Helpers ────────────────────────────────────────────────────── - /** Rebuild all resources after a config change. */ - rebuildResources() { - // Re-assign resource properties (same pattern as original's _reDefine) - this.merchant = new merchant_1.MerchantResource(this.config, this.apiHttpClient); - this.charges = new charges_1.ChargesResource(this.config, this.apiHttpClient); - this.payouts = new payouts_1.PayoutsResource(this.config, this.apiHttpClient); - this.fees = new fees_1.FeesResource(this.config, this.apiHttpClient); - this.plans = new plans_1.PlansResource(this.config, this.apiHttpClient); - this.cards = new cards_1.CardsResource(this.config, this.apiHttpClient); - this.customers = new customers_1.CustomersResource(this.config, this.apiHttpClient); - this.webhooks = new webhooks_1.WebhooksResource(this.config, this.apiHttpClient); - this.tokens = new tokens_1.TokensResource(this.config, this.apiHttpClient); - this.checkouts = new checkouts_1.CheckoutsResource(this.config, this.apiHttpClient); - this.pse = new pse_1.PseResource(this.config, this.apiHttpClient); - this.groups = new groups_1.GroupsResource(this.config, this.apiHttpClient); - this.stores = new stores_1.StoresResource(this.config, this.storeHttpClient); - } -} -module.exports = Openpay; -//# sourceMappingURL=openpay.js.map \ No newline at end of file diff --git a/lib/openpay.js.map b/lib/openpay.js.map deleted file mode 100644 index fa4b913..0000000 --- a/lib/openpay.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"openpay.js","sourceRoot":"","sources":["../src/openpay.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/cards.d.ts b/lib/resources/cards.d.ts deleted file mode 100644 index 0c5697e..0000000 --- a/lib/resources/cards.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class CardsResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - get(cardId: string, callback: Callback): void; - delete(cardId: string, callback: Callback): void; -} -//# sourceMappingURL=cards.d.ts.map \ No newline at end of file diff --git a/lib/resources/cards.d.ts.map b/lib/resources/cards.d.ts.map deleted file mode 100644 index 21f7679..0000000 --- a/lib/resources/cards.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/resources/cards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5C;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;CACF"} \ No newline at end of file diff --git a/lib/resources/cards.js b/lib/resources/cards.js deleted file mode 100644 index 45a1b8d..0000000 --- a/lib/resources/cards.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CardsResource = void 0; -const base_resource_1 = require("../base-resource"); -class CardsResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/cards`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - get(cardId, callback) { - this.request('GET', this.url(cardId), undefined, callback); - } - delete(cardId, callback) { - this.request('DELETE', this.url(cardId), undefined, callback); - } -} -exports.CardsResource = CardsResource; -//# sourceMappingURL=cards.js.map \ No newline at end of file diff --git a/lib/resources/cards.js.map b/lib/resources/cards.js.map deleted file mode 100644 index 77a62f5..0000000 --- a/lib/resources/cards.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/resources/cards.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,mBAA2B,SAAQ,4BAAY;IAC7C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,QAAkB;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/charges.d.ts b/lib/resources/charges.d.ts deleted file mode 100644 index 048b063..0000000 --- a/lib/resources/charges.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class ChargesResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - /** Create a new charge. */ - create(data: unknown, callback: Callback): void; - /** List charges with optional filters. */ - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - /** Get a charge by transaction ID. */ - get(transactionId: string, callback: Callback): void; - /** Capture a previously uncaptured charge. */ - capture(transactionId: string, data: unknown, callback: Callback): void; - /** Refund a charge. */ - refund(transactionId: string, data: unknown, callback: Callback): void; -} -//# sourceMappingURL=charges.d.ts.map \ No newline at end of file diff --git a/lib/resources/charges.d.ts.map b/lib/resources/charges.d.ts.map deleted file mode 100644 index 4820537..0000000 --- a/lib/resources/charges.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"charges.d.ts","sourceRoot":"","sources":["../../src/resources/charges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,0CAA0C;IAC1C,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,sCAAsC;IACtC,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;IAED,8CAA8C;IAC9C,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEtE;IAED,uBAAuB;IACvB,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAErE;CACF"} \ No newline at end of file diff --git a/lib/resources/charges.js b/lib/resources/charges.js deleted file mode 100644 index 7623dba..0000000 --- a/lib/resources/charges.js +++ /dev/null @@ -1,31 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.ChargesResource = void 0; -const base_resource_1 = require("../base-resource"); -class ChargesResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/charges`); - } - /** Create a new charge. */ - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - /** Get a charge by transaction ID. */ - get(transactionId, callback) { - this.request('GET', this.url(transactionId), undefined, callback); - } - /** Capture a previously uncaptured charge. */ - capture(transactionId, data, callback) { - this.request('POST', this.url(`${transactionId}/capture`), data, callback); - } - /** Refund a charge. */ - refund(transactionId, data, callback) { - this.request('POST', this.url(`${transactionId}/refund`), data, callback); - } -} -exports.ChargesResource = ChargesResource; -//# sourceMappingURL=charges.js.map \ No newline at end of file diff --git a/lib/resources/charges.js.map b/lib/resources/charges.js.map deleted file mode 100644 index 7ea7aa5..0000000 --- a/lib/resources/charges.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"charges.js","sourceRoot":"","sources":["../../src/resources/charges.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,qBAA6B,SAAQ,4BAAY;IAC/C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,2BAA2B;IAC3B,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAKD,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,sCAAsC;IACtC,GAAG,CAAC,aAAqB,EAAE,QAAkB;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,8CAA8C;IAC9C,OAAO,CAAC,aAAqB,EAAE,IAAa,EAAE,QAAkB;QAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,aAAqB,EAAE,IAAa,EAAE,QAAkB;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/checkouts.d.ts b/lib/resources/checkouts.d.ts deleted file mode 100644 index 4504cf6..0000000 --- a/lib/resources/checkouts.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class CheckoutsResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - get(checkoutId: string, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - update(checkoutId: string, status: string, data: unknown, callback: Callback): void; -} -//# sourceMappingURL=checkouts.d.ts.map \ No newline at end of file diff --git a/lib/resources/checkouts.d.ts.map b/lib/resources/checkouts.d.ts.map deleted file mode 100644 index d396d37..0000000 --- a/lib/resources/checkouts.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkouts.d.ts","sourceRoot":"","sources":["../../src/resources/checkouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEhD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAOlF;CACF"} \ No newline at end of file diff --git a/lib/resources/checkouts.js b/lib/resources/checkouts.js deleted file mode 100644 index 8327c07..0000000 --- a/lib/resources/checkouts.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CheckoutsResource = void 0; -const base_resource_1 = require("../base-resource"); -class CheckoutsResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/checkouts`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - get(checkoutId, callback) { - this.request('GET', this.url(checkoutId), undefined, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - update(checkoutId, status, data, callback) { - this.request('PUT', this.url(`${checkoutId}?status=${status}`), data, callback); - } -} -exports.CheckoutsResource = CheckoutsResource; -//# sourceMappingURL=checkouts.js.map \ No newline at end of file diff --git a/lib/resources/checkouts.js.map b/lib/resources/checkouts.js.map deleted file mode 100644 index 30ff518..0000000 --- a/lib/resources/checkouts.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"checkouts.js","sourceRoot":"","sources":["../../src/resources/checkouts.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,uBAA+B,SAAQ,4BAAY;IACjD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,YAAY,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,UAAkB,EAAE,QAAkB;QACxC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,UAAkB,EAAE,MAAc,EAAE,IAAa,EAAE,QAAkB;QAC1E,IAAI,CAAC,OAAO,CACV,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,WAAW,MAAM,EAAE,CAAC,EAC1C,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/customers.d.ts b/lib/resources/customers.d.ts deleted file mode 100644 index 80b1a46..0000000 --- a/lib/resources/customers.d.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -declare class CustomerCards extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, cardId: string, callback: Callback): void; - delete(customerId: string, cardId: string, callback: Callback): void; -} -declare class CustomerCharges extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, transactionId: string, callback: Callback): void; - capture(customerId: string, transactionId: string, data: unknown, callback: Callback): void; - refund(customerId: string, transactionId: string, data: unknown, callback: Callback): void; -} -declare class CustomerTransfers extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, transactionId: string, callback: Callback): void; -} -declare class CustomerPayouts extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, transactionId: string, callback: Callback): void; -} -declare class CustomerSubscriptions extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, subscriptionId: string, callback: Callback): void; - update(customerId: string, subscriptionId: string, data: unknown, callback: Callback): void; - delete(customerId: string, subscriptionId: string, callback: Callback): void; -} -declare class CustomerBankAccounts extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - get(customerId: string, bankAccountId: string, callback: Callback): void; - delete(customerId: string, bankAccountId: string, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; -} -export declare class CustomersResource extends BaseResource { - readonly cards: CustomerCards; - readonly charges: CustomerCharges; - readonly transfers: CustomerTransfers; - readonly payouts: CustomerPayouts; - readonly subscriptions: CustomerSubscriptions; - readonly bankaccounts: CustomerBankAccounts; - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - get(customerId: string, callback: Callback): void; - update(customerId: string, data: unknown, callback: Callback): void; - delete(customerId: string, callback: Callback): void; -} -export {}; -//# sourceMappingURL=customers.d.ts.map \ No newline at end of file diff --git a/lib/resources/customers.d.ts.map b/lib/resources/customers.d.ts.map deleted file mode 100644 index d3a4bed..0000000 --- a/lib/resources/customers.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/customers.js b/lib/resources/customers.js deleted file mode 100644 index 62763c4..0000000 --- a/lib/resources/customers.js +++ /dev/null @@ -1,150 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.CustomersResource = void 0; -const base_resource_1 = require("../base-resource"); -// ── Customer Sub-Resources ───────────────────────────────────────── -class CustomerCards extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/cards`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb); - } - get(customerId, cardId, callback) { - this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } - delete(customerId, cardId, callback) { - this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } -} -class CustomerCharges extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/charges`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/charges`, query), undefined, resolvedCb); - } - get(customerId, transactionId, callback) { - this.request('GET', this.url(`${customerId}/charges/${transactionId}`), undefined, callback); - } - capture(customerId, transactionId, data, callback) { - this.request('POST', this.url(`${customerId}/charges/${transactionId}/capture`), data, callback); - } - refund(customerId, transactionId, data, callback) { - this.request('POST', this.url(`${customerId}/charges/${transactionId}/refund`), data, callback); - } -} -class CustomerTransfers extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/transfers`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/transfers`, query), undefined, resolvedCb); - } - get(customerId, transactionId, callback) { - this.request('GET', this.url(`${customerId}/transfers/${transactionId}`), undefined, callback); - } -} -class CustomerPayouts extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/payouts`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/payouts`, query), undefined, resolvedCb); - } - get(customerId, transactionId, callback) { - this.request('GET', this.url(`${customerId}/payouts/${transactionId}`), undefined, callback); - } -} -class CustomerSubscriptions extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/subscriptions`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/subscriptions`, query), undefined, resolvedCb); - } - get(customerId, subscriptionId, callback) { - this.request('GET', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); - } - update(customerId, subscriptionId, data, callback) { - this.request('PUT', this.url(`${customerId}/subscriptions/${subscriptionId}`), data, callback); - } - delete(customerId, subscriptionId, callback) { - this.request('DELETE', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); - } -} -class CustomerBankAccounts extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/bankaccounts`), data, callback); - } - get(customerId, bankAccountId, callback) { - this.request('GET', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); - } - delete(customerId, bankAccountId, callback) { - this.request('DELETE', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/bankaccounts`, query), undefined, resolvedCb); - } -} -// ── Main Customers Resource ──────────────────────────────────────── -class CustomersResource extends base_resource_1.BaseResource { - cards; - charges; - transfers; - payouts; - subscriptions; - bankaccounts; - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - // Compose sub-resources (each shares the same config & http client) - this.cards = new CustomerCards(config, httpClient); - this.charges = new CustomerCharges(config, httpClient); - this.transfers = new CustomerTransfers(config, httpClient); - this.payouts = new CustomerPayouts(config, httpClient); - this.subscriptions = new CustomerSubscriptions(config, httpClient); - this.bankaccounts = new CustomerBankAccounts(config, httpClient); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - get(customerId, callback) { - this.request('GET', this.url(customerId), undefined, callback); - } - update(customerId, data, callback) { - this.request('PUT', this.url(customerId), data, callback); - } - delete(customerId, callback) { - this.request('DELETE', this.url(customerId), undefined, callback); - } -} -exports.CustomersResource = CustomersResource; -//# sourceMappingURL=customers.js.map \ No newline at end of file diff --git a/lib/resources/customers.js.map b/lib/resources/customers.js.map deleted file mode 100644 index 94bc094..0000000 --- a/lib/resources/customers.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"customers.js","sourceRoot":"","sources":["../../src/resources/customers.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/fees.d.ts b/lib/resources/fees.d.ts deleted file mode 100644 index bdf5fc5..0000000 --- a/lib/resources/fees.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class FeesResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; -} -//# sourceMappingURL=fees.d.ts.map \ No newline at end of file diff --git a/lib/resources/fees.d.ts.map b/lib/resources/fees.d.ts.map deleted file mode 100644 index 5fc9848..0000000 --- a/lib/resources/fees.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/resources/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,YAAa,SAAQ,YAAY;IAC5C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAKnD"} \ No newline at end of file diff --git a/lib/resources/fees.js b/lib/resources/fees.js deleted file mode 100644 index 19248c0..0000000 --- a/lib/resources/fees.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FeesResource = void 0; -const base_resource_1 = require("../base-resource"); -class FeesResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/fees`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } -} -exports.FeesResource = FeesResource; -//# sourceMappingURL=fees.js.map \ No newline at end of file diff --git a/lib/resources/fees.js.map b/lib/resources/fees.js.map deleted file mode 100644 index 741569f..0000000 --- a/lib/resources/fees.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/resources/fees.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,kBAA0B,SAAQ,4BAAY;IAC5C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,OAAO,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/groups.d.ts b/lib/resources/groups.d.ts deleted file mode 100644 index 29395d2..0000000 --- a/lib/resources/groups.d.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -declare class GroupCustomerCards extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(customerId: string, data: unknown, callback: Callback): void; - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - get(customerId: string, cardId: string, callback: Callback): void; - delete(customerId: string, cardId: string, callback: Callback): void; -} -declare class GroupCustomerCharges extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(merchantId: string, customerId: string, data: unknown, callback: Callback): void; - capture(merchantId: string, customerId: string, transactionId: string, data: unknown, callback: Callback): void; - refund(merchantId: string, customerId: string, transactionId: string, data: unknown, callback: Callback): void; -} -declare class GroupCustomerSubscriptions extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(merchantId: string, customerId: string, data: unknown, callback: Callback): void; - list(merchantId: string, customerId: string, callback: Callback): void; - list(merchantId: string, customerId: string, data: QueryParams, callback: Callback): void; - get(merchantId: string, customerId: string, subscriptionId: string, callback: Callback): void; - update(merchantId: string, customerId: string, subscriptionId: string, data: unknown, callback: Callback): void; - delete(merchantId: string, customerId: string, subscriptionId: string, callback: Callback): void; -} -declare class GroupCustomers extends BaseResource { - readonly cards: GroupCustomerCards; - readonly charges: GroupCustomerCharges; - readonly subscriptions: GroupCustomerSubscriptions; - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - get(customerId: string, callback: Callback): void; - update(customerId: string, data: unknown, callback: Callback): void; - delete(customerId: string, callback: Callback): void; -} -declare class GroupCharges extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(merchantId: string, data: unknown, callback: Callback): void; - capture(merchantId: string, transactionId: string, data: unknown, callback: Callback): void; - refund(merchantId: string, transactionId: string, data: unknown, callback: Callback): void; -} -export declare class GroupsResource extends BaseResource { - readonly customers: GroupCustomers; - readonly charges: GroupCharges; - constructor(config: OpenpayConfig, httpClient: HttpClient); -} -export {}; -//# sourceMappingURL=groups.d.ts.map \ No newline at end of file diff --git a/lib/resources/groups.d.ts.map b/lib/resources/groups.d.ts.map deleted file mode 100644 index 2a8e98f..0000000 --- a/lib/resources/groups.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../src/resources/groups.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/groups.js b/lib/resources/groups.js deleted file mode 100644 index a37829c..0000000 --- a/lib/resources/groups.js +++ /dev/null @@ -1,113 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GroupsResource = void 0; -const base_resource_1 = require("../base-resource"); -// ── Group Sub-Resources ──────────────────────────────────────────── -class GroupCustomerCards extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}/customers`); - } - create(customerId, data, callback) { - this.request('POST', this.url(`${customerId}/cards`), data, callback); - } - list(customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb); - } - get(customerId, cardId, callback) { - this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } - delete(customerId, cardId, callback) { - this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } -} -class GroupCustomerCharges extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}/merchants`); - } - create(merchantId, customerId, data, callback) { - this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges`), data, callback); - } - capture(merchantId, customerId, transactionId, data, callback) { - this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/capture`), data, callback); - } - refund(merchantId, customerId, transactionId, data, callback) { - this.request('POST', this.url(`${merchantId}/customers/${customerId}/charges/${transactionId}/refund`), data, callback); - } -} -class GroupCustomerSubscriptions extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}/merchants`); - } - create(merchantId, customerId, data, callback) { - this.request('POST', this.url(`${merchantId}/customers/${customerId}/subscriptions`), data, callback); - } - list(merchantId, customerId, dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${merchantId}/customers/${customerId}/subscriptions`, query), undefined, resolvedCb); - } - get(merchantId, customerId, subscriptionId, callback) { - this.request('GET', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), undefined, callback); - } - update(merchantId, customerId, subscriptionId, data, callback) { - this.request('PUT', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), data, callback); - } - delete(merchantId, customerId, subscriptionId, callback) { - this.request('DELETE', this.url(`${merchantId}/customers/${customerId}/subscriptions/${subscriptionId}`), undefined, callback); - } -} -// ── Group Customers ───────────────────────────────────────────────── -class GroupCustomers extends base_resource_1.BaseResource { - cards; - charges; - subscriptions; - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}/customers`); - this.cards = new GroupCustomerCards(config, httpClient); - this.charges = new GroupCustomerCharges(config, httpClient); - this.subscriptions = new GroupCustomerSubscriptions(config, httpClient); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - get(customerId, callback) { - this.request('GET', this.url(customerId), undefined, callback); - } - update(customerId, data, callback) { - this.request('PUT', this.url(customerId), data, callback); - } - delete(customerId, callback) { - this.request('DELETE', this.url(customerId), undefined, callback); - } -} -// ── Group Charges ─────────────────────────────────────────────────── -class GroupCharges extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}/merchants`); - } - create(merchantId, data, callback) { - this.request('POST', this.url(`${merchantId}/charges`), data, callback); - } - capture(merchantId, transactionId, data, callback) { - this.request('POST', this.url(`${merchantId}/charges/${transactionId}/capture`), data, callback); - } - refund(merchantId, transactionId, data, callback) { - this.request('POST', this.url(`${merchantId}/charges/${transactionId}/refund`), data, callback); - } -} -// ── Main Groups Resource ──────────────────────────────────────────── -class GroupsResource extends base_resource_1.BaseResource { - customers; - charges; - constructor(config, httpClient) { - super(config, httpClient, `groups/${config.merchantId}`); - this.customers = new GroupCustomers(config, httpClient); - this.charges = new GroupCharges(config, httpClient); - } -} -exports.GroupsResource = GroupsResource; -//# sourceMappingURL=groups.js.map \ No newline at end of file diff --git a/lib/resources/groups.js.map b/lib/resources/groups.js.map deleted file mode 100644 index eaa0789..0000000 --- a/lib/resources/groups.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/resources/groups.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/resources/merchant.d.ts b/lib/resources/merchant.d.ts deleted file mode 100644 index 3925ff7..0000000 --- a/lib/resources/merchant.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig } from '../types'; -export declare class MerchantResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - /** - * Get merchant information. - */ - get(callback: Callback): void; -} -//# sourceMappingURL=merchant.d.ts.map \ No newline at end of file diff --git a/lib/resources/merchant.d.ts.map b/lib/resources/merchant.d.ts.map deleted file mode 100644 index 9690806..0000000 --- a/lib/resources/merchant.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"merchant.d.ts","sourceRoot":"","sources":["../../src/resources/merchant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5B;CACF"} \ No newline at end of file diff --git a/lib/resources/merchant.js b/lib/resources/merchant.js deleted file mode 100644 index b7d547a..0000000 --- a/lib/resources/merchant.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MerchantResource = void 0; -const base_resource_1 = require("../base-resource"); -class MerchantResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, config.merchantId); - } - /** - * Get merchant information. - */ - get(callback) { - this.request('GET', this.url(), undefined, callback); - } -} -exports.MerchantResource = MerchantResource; -//# sourceMappingURL=merchant.js.map \ No newline at end of file diff --git a/lib/resources/merchant.js.map b/lib/resources/merchant.js.map deleted file mode 100644 index f363f66..0000000 --- a/lib/resources/merchant.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"merchant.js","sourceRoot":"","sources":["../../src/resources/merchant.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,sBAA8B,SAAQ,4BAAY;IAChD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,QAAkB;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/payouts.d.ts b/lib/resources/payouts.d.ts deleted file mode 100644 index fd9403a..0000000 --- a/lib/resources/payouts.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class PayoutsResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - get(transactionId: string, callback: Callback): void; -} -//# sourceMappingURL=payouts.d.ts.map \ No newline at end of file diff --git a/lib/resources/payouts.d.ts.map b/lib/resources/payouts.d.ts.map deleted file mode 100644 index 130083e..0000000 --- a/lib/resources/payouts.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"payouts.d.ts","sourceRoot":"","sources":["../../src/resources/payouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAEnD;CACF"} \ No newline at end of file diff --git a/lib/resources/payouts.js b/lib/resources/payouts.js deleted file mode 100644 index 4960946..0000000 --- a/lib/resources/payouts.js +++ /dev/null @@ -1,21 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PayoutsResource = void 0; -const base_resource_1 = require("../base-resource"); -class PayoutsResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/payouts`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - get(transactionId, callback) { - this.request('GET', this.url(transactionId), undefined, callback); - } -} -exports.PayoutsResource = PayoutsResource; -//# sourceMappingURL=payouts.js.map \ No newline at end of file diff --git a/lib/resources/payouts.js.map b/lib/resources/payouts.js.map deleted file mode 100644 index abd9912..0000000 --- a/lib/resources/payouts.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"payouts.js","sourceRoot":"","sources":["../../src/resources/payouts.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,qBAA6B,SAAQ,4BAAY;IAC/C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,aAAqB,EAAE,QAAkB;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/plans.d.ts b/lib/resources/plans.d.ts deleted file mode 100644 index 1626cfe..0000000 --- a/lib/resources/plans.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class PlansResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; - get(planId: string, callback: Callback): void; - update(planId: string, data: unknown, callback: Callback): void; - delete(planId: string, callback: Callback): void; - /** List subscriptions under a plan. */ - listSubscriptions(callback: Callback): void; - listSubscriptions(planId: string, callback: Callback): void; - listSubscriptions(planId: string, data: QueryParams, callback: Callback): void; -} -//# sourceMappingURL=plans.d.ts.map \ No newline at end of file diff --git a/lib/resources/plans.d.ts.map b/lib/resources/plans.d.ts.map deleted file mode 100644 index 6fa257e..0000000 --- a/lib/resources/plans.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"plans.d.ts","sourceRoot":"","sources":["../../src/resources/plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAMlD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE5C;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9D;IAED,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;IAED,uCAAuC;IACvC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5C,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5D,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAkChF"} \ No newline at end of file diff --git a/lib/resources/plans.js b/lib/resources/plans.js deleted file mode 100644 index ea1fbeb..0000000 --- a/lib/resources/plans.js +++ /dev/null @@ -1,57 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PlansResource = void 0; -const base_resource_1 = require("../base-resource"); -class PlansResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/plans`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.url() + query, undefined, resolvedCb); - } - get(planId, callback) { - this.request('GET', this.url(planId), undefined, callback); - } - update(planId, data, callback) { - this.request('PUT', this.url(planId), data, callback); - } - delete(planId, callback) { - this.request('DELETE', this.url(planId), undefined, callback); - } - listSubscriptions(planIdOrCb, dataOrCb, cb) { - let planId; - let query = ''; - let resolvedCb; - if (typeof planIdOrCb === 'function') { - // listSubscriptions(callback) - planId = ''; - resolvedCb = planIdOrCb; - } - else if (typeof dataOrCb === 'function') { - // listSubscriptions(planId, callback) - planId = planIdOrCb; - resolvedCb = dataOrCb; - } - else if (typeof cb === 'function') { - // listSubscriptions(planId, data, callback) - planId = planIdOrCb; - query = this.resolveListParams(dataOrCb, cb).query; - resolvedCb = cb; - } - else { - // listSubscriptions(planId, data) - planId = planIdOrCb; - resolvedCb = undefined; - } - const urlPath = planId - ? `${this.url(planId)}/subscriptions${query}` - : `${this.url()}${query}`; - this.request('GET', urlPath, undefined, resolvedCb); - } -} -exports.PlansResource = PlansResource; -//# sourceMappingURL=plans.js.map \ No newline at end of file diff --git a/lib/resources/plans.js.map b/lib/resources/plans.js.map deleted file mode 100644 index d5444ca..0000000 --- a/lib/resources/plans.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"plans.js","sourceRoot":"","sources":["../../src/resources/plans.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,mBAA2B,SAAQ,4BAAY;IAC7C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IAClE,CAAC;IAED,GAAG,CAAC,MAAc,EAAE,QAAkB;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,IAAa,EAAE,QAAkB;QACtD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAMD,iBAAiB,CACf,UAA6B,EAC7B,QAA6C,EAC7C,EAAa;QAEb,IAAI,MAAc,CAAC;QACnB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,UAAgC,CAAC;QAErC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,8BAA8B;YAC9B,MAAM,GAAG,EAAE,CAAC;YACZ,UAAU,GAAG,UAAU,CAAC;QAC1B,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC1C,sCAAsC;YACtC,MAAM,GAAG,UAAU,CAAC;YACpB,UAAU,GAAG,QAAQ,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;YACpC,4CAA4C;YAC5C,MAAM,GAAG,UAAU,CAAC;YACpB,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAuB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YAClE,UAAU,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,MAAM,GAAG,UAAU,CAAC;YACpB,UAAU,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM;YACpB,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,EAAE;YAC7C,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,UAAW,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/pse.d.ts b/lib/resources/pse.d.ts deleted file mode 100644 index 33d7372..0000000 --- a/lib/resources/pse.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig } from '../types'; -export declare class PseResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - /** Create a PSE charge (Colombia). */ - create(data: unknown, callback: Callback): void; -} -//# sourceMappingURL=pse.d.ts.map \ No newline at end of file diff --git a/lib/resources/pse.d.ts.map b/lib/resources/pse.d.ts.map deleted file mode 100644 index b134a66..0000000 --- a/lib/resources/pse.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pse.d.ts","sourceRoot":"","sources":["../../src/resources/pse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,sCAAsC;IACtC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;CACF"} \ No newline at end of file diff --git a/lib/resources/pse.js b/lib/resources/pse.js deleted file mode 100644 index 9538561..0000000 --- a/lib/resources/pse.js +++ /dev/null @@ -1,15 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PseResource = void 0; -const base_resource_1 = require("../base-resource"); -class PseResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/charges`); - } - /** Create a PSE charge (Colombia). */ - create(data, callback) { - this.request('POST', this.url(), data, callback); - } -} -exports.PseResource = PseResource; -//# sourceMappingURL=pse.js.map \ No newline at end of file diff --git a/lib/resources/pse.js.map b/lib/resources/pse.js.map deleted file mode 100644 index 6669126..0000000 --- a/lib/resources/pse.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"pse.js","sourceRoot":"","sources":["../../src/resources/pse.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,iBAAyB,SAAQ,4BAAY;IAC3C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,sCAAsC;IACtC,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/stores.d.ts b/lib/resources/stores.d.ts deleted file mode 100644 index 6e26a77..0000000 --- a/lib/resources/stores.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig, QueryParams } from '../types'; -export declare class StoresResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - list(callback: Callback): void; - list(data: QueryParams, callback: Callback): void; -} -//# sourceMappingURL=stores.d.ts.map \ No newline at end of file diff --git a/lib/resources/stores.d.ts.map b/lib/resources/stores.d.ts.map deleted file mode 100644 index 41b72ee..0000000 --- a/lib/resources/stores.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../../src/resources/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAErE,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAGxD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAMnD"} \ No newline at end of file diff --git a/lib/resources/stores.js b/lib/resources/stores.js deleted file mode 100644 index 401df12..0000000 --- a/lib/resources/stores.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StoresResource = void 0; -const base_resource_1 = require("../base-resource"); -class StoresResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - // Stores uses a different base URL (no merchant prefix, no /v1/) - super(config, httpClient, 'stores'); - } - list(dataOrCb, cb) { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - // Stores uses the StoreHttpClient which has different BASE_URL logic - this.httpClient.request('GET', this.url() + query, undefined, this.config, resolvedCb); - } -} -exports.StoresResource = StoresResource; -//# sourceMappingURL=stores.js.map \ No newline at end of file diff --git a/lib/resources/stores.js.map b/lib/resources/stores.js.map deleted file mode 100644 index 629bf9c..0000000 --- a/lib/resources/stores.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stores.js","sourceRoot":"","sources":["../../src/resources/stores.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,oBAA4B,SAAQ,4BAAY;IAC9C,YAAY,MAAqB,EAAE,UAAsB;QACvD,iEAAiE;QACjE,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAID,IAAI,CAAC,QAAgC,EAAE,EAAa;QAClD,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvE,qEAAqE;QACrE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,UAAW,CAAC,CAAC;IAC1F,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/tokens.d.ts b/lib/resources/tokens.d.ts deleted file mode 100644 index ee27def..0000000 --- a/lib/resources/tokens.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig } from '../types'; -export declare class TokensResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - get(tokenId: string, callback: Callback): void; - list(callback: Callback): void; -} -//# sourceMappingURL=tokens.d.ts.map \ No newline at end of file diff --git a/lib/resources/tokens.d.ts.map b/lib/resources/tokens.d.ts.map deleted file mode 100644 index 02f96f1..0000000 --- a/lib/resources/tokens.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/resources/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,cAAe,SAAQ,YAAY;IAC9C,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7C;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7B;CACF"} \ No newline at end of file diff --git a/lib/resources/tokens.js b/lib/resources/tokens.js deleted file mode 100644 index c35efad..0000000 --- a/lib/resources/tokens.js +++ /dev/null @@ -1,20 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TokensResource = void 0; -const base_resource_1 = require("../base-resource"); -class TokensResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/tokens`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - get(tokenId, callback) { - this.request('GET', this.url(tokenId), undefined, callback); - } - list(callback) { - this.request('GET', this.url(), undefined, callback); - } -} -exports.TokensResource = TokensResource; -//# sourceMappingURL=tokens.js.map \ No newline at end of file diff --git a/lib/resources/tokens.js.map b/lib/resources/tokens.js.map deleted file mode 100644 index 6328f31..0000000 --- a/lib/resources/tokens.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/resources/tokens.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,oBAA4B,SAAQ,4BAAY;IAC9C,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,GAAG,CAAC,OAAe,EAAE,QAAkB;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/resources/webhooks.d.ts b/lib/resources/webhooks.d.ts deleted file mode 100644 index e6dea57..0000000 --- a/lib/resources/webhooks.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { BaseResource } from '../base-resource'; -import type { HttpClient } from '../http-client'; -import type { Callback, OpenpayConfig } from '../types'; -export declare class WebhooksResource extends BaseResource { - constructor(config: OpenpayConfig, httpClient: HttpClient); - create(data: unknown, callback: Callback): void; - verify(webhookId: string, verificationCode: string, callback: Callback): void; - get(webhookId: string, callback: Callback): void; - delete(webhookId: string, callback: Callback): void; - list(callback: Callback): void; -} -//# sourceMappingURL=webhooks.d.ts.map \ No newline at end of file diff --git a/lib/resources/webhooks.d.ts.map b/lib/resources/webhooks.d.ts.map deleted file mode 100644 index 5e863e2..0000000 --- a/lib/resources/webhooks.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,YAAY,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAExD;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE9C;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAO5E;IAED,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE/C;IAED,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAElD;IAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAE7B;CACF"} \ No newline at end of file diff --git a/lib/resources/webhooks.js b/lib/resources/webhooks.js deleted file mode 100644 index 71e3b9d..0000000 --- a/lib/resources/webhooks.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WebhooksResource = void 0; -const base_resource_1 = require("../base-resource"); -class WebhooksResource extends base_resource_1.BaseResource { - constructor(config, httpClient) { - super(config, httpClient, `${config.merchantId}/webhooks`); - } - create(data, callback) { - this.request('POST', this.url(), data, callback); - } - verify(webhookId, verificationCode, callback) { - this.request('POST', this.url(`${webhookId}/verify/${verificationCode}`), '{}', callback); - } - get(webhookId, callback) { - this.request('GET', this.url(webhookId), undefined, callback); - } - delete(webhookId, callback) { - this.request('DELETE', this.url(webhookId), undefined, callback); - } - list(callback) { - this.request('GET', this.url(), undefined, callback); - } -} -exports.WebhooksResource = WebhooksResource; -//# sourceMappingURL=webhooks.js.map \ No newline at end of file diff --git a/lib/resources/webhooks.js.map b/lib/resources/webhooks.js.map deleted file mode 100644 index 7b6d550..0000000 --- a/lib/resources/webhooks.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/resources/webhooks.ts"],"names":[],"mappings":";;;AAAA,oDAAgD;AAIhD,sBAA8B,SAAQ,4BAAY;IAChD,YAAY,MAAqB,EAAE,UAAsB;QACvD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,UAAU,WAAW,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAa,EAAE,QAAkB;QACtC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,gBAAwB,EAAE,QAAkB;QACpE,IAAI,CAAC,OAAO,CACV,MAAM,EACN,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,WAAW,gBAAgB,EAAE,CAAC,EACnD,IAAI,EACJ,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,QAAkB;QACvC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,QAAkB;QAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,QAAkB;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF"} \ No newline at end of file diff --git a/lib/stringify-params.d.ts b/lib/stringify-params.d.ts deleted file mode 100644 index 037d8bf..0000000 --- a/lib/stringify-params.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { QueryParams } from './types'; -/** - * Converts a plain object to a query string with `?` prefix. - * Returns an empty string when params is undefined, null, or empty. - */ -export declare function stringifyParams(params: QueryParams | undefined | null): string; -/** - * Detect whether a value is a plain, non-array, non-null object - * with at least one key — used by list-method overload resolution. - */ -export declare function isPlainObjectWithKeys(value: unknown): value is Record; -//# sourceMappingURL=stringify-params.d.ts.map \ No newline at end of file diff --git a/lib/stringify-params.d.ts.map b/lib/stringify-params.d.ts.map deleted file mode 100644 index 5d018a4..0000000 --- a/lib/stringify-params.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stringify-params.d.ts","sourceRoot":"","sources":["../src/stringify-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAY9E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOtF"} \ No newline at end of file diff --git a/lib/stringify-params.js b/lib/stringify-params.js deleted file mode 100644 index 19b2f9e..0000000 --- a/lib/stringify-params.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.stringifyParams = stringifyParams; -exports.isPlainObjectWithKeys = isPlainObjectWithKeys; -/** - * Converts a plain object to a query string with `?` prefix. - * Returns an empty string when params is undefined, null, or empty. - */ -function stringifyParams(params) { - if (params == null || typeof params !== 'object' || Array.isArray(params)) { - return ''; - } - const entries = Object.entries(params); - if (entries.length === 0) { - return ''; - } - const parts = entries.map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`); - return '?' + parts.join('&'); -} -/** - * Detect whether a value is a plain, non-array, non-null object - * with at least one key — used by list-method overload resolution. - */ -function isPlainObjectWithKeys(value) { - return (typeof value === 'object' && - value !== null && - !Array.isArray(value) && - Object.keys(value).length > 0); -} -//# sourceMappingURL=stringify-params.js.map \ No newline at end of file diff --git a/lib/stringify-params.js.map b/lib/stringify-params.js.map deleted file mode 100644 index e8efc6b..0000000 --- a/lib/stringify-params.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"stringify-params.js","sourceRoot":"","sources":["../src/stringify-params.ts"],"names":[],"mappings":";;;;AAEA;;;GAGG;AACH,yBAAgC,MAAsC;IACpE,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1E,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3F,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,+BAAsC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC,CAAC;AACJ,CAAC"} \ No newline at end of file diff --git a/lib/types.d.ts b/lib/types.d.ts deleted file mode 100644 index 1fad313..0000000 --- a/lib/types.d.ts +++ /dev/null @@ -1,170 +0,0 @@ -export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE'; -export interface RequestSpec { - apiUrl: string; - requestData: { - method: HttpMethod; - json?: unknown; - }; -} -export interface OpenpayConfig { - merchantId: string; - privateKey: string; - isSandbox: boolean; - timeout: number; -} -export type Callback = (error: Error | null, body: T | null, response: HttpResponse | null) => void; -export interface HttpResponse { - statusCode: number; - headers: Record; -} -export type CountryCode = 'mx' | 'pe' | 'co'; -export type QueryParams = Record; -export interface OpenpayResource { - id: string; - [key: string]: unknown; -} -export interface ChargeRequest { - method: 'card' | 'bank_account' | 'store'; - amount: number; - description: string; - card?: CardRequest; - source_id?: string; - capture?: boolean; - currency?: string; - device_session_id?: string; - customer?: CustomerRef; - confirm?: boolean; - send_email?: boolean; - redirect_url?: string; - use_3d_secure?: boolean; - metadata?: Record; -} -export interface CardRequest { - card_number: string; - holder_name: string; - expiration_year: string; - expiration_month: string; - cvv2: string; -} -export interface CustomerRef { - id?: string; - name: string; - email?: string; - phone_number?: string; - requires_account?: boolean; - address?: Address; -} -export interface Address { - city?: string; - country_code?: string; - line1?: string; - line2?: string; - line3?: string; - postal_code?: string; - state?: string; -} -export interface CaptureRequest { - amount?: number; -} -export interface RefundRequest { - description?: string; - amount?: number; -} -export interface PayoutRequest { - method: 'card' | 'bank_account'; - destination_id?: string; - amount: number; - description: string; - card?: CardRequest; - bank_account?: BankAccountRequest; -} -export interface BankAccountRequest { - clabe: string; - holder_name: string; - bank_code?: string; - bank_name?: string; -} -export interface CustomerRequest { - name: string; - email?: string; - phone_number?: string; - requires_account?: boolean; - address?: Address; - external_id?: string; - status?: string; -} -export interface CardCreateRequest { - card_number: string; - holder_name: string; - expiration_year: string; - expiration_month: string; - cvv2: string; -} -export interface BankAccountCreateRequest { - clabe: string; - holder_name: string; - bank_code?: string; - bank_name?: string; - alias?: string; -} -export interface PlanRequest { - name: string; - amount: number; - repeat_every: number; - repeat_unit: 'day' | 'week' | 'month' | 'year'; - retry_times?: number; - status_after_retry?: 'cancelled' | 'unpaid'; - trial_days?: number; - currency?: string; -} -export interface SubscriptionRequest { - plan_id: string; - card_id?: string; - token_id?: string; - trial_days?: number; - trial_end_date?: string; - coupon_id?: string; -} -export interface WebhookRequest { - url: string; - event_types: string[]; -} -export interface TokenRequest { - card_number: string; - holder_name: string; - expiration_year: string; - expiration_month: string; - cvv2: string; - address?: Address; -} -export interface CheckoutRequest { - amount: number; - description: string; - order_id?: string; - currency?: string; - customer?: CustomerRef; - send_email?: boolean; - redirect_url?: string; - confirm?: boolean; - iva?: number; - metadata?: Record; - expires_at?: string; - needs_shipping_contact?: boolean; - type?: 'redirect' | 'modal' | 'integration'; -} -export interface PseRequest { - method: ' bank_account'; - amount: number; - description: string; - customer?: CustomerRef; - bank_code: string; - redirect_url?: string; -} -export interface StoreListParams { - lte?: string; - gte?: string; - limit?: number; - offset?: number; - [key: string]: string | number | undefined; -} -//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/lib/types.d.ts.map b/lib/types.d.ts.map deleted file mode 100644 index 02f2539..0000000 --- a/lib/types.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/types.js b/lib/types.js deleted file mode 100644 index 71faed7..0000000 --- a/lib/types.js +++ /dev/null @@ -1,4 +0,0 @@ -"use strict"; -// ── HTTP & Request Types ─────────────────────────────────────────── -Object.defineProperty(exports, "__esModule", { value: true }); -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/lib/types.js.map b/lib/types.js.map deleted file mode 100644 index 2e000b6..0000000 --- a/lib/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,sEAAsE"} \ No newline at end of file diff --git a/lib/url-utils.d.ts b/lib/url-utils.d.ts deleted file mode 100644 index c174ce2..0000000 --- a/lib/url-utils.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Escapes square brackets in URLs so they're safe for Openpay's API - * (which uses bracket notation in query params, e.g. creation[gte]). - */ -export declare function escapeBrackets(url: string): string; -//# sourceMappingURL=url-utils.d.ts.map \ No newline at end of file diff --git a/lib/url-utils.d.ts.map b/lib/url-utils.d.ts.map deleted file mode 100644 index 4e8a3ad..0000000 --- a/lib/url-utils.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"url-utils.d.ts","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD"} \ No newline at end of file diff --git a/lib/url-utils.js b/lib/url-utils.js deleted file mode 100644 index 73781dc..0000000 --- a/lib/url-utils.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.escapeBrackets = escapeBrackets; -/** - * Escapes square brackets in URLs so they're safe for Openpay's API - * (which uses bracket notation in query params, e.g. creation[gte]). - */ -function escapeBrackets(url) { - let result = url.replace(/\[/g, encodeURI('[')); - result = result.replace(/\]/g, encodeURI(']')); - return result; -} -//# sourceMappingURL=url-utils.js.map \ No newline at end of file diff --git a/lib/url-utils.js.map b/lib/url-utils.js.map deleted file mode 100644 index d71e56f..0000000 --- a/lib/url-utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"url-utils.js","sourceRoot":"","sources":["../src/url-utils.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,wBAA+B,GAAW;IACxC,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"} \ No newline at end of file From 7425cbc80fb4061590a9c6585156148ad2cfd060 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:10:38 -0600 Subject: [PATCH 13/21] refactor(core): implement TypeScript SOLID refactor and migrate to fetch API Refactor the codebase to adhere to SOLID principles and improve maintainability. Key changes include: - Migrated HTTP client from `urllib` to the native `fetch` API. - Introduced `NestedCollection` to reduce duplication in sub-resources. - Implemented Dependency Inversion Principle (DIP) by having resources depend on the `HttpClient` interface. - Refactored `Openpay` class to use a more robust resource rebuilding mechanism. - Added support for country-specific API hosts. - Removed legacy configuration files (`.jshintrc`, `.project`, `.travis.yml`) and dependencies (`urllib`, `underscore`). - Updated test suite to remove `underscore` dependencies and align with new architecture. --- .gitignore | 7 +- .jshintrc | 122 --- .project | 18 - .travis.yml | 5 - package-lock.json | 994 +------------------ package.json | 3 - src/base-resource.ts | 36 + src/errors.ts | 7 - src/http-client.ts | 124 +-- src/openpay.ts | 82 +- src/resources/customers.ts | 128 +-- src/resources/groups.ts | 25 +- src/types.ts | 1 + test/bank-accounts.test.js | 3 +- test/cards.test.js | 3 +- test/charges_test.js | 3 +- test/colombia/cards.test.colombia.js | 3 +- test/colombia/charges_test.colombia.js | 3 +- test/colombia/clients_test.colombia.js | 3 +- test/colombia/plans.test.colombia.js | 3 +- test/colombia/pse_test.colombia.js | 3 +- test/colombia/stores_test.colombia.js | 3 +- test/colombia/subscriptions.test.colombia.js | 3 +- test/colombia/tokens_test.colombia.js | 3 +- test/colombia/webhooks_test.colombia.js | 3 +- test/customers_test.js | 3 +- test/fees.test.js | 3 +- test/group_test.js | 3 +- test/host.test.js | 19 + test/payouts_test.js | 3 +- test/peru/cards.pe.test.js | 3 +- test/peru/charges.pe.test.js | 3 +- test/peru/checkouts.pe.test.js | 3 +- test/peru/customers.pe.test.js | 3 +- test/peru/tokens.pe.test.js | 3 +- test/peru/webhooks.pe.test.js | 3 +- test/plans.test.js | 3 +- test/subscriptions.test.js | 3 +- test/test.js | 3 +- test/transfers.test.js | 3 +- 40 files changed, 183 insertions(+), 1466 deletions(-) delete mode 100644 .jshintrc delete mode 100644 .project delete mode 100644 .travis.yml create mode 100644 test/host.test.js diff --git a/.gitignore b/.gitignore index 2ca7bf8..fec4151 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules /npm-debug.log -.settings/org.eclipse.wst.jsdt.ui.superType.container -.settings/org.eclipse.wst.jsdt.ui.superType.name package-lock.json -.reasonix/ +/lib +/dist +.reasonix +.claude \ No newline at end of file diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 39f6616..0000000 --- a/.jshintrc +++ /dev/null @@ -1,122 +0,0 @@ -{ - // -------------------------------------------------------------------- - // JSHint Nodeclipse Configuration v0.11 - // Strict Edition with some relaxations and switch to Node.js, no `use strict` - // by Ory Band, Michael Haschke, Paul Verest - // https://github.com/Nodeclipse/nodeclipse-1/blob/master/org.nodeclipse.ui/templates/common-templates/.jshintrc - // JSHint Documentation is at http://www.jshint.com/docs/options/ - // JSHint Integration v0.9.9 comes with JSHInt 2.1.10 , see https://github.com/eclipsesource/jshint-eclipse - // -------------------------------------------------------------------- - // from https://gist.github.com/haschek/2595796 - // - // This is a options template for [JSHint][1], using [JSHint example][2] - // and [Ory Band's example][3] as basis and setting config values to - // be most strict: - // - // * set all enforcing options to true - // * set all relaxing options to false - // * set all environment options to false, except the node value - // * set all JSLint legacy options to false - // - // [1]: http://www.jshint.com/ - // [2]: https://github.com/jshint/node-jshint/blob/master/example/config.json //404 - // [3]: https://github.com/oryband/dotfiles/blob/master/jshintrc - // - // @author http://michael.haschke.biz/ - // @license http://unlicense.org/ - - // == Enforcing Options =============================================== - // - // These options tell JSHint to be more strict towards your code. Use - // them if you want to allow only a safe subset of JavaScript, very - // useful when your codebase is shared with a big number of developers - // with different skill levels. Was all true. - - "bitwise" : true, // Prohibit bitwise operators (&, |, ^, etc.). - "curly" : true, // Require {} for every new block or scope. - "eqeqeq" : true, // Require triple equals i.e. `===`. - "forin" : true, // Tolerate `for in` loops without `hasOwnPrototype`. - "immed" : true, // Require immediate invocations to be wrapped in parens e.g. `( function(){}() );` - "latedef" : true, // Prohibit variable use before definition. - "newcap" : true, // Require capitalization of all constructor functions e.g. `new F()`. - "noarg" : true, // Prohibit use of `arguments.caller` and `arguments.callee`. - "noempty" : true, // Prohibit use of empty blocks. - "nonew" : true, // Prohibit use of constructors for side-effects. - "plusplus" : false, // Prohibit use of `++` & `--`. //coding style related only - "regexp" : true, // Prohibit `.` and `[^...]` in regular expressions. - "undef" : true, // Require all non-global variables be declared before they are used. - "strict" : false, // Require `use strict` pragma in every file. - "trailing" : true, // Prohibit trailing whitespaces. - - // == Relaxing Options ================================================ - // - // These options allow you to suppress certain types of warnings. Use - // them only if you are absolutely positive that you know what you are - // doing. Was all false. - "asi" : false, // Tolerate Automatic Semicolon Insertion (no semicolons). - "boss" : false, // Tolerate assignments inside if, for & while. Usually conditions & loops are for comparison, not assignments. - "debug" : false, // Allow debugger statements e.g. browser breakpoints. - "eqnull" : false, // Tolerate use of `== null`. - "es5" : true, // Allow EcmaScript 5 syntax. // es5 is default https://github.com/jshint/jshint/issues/1411 - "esnext" : false, // Allow ES.next (ECMAScript 6) specific features such as `const` and `let`. - "evil" : false, // Tolerate use of `eval`. - "expr" : false, // Tolerate `ExpressionStatement` as Programs. - "funcscope" : false, // Tolerate declarations of variables inside of control structures while accessing them later from the outside. - "globalstrict" : false, // Allow global "use strict" (also enables 'strict'). - "iterator" : false, // Allow usage of __iterator__ property. - "lastsemic" : false, // Tolerat missing semicolons when the it is omitted for the last statement in a one-line block. - "laxbreak" : false, // Tolerate unsafe line breaks e.g. `return [\n] x` without semicolons. - "laxcomma" : true, // Suppress warnings about comma-first coding style. - "loopfunc" : false, // Allow functions to be defined within loops. - "multistr" : false, // Tolerate multi-line strings. - "onecase" : false, // Tolerate switches with just one case. - "proto" : false, // Tolerate __proto__ property. This property is deprecated. - "regexdash" : false, // Tolerate unescaped last dash i.e. `[-...]`. - "scripturl" : false, // Tolerate script-targeted URLs. - "smarttabs" : false, // Tolerate mixed tabs and spaces when the latter are used for alignmnent only. - "shadow" : false, // Allows re-define variables later in code e.g. `var x=1; x=2;`. - "sub" : false, // Tolerate all forms of subscript notation besides dot notation e.g. `dict['key']` instead of `dict.key`. - "supernew" : false, // Tolerate `new function () { ... };` and `new Object;`. - "validthis" : false, // Tolerate strict violations when the code is running in strict mode and you use this in a non-constructor function. - - // == Environments ==================================================== - // - // These options pre-define global variables that are exposed by - // popular JavaScript libraries and runtime environments—such as - // browser or node.js. - "browser" : false, // Standard browser globals e.g. `window`, `document`. - "couch" : false, // Enable globals exposed by CouchDB. - "devel" : false, // Allow development statements e.g. `console.log();`. - "dojo" : false, // Enable globals exposed by Dojo Toolkit. - "jquery" : false, // Enable globals exposed by jQuery JavaScript library. - "mootools" : false, // Enable globals exposed by MooTools JavaScript framework. - "node" : true, // Enable globals available when code is running inside of the NodeJS runtime environment. - "nonstandard" : false, // Define non-standard but widely adopted globals such as escape and unescape. - "prototypejs" : false, // Enable globals exposed by Prototype JavaScript framework. - "rhino" : false, // Enable globals available when your code is running inside of the Rhino runtime environment. - "wsh" : false, // Enable globals available when your code is running as a script for the Windows Script Host. - - // == JSLint Legacy =================================================== - // - // These options are legacy from JSLint. Aside from bug fixes they will - // not be improved in any way and might be removed at any point. - "nomen" : false, // Prohibit use of initial or trailing underbars in names. - "onevar" : false, // Allow only one `var` statement per function. - "passfail" : false, // Stop on first error. - "white" : false, // Check against strict whitespace and indentation rules. - - // == Undocumented Options ============================================ - // - // While I've found these options in [example1][2] and [example2][3] - // they are not described in the [JSHint Options documentation][4]. - // - // [4]: http://www.jshint.com/options/ - - "maxerr" : 100, // Maximum errors before stopping. - "predef" : [ // Extra globals. - //"exampleVar", - //"anotherCoolGlobal", - //"iLoveDouglas" - ] - //, "indent" : 2 // Specify indentation spacing -} diff --git a/.project b/.project deleted file mode 100644 index 8ec7b5a..0000000 --- a/.project +++ /dev/null @@ -1,18 +0,0 @@ - - - openpay-node - - - - - - com.eclipsesource.jshint.ui.builder - - - - - - org.nodeclipse.ui.NodeNature - org.eclipse.wst.jsdt.core.jsNature - - diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 544f970..0000000 --- a/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ - language: node_js - node_js: - - "8" - before_install: - - "npm config set strict-ssl false" diff --git a/package-lock.json b/package-lock.json index 8619b80..1eaa5b2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,20 @@ { - "name": "openpay", - "version": "2.0.1", + "name": "@neo-cheems/openpay", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "openpay", - "version": "2.0.1", - "dependencies": { - "underscore": "1.13.6", - "urllib": "^2.36.1" - }, + "name": "@neo-cheems/openpay", + "version": "4.0.0", + "license": "Apache-2.0", "devDependencies": { "@types/node": "^26.1.1", - "@types/underscore": "^1.13.0", "mocha": "10.2.0", "typescript": "^7.0.2" }, "engines": { - "node": ">=0.6.x" + "node": ">=20.0.0" } }, "node_modules/@types/node": { @@ -31,13 +27,6 @@ "undici-types": "~8.3.0" } }, - "node_modules/@types/underscore": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.13.0.tgz", - "integrity": "sha512-L6LBgy1f0EFQZ+7uSA57+n2g/s4Qs5r06Vwrwn0/nuK1de+adz00NWaztRQ30aEqw5qOaWbPI8u2cGQ52lj6VA==", - "dev": true, - "license": "MIT" - }, "node_modules/@typescript/typescript-aix-ppc64": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@typescript/typescript-aix-ppc64/-/typescript-aix-ppc64-7.0.2.tgz", @@ -378,25 +367,6 @@ "node": ">=16.20.0" } }, - "node_modules/address": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", - "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -433,11 +403,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -459,17 +424,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/ast-types": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", - "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -519,14 +473,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -610,15 +556,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -646,38 +583,6 @@ "dev": true, "license": "MIT" }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/copy-to": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/copy-to/-/copy-to-2.0.1.tgz", - "integrity": "sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/data-uri-to-buffer": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-1.2.0.tgz", - "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" - }, - "node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/decamelize": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", @@ -691,57 +596,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "node_modules/default-user-agent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-user-agent/-/default-user-agent-1.0.0.tgz", - "integrity": "sha1-FsRu/cq6PtxF8k8r1IaLAbfCrcY=", - "dependencies": { - "os-name": "~1.0.3" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/degenerator": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", - "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", - "dependencies": { - "ast-types": "0.x.x", - "escodegen": "1.x.x", - "esprima": "3.x.x" - } - }, - "node_modules/degenerator/node_modules/esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, "node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -752,33 +606,6 @@ "node": ">=0.3.1" } }, - "node_modules/digest-header": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/digest-header/-/digest-header-0.0.1.tgz", - "integrity": "sha1-Ecz23uxXZqw3l0TZAcEsuklRS+Y=", - "dependencies": { - "utility": "0.1.11" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/digest-header/node_modules/utility": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/utility/-/utility-0.1.11.tgz", - "integrity": "sha1-/eYM+bTkdRlHoM9dEEzik2ciZxU=", - "dependencies": { - "address": ">=0.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -786,27 +613,6 @@ "dev": true, "license": "MIT" }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -817,11 +623,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -835,81 +636,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -950,16 +676,6 @@ "flat": "cli.js" } }, - "node_modules/formstream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/formstream/-/formstream-1.1.0.tgz", - "integrity": "sha1-UfOXDyYTbrCtRDBN5M67UCB7RHk=", - "dependencies": { - "destroy": "^1.0.4", - "mime": "^1.3.4", - "pause-stream": "~0.0.11" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -982,29 +698,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/ftp": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", - "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", - "dependencies": { - "readable-stream": "1.1.x", - "xregexp": "2.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ftp/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -1015,32 +708,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-uri": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", - "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", - "dependencies": { - "data-uri-to-buffer": "1", - "debug": "2", - "extend": "~3.0.2", - "file-uri-to-path": "1", - "ftp": "~0.3.10", - "readable-stream": "2" - } - }, - "node_modules/get-uri/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/get-uri/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1119,77 +786,6 @@ "he": "bin/he" } }, - "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-proxy-agent": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", - "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", - "dependencies": { - "agent-base": "4", - "debug": "3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/http-proxy-agent/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/http-proxy-agent/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/https-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", - "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dependencies": { - "ms": "^2.0.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1205,12 +801,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -1225,14 +817,6 @@ "node": ">=8" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1299,11 +883,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -1317,18 +896,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -1362,25 +929,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", @@ -1394,22 +942,6 @@ "node": ">=10" } }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/mocha": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", @@ -1483,21 +1015,6 @@ "dev": true, "license": "MIT" }, - "node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, "node_modules/nanoid": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", @@ -1511,14 +1028,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/netmask": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", - "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1529,67 +1038,15 @@ "node": ">=0.10.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/os-name": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-1.0.3.tgz", - "integrity": "sha1-GzefZINa98Wn9JizV8uVIVwVnt8=", - "dependencies": { - "osx-release": "^1.0.0", - "win-release": "^1.0.0" - }, - "bin": { - "os-name": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osx-release": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/osx-release/-/osx-release-1.1.0.tgz", - "integrity": "sha1-8heRGigTaUmvG/kwiyQeJzfTzWw=", - "dependencies": { - "minimist": "^1.1.0" - }, - "bin": { - "osx-release": "cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -1622,54 +1079,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pac-proxy-agent": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", - "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", - "dependencies": { - "agent-base": "^4.2.0", - "debug": "^4.1.1", - "get-uri": "^2.0.0", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "pac-resolver": "^3.0.0", - "raw-body": "^2.2.0", - "socks-proxy-agent": "^4.0.1" - } - }, - "node_modules/pac-proxy-agent/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/pac-proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/pac-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", - "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", - "dependencies": { - "co": "^4.6.0", - "degenerator": "^1.0.4", - "ip": "^1.1.5", - "netmask": "^1.0.6", - "thunkify": "^2.1.2" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -1690,14 +1099,6 @@ "node": ">=0.10.0" } }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", - "dependencies": { - "through": "~2.3" - } - }, "node_modules/picomatch": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", @@ -1711,83 +1112,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/proxy-agent": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", - "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", - "dependencies": { - "agent-base": "^4.2.0", - "debug": "4", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^3.0.0", - "lru-cache": "^5.1.1", - "pac-proxy-agent": "^3.0.1", - "proxy-from-env": "^1.0.0", - "socks-proxy-agent": "^4.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/proxy-agent/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/proxy-agent/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1798,47 +1122,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/raw-body": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", - "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.3", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1865,20 +1148,8 @@ "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/serialize-javascript": { "version": "6.0.0", @@ -1890,78 +1161,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", - "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", - "dependencies": { - "ip": "1.1.5", - "smart-buffer": "^4.1.0" - }, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", - "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", - "dependencies": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", - "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -2019,35 +1218,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "node_modules/thunkify": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", - "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2061,30 +1231,6 @@ "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/typescript": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-7.0.2.tgz", @@ -2120,12 +1266,6 @@ "@typescript/typescript-win32-x64": "7.0.2" } }, - "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "license": "MIT" - }, "node_modules/undici-types": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", @@ -2133,102 +1273,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unescape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unescape/-/unescape-1.0.1.tgz", - "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==", - "dependencies": { - "extend-shallow": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/urllib": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/urllib/-/urllib-2.36.1.tgz", - "integrity": "sha512-g0Gh7bH5AwfPUzFetxPtJwumGHE6D7KQn0K68MwcJXPgO2K0AliwEIxLAwGMF+TpY75DYAsvz1h9ekagYoq33w==", - "dependencies": { - "any-promise": "^1.3.0", - "content-type": "^1.0.2", - "debug": "^2.6.9", - "default-user-agent": "^1.0.0", - "digest-header": "^0.0.1", - "ee-first": "~1.1.1", - "formstream": "^1.1.0", - "humanize-ms": "^1.2.0", - "iconv-lite": "^0.4.15", - "ip": "^1.1.5", - "proxy-agent": "^3.1.0", - "pump": "^3.0.0", - "qs": "^6.4.0", - "statuses": "^1.3.1", - "utility": "^1.16.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/urllib/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/urllib/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/utility": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/utility/-/utility-1.17.0.tgz", - "integrity": "sha512-KdVkF9An/0239BJ4+dqOa7NPrPIOeQE9AGfx0XS16O9DBiHNHRJMoeU5nL6pRGAkgJOqdOu8R4gBRcXnAocJKw==", - "dependencies": { - "copy-to": "^2.0.1", - "escape-html": "^1.0.3", - "mkdirp": "^0.5.1", - "mz": "^2.7.0", - "unescape": "^1.0.1" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/win-release": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", - "integrity": "sha1-X6VeAr58qTTt/BJmVjLoSbcuUgk=", - "dependencies": { - "semver": "^5.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -2257,15 +1301,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/xregexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", - "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=", - "engines": { - "node": "*" - } + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/y18n": { "version": "5.0.8", @@ -2277,11 +1314,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", diff --git a/package.json b/package.json index d07e48a..e5aaba5 100644 --- a/package.json +++ b/package.json @@ -32,9 +32,6 @@ "publishConfig": { "access": "public" }, - "dependencies": { - "urllib": "^2.36.1" - }, "devDependencies": { "@types/node": "^26.1.1", "mocha": "10.2.0", diff --git a/src/base-resource.ts b/src/base-resource.ts index 040a245..63e874e 100644 --- a/src/base-resource.ts +++ b/src/base-resource.ts @@ -62,3 +62,39 @@ export abstract class BaseResource { return query ? `${this.baseUrl}/${segment}${query}` : `${this.baseUrl}/${segment}`; } } + +/** + * A collection nested one level under a parent id, e.g. + * `{merchantId}/customers/{customerId}/cards`. Covers the common + * create/list/get/delete shape shared by most customer sub-resources; + * extend it to add resource-specific methods (capture, refund, update…). + */ +export class NestedCollection extends BaseResource { + constructor( + config: OpenpayConfig, + httpClient: HttpClient, + parentBaseUrl: string, + protected readonly collection: string, + ) { + super(config, httpClient, parentBaseUrl); + } + + create(parentId: string, data: unknown, callback: Callback): void { + this.request('POST', this.url(`${parentId}/${this.collection}`), data, callback); + } + + list(parentId: string, callback: Callback): void; + list(parentId: string, data: QueryParams, callback: Callback): void; + list(parentId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { + const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); + this.request('GET', this.urlWithQuery(`${parentId}/${this.collection}`, query), undefined, resolvedCb!); + } + + get(parentId: string, childId: string, callback: Callback): void { + this.request('GET', this.url(`${parentId}/${this.collection}/${childId}`), undefined, callback); + } + + delete(parentId: string, childId: string, callback: Callback): void { + this.request('DELETE', this.url(`${parentId}/${this.collection}/${childId}`), undefined, callback); + } +} diff --git a/src/errors.ts b/src/errors.ts index b744f57..c8d66e1 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -49,10 +49,3 @@ export class NetworkError extends OpenpayError { this.name = 'NetworkError'; } } - -export class TimeoutError extends OpenpayError { - constructor(timeoutMs: number) { - super(`Request timed out after ${timeoutMs}ms`, 408, null); - this.name = 'TimeoutError'; - } -} diff --git a/src/http-client.ts b/src/http-client.ts index eb919b5..e286944 100644 --- a/src/http-client.ts +++ b/src/http-client.ts @@ -1,10 +1,8 @@ -import * as http from 'http'; -import * as urllib from 'urllib'; import type { HttpMethod, OpenpayConfig, Callback } from './types'; import { OpenpayError, NetworkError } from './errors'; import { escapeBrackets } from './url-utils'; -// ── HTTP Client Interface (DIP: resources depend on this, not on urllib) ─ +// ── HTTP Client Interface (DIP: resources depend on this, not on fetch) ─ export interface HttpClient { request( @@ -16,7 +14,47 @@ export interface HttpClient { ): void; } -// ── Urllib-based Implementation ──────────────────────────────────── +/** Per-instance API host derived from country + sandbox flag. */ +export function hostFor(config: OpenpayConfig): string { + return `https://${config.isSandbox ? 'sandbox-api' : 'api'}.openpay.${config.countryCode}`; +} + +async function performRequest( + method: HttpMethod, + fullUrl: string, + body: unknown | undefined, + config: OpenpayConfig, + callback: Callback, +): Promise { + const auth = Buffer.from(config.privateKey + ':').toString('base64'); + + let res: Response; + try { + res = await fetch(fullUrl, { + method, + headers: { Authorization: `Basic ${auth}`, 'Content-Type': 'application/json' }, + body: body === undefined ? undefined : JSON.stringify(body), + signal: AbortSignal.timeout(config.timeout), + }); + } catch (err) { + callback(new NetworkError(err as Error), null, null); + return; + } + + const headers = Object.fromEntries(res.headers.entries()); + const respBody = await res.json().catch(() => null); + + if (res.ok) { + callback(null, respBody, { statusCode: res.status, headers }); + } else { + callback(new OpenpayError(`HTTP ${res.status}`, res.status, respBody), null, { + statusCode: res.status, + headers, + }); + } +} + +// ── fetch-based Implementation ────────────────────────────────────── export class UrllibHttpClient implements HttpClient { request( @@ -26,49 +64,11 @@ export class UrllibHttpClient implements HttpClient { config: OpenpayConfig, callback: Callback, ): void { - const baseUrl = config.isSandbox - ? UrllibHttpClient.SANDBOX_URL + UrllibHttpClient.API_VERSION - : UrllibHttpClient.BASE_URL + UrllibHttpClient.API_VERSION; - - const fullUrl = baseUrl + escapeBrackets(url); - - const options: urllib.RequestOptions = { - auth: config.privateKey + ':', - method, - contentType: 'json', - timeout: config.timeout, - data: body, - dataType: 'json', - }; - - urllib.request(fullUrl, options, (err: Error | null, respBody: unknown, res: http.IncomingMessage) => { - if (err) { - callback(new NetworkError(err), null, null); - return; - } - - const resCode: number = res?.statusCode ?? 0; - const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; - - if (isSuccess) { - callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); - } else { - const openpayErr = new OpenpayError( - `HTTP ${resCode}`, - resCode, - respBody, - ); - callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); - } - }); + void performRequest(method, hostFor(config) + '/v1/' + escapeBrackets(url), body, config, callback); } - - static BASE_URL = 'https://api.openpay.mx'; - static API_VERSION = '/v1/'; - static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; } -// ── Store HTTP Client (uses different base URL format) ───────────── +// ── Store HTTP Client (no /v1 prefix) ─────────────────────────────── export class StoreHttpClient implements HttpClient { request( @@ -78,40 +78,6 @@ export class StoreHttpClient implements HttpClient { config: OpenpayConfig, callback: Callback, ): void { - const baseUrl = config.isSandbox - ? UrllibHttpClient.SANDBOX_URL + '/' - : UrllibHttpClient.BASE_URL + '/'; - - const fullUrl = baseUrl + escapeBrackets(url); - - const options: urllib.RequestOptions = { - auth: config.privateKey + ':', - method, - contentType: 'json', - timeout: config.timeout, - data: body, - dataType: 'json', - }; - - urllib.request(fullUrl, options, (err: Error | null, respBody: unknown, res: http.IncomingMessage) => { - if (err) { - callback(new NetworkError(err), null, null); - return; - } - - const resCode: number = res?.statusCode ?? 0; - const isSuccess = resCode === 200 || resCode === 201 || resCode === 204; - - if (isSuccess) { - callback(null, respBody, { statusCode: resCode, headers: res?.headers ?? {} }); - } else { - const openpayErr = new OpenpayError( - `HTTP ${resCode}`, - resCode, - respBody, - ); - callback(openpayErr, null, { statusCode: resCode, headers: res?.headers ?? {} }); - } - }); + void performRequest(method, hostFor(config) + '/' + escapeBrackets(url), body, config, callback); } } diff --git a/src/openpay.ts b/src/openpay.ts index 82a2935..e5d0165 100644 --- a/src/openpay.ts +++ b/src/openpay.ts @@ -23,14 +23,9 @@ import { GroupsResource } from './resources/groups'; * openpay.charges.create({ amount: 100, ... }, (err, body, res) => { ... }); * ``` */ -class Openpay { - // ── Static Base URLs (per-country, mutable for backward compat) ── - - static BASE_URL = 'https://api.openpay.mx'; - static API_VERSION = '/v1/'; - static SANDBOX_URL = 'https://sandbox-api.openpay.mx'; - static SANDBOX_API_VERSION = '/v1/'; +const COUNTRY_CODES: readonly CountryCode[] = ['mx', 'pe', 'co']; +class Openpay { // ── Instance State ─────────────────────────────────────────────── private config: OpenpayConfig; @@ -39,19 +34,19 @@ class Openpay { // ── Resources (public API surface) ─────────────────────────────── - public merchant: MerchantResource; - public charges: ChargesResource; - public payouts: PayoutsResource; - public fees: FeesResource; - public plans: PlansResource; - public cards: CardsResource; - public customers: CustomersResource; - public webhooks: WebhooksResource; - public tokens: TokensResource; - public checkouts: CheckoutsResource; - public stores: StoresResource; - public pse: PseResource; - public groups: GroupsResource; + public merchant!: MerchantResource; + public charges!: ChargesResource; + public payouts!: PayoutsResource; + public fees!: FeesResource; + public plans!: PlansResource; + public cards!: CardsResource; + public customers!: CustomersResource; + public webhooks!: WebhooksResource; + public tokens!: TokensResource; + public checkouts!: CheckoutsResource; + public stores!: StoresResource; + public pse!: PseResource; + public groups!: GroupsResource; // ── Constructor ────────────────────────────────────────────────── @@ -68,31 +63,14 @@ class Openpay { privateKey, isSandbox, timeout: 90_000, + countryCode: COUNTRY_CODES.includes(countryCode) ? countryCode : 'mx', }; // Create HTTP clients (DIP: resources depend on these abstractions) this.apiHttpClient = new UrllibHttpClient(); this.storeHttpClient = new StoreHttpClient(); - // Set base URLs per country - this.setBaseUrl(countryCode); - - // Instantiate resources & inject dependencies - this.merchant = new MerchantResource(this.config, this.apiHttpClient); - this.charges = new ChargesResource(this.config, this.apiHttpClient); - this.payouts = new PayoutsResource(this.config, this.apiHttpClient); - this.fees = new FeesResource(this.config, this.apiHttpClient); - this.plans = new PlansResource(this.config, this.apiHttpClient); - this.cards = new CardsResource(this.config, this.apiHttpClient); - this.customers = new CustomersResource(this.config, this.apiHttpClient); - this.webhooks = new WebhooksResource(this.config, this.apiHttpClient); - this.tokens = new TokensResource(this.config, this.apiHttpClient); - this.checkouts = new CheckoutsResource(this.config, this.apiHttpClient); - this.pse = new PseResource(this.config, this.apiHttpClient); - this.groups = new GroupsResource(this.config, this.apiHttpClient); - - // Stores uses its own HTTP client (different base URL format) - this.stores = new StoresResource(this.config, this.storeHttpClient); + this.rebuildResources(); } // ── Configuration Setters ──────────────────────────────────────── @@ -121,27 +99,13 @@ class Openpay { this.rebuildResources(); } - /** Per-country base URL configuration. */ + /** Change the country (per instance) and rebuild resources. */ setBaseUrl(countryCode: CountryCode): void { - console.log('setting base url from country'); - switch (countryCode) { - case 'pe': - console.log('Country Peru'); - Openpay.BASE_URL = 'https://api.openpay.pe'; - Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.pe'; - break; - case 'co': - console.log('Country Colombia'); - Openpay.BASE_URL = 'https://api.openpay.co'; - Openpay.SANDBOX_URL = 'https://sandbox-api.openpay.co'; - break; - case 'mx': - console.log('Country Mexico'); - console.log('Default value'); - break; - default: - console.error('Error country code, setting mx default.'); - } + this.config = { + ...this.config, + countryCode: COUNTRY_CODES.includes(countryCode) ? countryCode : 'mx', + }; + this.rebuildResources(); } // ── Helpers ────────────────────────────────────────────────────── diff --git a/src/resources/customers.ts b/src/resources/customers.ts index c368f8f..fe39a52 100644 --- a/src/resources/customers.ts +++ b/src/resources/customers.ts @@ -1,52 +1,18 @@ -import { BaseResource } from '../base-resource'; +import { BaseResource, NestedCollection } from '../base-resource'; import type { HttpClient } from '../http-client'; import type { Callback, OpenpayConfig, QueryParams } from '../types'; // ── Customer Sub-Resources ───────────────────────────────────────── -class CustomerCards extends BaseResource { +class CustomerCards extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/cards`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb!); - } - - get(customerId: string, cardId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } - - delete(customerId: string, cardId: string, callback: Callback): void { - this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + super(config, httpClient, `${config.merchantId}/customers`, 'cards'); } } -class CustomerCharges extends BaseResource { +class CustomerCharges extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/charges`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/charges`, query), undefined, resolvedCb!); - } - - get(customerId: string, transactionId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/charges/${transactionId}`), undefined, callback); + super(config, httpClient, `${config.merchantId}/customers`, 'charges'); } capture(customerId: string, transactionId: string, data: unknown, callback: Callback): void { @@ -58,99 +24,31 @@ class CustomerCharges extends BaseResource { } } -class CustomerTransfers extends BaseResource { +class CustomerTransfers extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/transfers`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/transfers`, query), undefined, resolvedCb!); - } - - get(customerId: string, transactionId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/transfers/${transactionId}`), undefined, callback); + super(config, httpClient, `${config.merchantId}/customers`, 'transfers'); } } -class CustomerPayouts extends BaseResource { +class CustomerPayouts extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/payouts`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/payouts`, query), undefined, resolvedCb!); - } - - get(customerId: string, transactionId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/payouts/${transactionId}`), undefined, callback); + super(config, httpClient, `${config.merchantId}/customers`, 'payouts'); } } -class CustomerSubscriptions extends BaseResource { +class CustomerSubscriptions extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/subscriptions`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/subscriptions`, query), undefined, resolvedCb!); - } - - get(customerId: string, subscriptionId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); + super(config, httpClient, `${config.merchantId}/customers`, 'subscriptions'); } update(customerId: string, subscriptionId: string, data: unknown, callback: Callback): void { this.request('PUT', this.url(`${customerId}/subscriptions/${subscriptionId}`), data, callback); } - - delete(customerId: string, subscriptionId: string, callback: Callback): void { - this.request('DELETE', this.url(`${customerId}/subscriptions/${subscriptionId}`), undefined, callback); - } } -class CustomerBankAccounts extends BaseResource { +class CustomerBankAccounts extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/bankaccounts`), data, callback); - } - - get(customerId: string, bankAccountId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); - } - - delete(customerId: string, bankAccountId: string, callback: Callback): void { - this.request('DELETE', this.url(`${customerId}/bankaccounts/${bankAccountId}`), undefined, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/bankaccounts`, query), undefined, resolvedCb!); + super(config, httpClient, `${config.merchantId}/customers`, 'bankaccounts'); } } diff --git a/src/resources/groups.ts b/src/resources/groups.ts index e1e99fc..18323a0 100644 --- a/src/resources/groups.ts +++ b/src/resources/groups.ts @@ -1,31 +1,12 @@ -import { BaseResource } from '../base-resource'; +import { BaseResource, NestedCollection } from '../base-resource'; import type { HttpClient } from '../http-client'; import type { Callback, OpenpayConfig, QueryParams } from '../types'; // ── Group Sub-Resources ──────────────────────────────────────────── -class GroupCustomerCards extends BaseResource { +class GroupCustomerCards extends NestedCollection { constructor(config: OpenpayConfig, httpClient: HttpClient) { - super(config, httpClient, `groups/${config.merchantId}/customers`); - } - - create(customerId: string, data: unknown, callback: Callback): void { - this.request('POST', this.url(`${customerId}/cards`), data, callback); - } - - list(customerId: string, callback: Callback): void; - list(customerId: string, data: QueryParams, callback: Callback): void; - list(customerId: string, dataOrCb: QueryParams | Callback, cb?: Callback): void { - const { query, cb: resolvedCb } = this.resolveListParams(dataOrCb, cb); - this.request('GET', this.urlWithQuery(`${customerId}/cards`, query), undefined, resolvedCb!); - } - - get(customerId: string, cardId: string, callback: Callback): void { - this.request('GET', this.url(`${customerId}/cards/${cardId}`), undefined, callback); - } - - delete(customerId: string, cardId: string, callback: Callback): void { - this.request('DELETE', this.url(`${customerId}/cards/${cardId}`), undefined, callback); + super(config, httpClient, `groups/${config.merchantId}/customers`, 'cards'); } } diff --git a/src/types.ts b/src/types.ts index f7120b5..1d1422f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -17,6 +17,7 @@ export interface OpenpayConfig { privateKey: string; isSandbox: boolean; timeout: number; + countryCode: CountryCode; } // ── Callback ─────────────────────────────────────────────────────── diff --git a/test/bank-accounts.test.js b/test/bank-accounts.test.js index c818470..999b0cb 100644 --- a/test/bank-accounts.test.js +++ b/test/bank-accounts.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ var openpay = new Openpay('m1qp3av1ymcfufkuuoah', 'sk_ed05f1de65fa4a67a3d3056a4efa2905'); @@ -30,7 +29,7 @@ describe('Get all bank_account with creation filter', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/cards.test.js b/test/cards.test.js index 6537ec0..50d26bb 100644 --- a/test/cards.test.js +++ b/test/cards.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -24,7 +23,7 @@ describe('Get cards list with creation[lte] filter', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/charges_test.js b/test/charges_test.js index 0236118..ef18b15 100644 --- a/test/charges_test.js +++ b/test/charges_test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -25,7 +24,7 @@ describe('Get charges list with amount[lte] filter', function () { function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/colombia/cards.test.colombia.js b/test/colombia/cards.test.colombia.js index eb199d0..d1aceb3 100644 --- a/test/colombia/cards.test.colombia.js +++ b/test/colombia/cards.test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -201,7 +200,7 @@ describe('Testing cards', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/charges_test.colombia.js b/test/colombia/charges_test.colombia.js index 0ded2e8..61244fa 100644 --- a/test/colombia/charges_test.colombia.js +++ b/test/colombia/charges_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -193,7 +192,7 @@ describe('Testing charges', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/clients_test.colombia.js b/test/colombia/clients_test.colombia.js index 97750c8..d0c378e 100644 --- a/test/colombia/clients_test.colombia.js +++ b/test/colombia/clients_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -69,7 +68,7 @@ describe('Customer testing', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/plans.test.colombia.js b/test/colombia/plans.test.colombia.js index c9548d6..b270502 100644 --- a/test/colombia/plans.test.colombia.js +++ b/test/colombia/plans.test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -72,7 +71,7 @@ describe('Plans testing', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/pse_test.colombia.js b/test/colombia/pse_test.colombia.js index 15f047d..87c84ae 100644 --- a/test/colombia/pse_test.colombia.js +++ b/test/colombia/pse_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -78,7 +77,7 @@ describe('Testing pse', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/stores_test.colombia.js b/test/colombia/stores_test.colombia.js index 12d42d7..ab8b6d7 100644 --- a/test/colombia/stores_test.colombia.js +++ b/test/colombia/stores_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -27,7 +26,7 @@ describe('List stores', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/subscriptions.test.colombia.js b/test/colombia/subscriptions.test.colombia.js index dc26ec1..83c389a 100644 --- a/test/colombia/subscriptions.test.colombia.js +++ b/test/colombia/subscriptions.test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ var openpay = new Openpay('mwf7x79goz7afkdbuyqd', 'sk_94a89308b4d7469cbda762c4b392152a', 'co', false); @@ -117,7 +116,7 @@ describe('Plans testing', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/tokens_test.colombia.js b/test/colombia/tokens_test.colombia.js index d8b8389..918bc5f 100644 --- a/test/colombia/tokens_test.colombia.js +++ b/test/colombia/tokens_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -46,7 +45,7 @@ describe('Token testing', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/colombia/webhooks_test.colombia.js b/test/colombia/webhooks_test.colombia.js index 6f728b1..f817438 100644 --- a/test/colombia/webhooks_test.colombia.js +++ b/test/colombia/webhooks_test.colombia.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -63,7 +62,7 @@ describe('Webhook testing', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/customers_test.js b/test/customers_test.js index 7154196..c3b830c 100644 --- a/test/customers_test.js +++ b/test/customers_test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -24,7 +23,7 @@ describe('Get customers list with creation[gte] filter', function() { function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/fees.test.js b/test/fees.test.js index 8202aef..e32505f 100644 --- a/test/fees.test.js +++ b/test/fees.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -24,7 +23,7 @@ describe('Get fees list with creation[lte] filter', function() { function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/group_test.js b/test/group_test.js index 0aead65..9dbd699 100644 --- a/test/group_test.js +++ b/test/group_test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); // var request = require('request'); var urllib = require('urllib'); @@ -337,7 +336,7 @@ describe('Testing group API', function(){ function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/host.test.js b/test/host.test.js new file mode 100644 index 0000000..1bb2488 --- /dev/null +++ b/test/host.test.js @@ -0,0 +1,19 @@ +'use strict'; + +const assert = require('assert'); +const { hostFor } = require('../lib/http-client'); + +describe('hostFor', function () { + it('builds per-country, per-mode hosts', function () { + const base = { merchantId: 'm', privateKey: 'k', timeout: 1 }; + assert.equal(hostFor({ ...base, isSandbox: true, countryCode: 'mx' }), 'https://sandbox-api.openpay.mx'); + assert.equal(hostFor({ ...base, isSandbox: false, countryCode: 'pe' }), 'https://api.openpay.pe'); + assert.equal(hostFor({ ...base, isSandbox: true, countryCode: 'co' }), 'https://sandbox-api.openpay.co'); + }); + + it('constructor falls back to mx on bad country code', function () { + const Openpay = require('../lib/index'); + const op = new Openpay('m', 'k', 'xx'); + assert.equal(hostFor(op['config']), 'https://sandbox-api.openpay.mx'); + }); +}); diff --git a/test/payouts_test.js b/test/payouts_test.js index 35a8055..a431b07 100644 --- a/test/payouts_test.js +++ b/test/payouts_test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -25,7 +24,7 @@ describe('Get all payouts with filters creation and amount', function(){ function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/peru/cards.pe.test.js b/test/peru/cards.pe.test.js index 5c1e9a4..d1b2ae9 100644 --- a/test/peru/cards.pe.test.js +++ b/test/peru/cards.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -156,7 +155,7 @@ describe('delete card', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/peru/charges.pe.test.js b/test/peru/charges.pe.test.js index 29bed50..6db89eb 100644 --- a/test/peru/charges.pe.test.js +++ b/test/peru/charges.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -198,7 +197,7 @@ describe('Get charges', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/peru/checkouts.pe.test.js b/test/peru/checkouts.pe.test.js index 8eff18c..e72f694 100644 --- a/test/peru/checkouts.pe.test.js +++ b/test/peru/checkouts.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -132,7 +131,7 @@ describe('Update checkouts', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/peru/customers.pe.test.js b/test/peru/customers.pe.test.js index fb950e5..9103399 100644 --- a/test/peru/customers.pe.test.js +++ b/test/peru/customers.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -107,7 +106,7 @@ describe("delete customer", function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/peru/tokens.pe.test.js b/test/peru/tokens.pe.test.js index 54a146b..de28317 100644 --- a/test/peru/tokens.pe.test.js +++ b/test/peru/tokens.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -53,7 +52,7 @@ describe('Get Token', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); console.log(body) } if (code >= 300) { diff --git a/test/peru/webhooks.pe.test.js b/test/peru/webhooks.pe.test.js index 3cc658a..0aa5537 100644 --- a/test/peru/webhooks.pe.test.js +++ b/test/peru/webhooks.pe.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../../lib/openpay'); /*Sandbox*/ @@ -69,7 +68,7 @@ describe('Eliminar Webhook', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/plans.test.js b/test/plans.test.js index f02e9b6..7af4c17 100644 --- a/test/plans.test.js +++ b/test/plans.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -24,7 +23,7 @@ describe('Get plans list with creation[lte] filter', function() { function printLog(code, body, error){ if(enableLogging){ - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if(code>=300){ console.log(' '); diff --git a/test/subscriptions.test.js b/test/subscriptions.test.js index e4b093d..80720bf 100644 --- a/test/subscriptions.test.js +++ b/test/subscriptions.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ var openpay = new Openpay('m1qp3av1ymcfufkuuoah', 'sk_ed05f1de65fa4a67a3d3056a4efa2905'); @@ -29,7 +28,7 @@ describe('Get all subscriptions with creation filter', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/test.js b/test/test.js index 973dca6..da5bf95 100644 --- a/test/test.js +++ b/test/test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var urllib = require('urllib'); var Openpay = require('../lib/openpay'); @@ -903,7 +902,7 @@ describe('Testing whole API', function(){ function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); diff --git a/test/transfers.test.js b/test/transfers.test.js index c18481b..d1f5eb3 100644 --- a/test/transfers.test.js +++ b/test/transfers.test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var _ = require('underscore'); var Openpay = require('../lib/openpay'); /*Sandbox*/ var openpay = new Openpay('m1qp3av1ymcfufkuuoah', 'sk_ed05f1de65fa4a67a3d3056a4efa2905'); @@ -33,7 +32,7 @@ describe('Get all transfers with creation filter', function () { function printLog(code, body, error) { if (enableLogging) { - console.log(code, _.isUndefined(body) || _.isNull(body) ? '' : _.isArray(body) ? _.pluck(body, 'id') : body.id); + console.log(code, body == null ? '' : Array.isArray(body) ? body.map(x => x.id) : body.id); } if (code >= 300) { console.log(' '); From 71f9f36e7ae2955b80c148ad3cd2fe6068d6c331 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:17:40 -0600 Subject: [PATCH 14/21] release: bump version to 5.0.0 - Breaking changes: removed static BASE_URL/SANDBOX_URL/API_VERSION from Openpay class, removed TimeoutError class, removed urllib dependency in favor of native fetch - Fix tests: replace urllib with native fetch in test/test.js and test/group_test.js --- package.json | 2 +- test/group_test.js | 29 +++++++++++++++++------------ test/test.js | 29 +++++++++++++++++------------ 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index e5aaba5..cd4cdbf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@neo-cheems/openpay", "description": "Openpay API client for Node.js — typed, SOLID, and battle-tested", - "version": "4.0.0", + "version": "5.0.0", "license": "Apache-2.0", "author": "neo-cheems", "repository": { diff --git a/test/group_test.js b/test/group_test.js index 9dbd699..a31b075 100644 --- a/test/group_test.js +++ b/test/group_test.js @@ -1,6 +1,5 @@ var assert = require('assert'); // var request = require('request'); -var urllib = require('urllib'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -346,15 +345,21 @@ function printLog(code, body, error){ } function getVerificationCode(url, callback) { - urllib.request(url, function(err, body, res){ - var resCode = res.statusCode; - var error = (resCode!=200 && resCode!=201 && resCode!=204) ? body : null; - var verification_code = null; - console.info('error: ' + error); - if (!error) { - verification_code = body.toString().substring(body.indexOf('verification_code') + 28 , body.indexOf('verification_code') + 28 + 8); - console.info('verification_code: ' + verification_code); - } - callback(error, verification_code); - }); + fetch(url) + .then(function(res) { + var resCode = res.status; + var error = (resCode != 200 && resCode != 201 && resCode != 204) ? res.statusText : null; + return res.text().then(function(body) { + console.info('error: ' + error); + var verification_code = null; + if (!error) { + verification_code = body.substring(body.indexOf('verification_code') + 28 , body.indexOf('verification_code') + 28 + 8); + console.info('verification_code: ' + verification_code); + } + callback(error, verification_code); + }); + }) + .catch(function(err) { + callback(err, null); + }); } diff --git a/test/test.js b/test/test.js index da5bf95..d8dd058 100644 --- a/test/test.js +++ b/test/test.js @@ -1,5 +1,4 @@ var assert = require('assert'); -var urllib = require('urllib'); var Openpay = require('../lib/openpay'); /*Sandbox*/ @@ -912,15 +911,21 @@ function printLog(code, body, error) { } function getVerificationCode(url, callback) { - urllib.request(url, function(err, body, res){ - var resCode = res.statusCode; - var error = (resCode!=200 && resCode!=201 && resCode!=204) ? body : null; - var verification_code = null; - console.info('error: ' + error); - if (!error) { - verification_code = body.toString().substring(body.indexOf('verification_code') + 28 , body.indexOf('verification_code') + 28 + 8); - console.info('verification_code: ' + verification_code); - } - callback(error, verification_code); - }); + fetch(url) + .then(function(res) { + var resCode = res.status; + var error = (resCode != 200 && resCode != 201 && resCode != 204) ? res.statusText : null; + return res.text().then(function(body) { + console.info('error: ' + error); + var verification_code = null; + if (!error) { + verification_code = body.substring(body.indexOf('verification_code') + 28 , body.indexOf('verification_code') + 28 + 8); + console.info('verification_code: ' + verification_code); + } + callback(error, verification_code); + }); + }) + .catch(function(err) { + callback(err, null); + }); } From 5ef9793c4385299011c9942e420eea3053341985 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:18:07 -0600 Subject: [PATCH 15/21] ci: add GitHub Actions pipeline for build and test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Runs TypeScript build and mocha tests on push/PR for Node.js 20 and 22. Tests are integration tests against the Openpay sandbox — CI reports results but notes sandbox availability as a factor. --- .github/workflows/ci.yml | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..86a58ed --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,43 @@ +# CI pipeline for @neo-cheems/openpay +# Runs tests against Openpay sandbox on push/PR. +# Note: tests are integration tests that call the real Openpay sandbox API. +# They pass against a live sandbox; rate limits or downtime may cause +# non-deterministic failures. + +name: CI + +on: + push: + branches: [main, develop, typescript-solid-refactor] + pull_request: + branches: [main, develop] + +jobs: + test: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [20, 22] + fail-fast: false + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: TypeScript build (type-check + compile) + run: npm run build + + - name: Run tests + run: npm test + timeout-minutes: 5 From 8211e3157b33beb2d7e27ab35a23dd86e5943bb5 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 12:52:02 -0600 Subject: [PATCH 16/21] chore(ci): add a ci/cd pipeline to test the code --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 86a58ed..2d61b5a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,9 +8,9 @@ name: CI on: push: - branches: [main, develop, typescript-solid-refactor] + branches: [develop] pull_request: - branches: [main, develop] + branches: [master] jobs: test: From e6a009fb2b38e43c9168b2031bf2ba3b25d3e477 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:12:41 -0600 Subject: [PATCH 17/21] chore: require Node.js >= 24.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd4cdbf..ed536b5 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "typescript" ], "engines": { - "node": ">=20.0.0" + "node": ">=24.0.0" }, "main": "./lib/index.js", "types": "./lib/index.d.ts", From 53f7c42809c737d4ddc4058b525ee838b508f8e0 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:12:52 -0600 Subject: [PATCH 18/21] ci: switch CI matrix to Node.js 24 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d61b5a..4ced078 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,7 +18,7 @@ jobs: strategy: matrix: - node-version: [20, 22] + node-version: [24] fail-fast: false steps: From 0feb5a9a3a7bcb5f04ad4f04e06d99e1913b5b4c Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:13:05 -0600 Subject: [PATCH 19/21] docs: bump minimum Node.js version in README to 24 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f545a70..5c06d4c 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## Requirements -- **Node.js ≥ 20.0.0** (active LTS) +- **Node.js ≥ 24.0.0** (active LTS) - TypeScript ≥ 5.x (optional — types are bundled) ## Installation From 5aa2e61593f19df45177e51f3d4baf8dbc7f2308 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:13:17 -0600 Subject: [PATCH 20/21] chore: add .nvmrc --- .nvmrc | 1 + 1 file changed, 1 insertion(+) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..a45fd52 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 From 15ab5fd287912b440427153aed3afc0dd21b1572 Mon Sep 17 00:00:00 2001 From: Jorge Tirado Sandoval <52668750+tesuser4444@users.noreply.github.com> Date: Mon, 20 Jul 2026 13:13:35 -0600 Subject: [PATCH 21/21] docs: fix remaining Node.js version references in banner and upgrade guide --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5c06d4c..206fabb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ![Openpay nodejs](https://www.openpay.mx/img/github/nodejs.jpg) > **📦 v4.x (this branch):** Full TypeScript rewrite with strict mode, SOLID architecture, -> typed interfaces for every resource, and Node.js ≥ 20 LTS. +> typed interfaces for every resource, and Node.js ≥ 24 LTS. > The callback API is 100 % backwards-compatible with v2.x. > See [Upgrading from v2.x](#upgrading-from-v2x) below. @@ -155,7 +155,7 @@ src/ ### What changed -- **Node.js ≥ 20** is now required (was `>=0.6.x`) +- **Node.js ≥ 24** is now required (was `>=0.6.x`) - The library is written in **TypeScript** with `strict: true` - The `underscore` dependency has been removed (native ES2022 replacements) - Errors are `OpenpayError` instances with `.statusCode`, `.description`, `.category`, `.requestId`