From c26b40f7179903e7593468b0b232f54e6df9766e Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Wed, 22 May 2024 12:04:37 +0200 Subject: [PATCH 01/21] Generates tests for SDK and changes generate function to return Promise --- output.pdf | Bin 0 -> 18819 bytes package-lock.json | 4442 +++++++++++++++++++++++++++++++++++ src/Client.ts | 12 +- src/core/fetcher/Fetcher.ts | 2 - tests/custom.test.ts | 96 +- tests/test.html | 0 6 files changed, 4540 insertions(+), 12 deletions(-) create mode 100644 output.pdf create mode 100644 package-lock.json create mode 100644 tests/test.html diff --git a/output.pdf b/output.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f4adfdca410fdaf33e584ecbbf93d7b3c706f8e5 GIT binary patch literal 18819 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 UyFkJmo_qbjDK$F_=buvlKZ3@f!vFvP literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1dec07d --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4442 @@ +{ + "name": "fileforge", + "version": "0.0.9", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fileforge", + "version": "0.0.9", + "license": "MIT", + "dependencies": { + "form-data": "4.0.0", + "form-data-encoder": "^4.0.2", + "formdata-node": "^6.0.3", + "js-base64": "3.7.2", + "node-fetch": "2.7.0", + "qs": "6.11.2", + "url-join": "4.0.1" + }, + "devDependencies": { + "@types/jest": "29.5.5", + "@types/node": "17.0.33", + "@types/node-fetch": "2.6.9", + "@types/qs": "6.9.8", + "@types/url-join": "4.0.1", + "jest": "29.7.0", + "jest-environment-jsdom": "29.7.0", + "prettier": "2.7.1", + "ts-jest": "29.1.1", + "typescript": "4.6.4" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/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==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/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==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/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, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.5", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", + "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/node": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==", + "dev": true + }, + "node_modules/@types/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/qs": { + "version": "6.9.8", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", + "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "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, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "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 + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001618", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz", + "integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "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, + "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/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "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 + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.768", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.768.tgz", + "integrity": "sha512-z2U3QcvNuxdkk33YV7R1bVMNq7fL23vq3WfO5BHcqrm4TnDGReouBfYKLEFh5umoK1XACjEwp8mmnhXk2EJigw==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "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 + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.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==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/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==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz", + "integrity": "sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/formdata-node": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-6.0.3.tgz", + "integrity": "sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==", + "engines": { + "node": ">= 18" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "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, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "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, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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 + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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, + "engines": { + "node": ">=8" + } + }, + "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ts-jest": { + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "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, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/src/Client.ts b/src/Client.ts index 572ccb8..1ceae60 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -37,7 +37,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.GenerateRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise { + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", @@ -70,7 +70,15 @@ export class FileForgeClient { maxRetries: requestOptions?.maxRetries, }); if (_response.ok) { - return _response.body; + const chunks: any[] = []; + + for await (let chunk of _response.body) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); + + return buffer; } if (_response.error.reason === "status-code") { diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index a753892..9bf147a 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -125,8 +125,6 @@ async function fetcherImpl(args: Fetcher.Args): Promise My First Web Page +

Hello World!

@@ -15,6 +19,10 @@ const HTML = ` `; +const CSS =`body{ + background-color: lightblue; +} +`; /** * This is a custom test file, if you wish to add more tests * to your SDK. @@ -24,26 +32,98 @@ const HTML = ` * you will have tests automatically generated for you. */ describe("test", () => { - it("should generate a PDF", async () => { - const blob = new Blob([HTML], { + it("should generate a PDF buffer", async () => { + const htmlBlob = new Blob([HTML], { type: "text/html", }); - const htmlFile = new File([blob], "index.html", { type: "text/html" }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); const ff = new FileForgeClient({ - apiKey: "480039ed-ccf0-48be-9103-6875d0559012" + apiKey: FILEFORGE_API_KEY }); + const pdf = await ff.generate( - [htmlFile], + [htmlFile, cssFile], { options: {} } ); - const chunks: any[] = [] + await writeFile("output.pdf", pdf); + }, 10_000_000); + + + it("should generate a PDF link", async () => { + const htmlBlob = new Blob([HTML], { + type: "text/html", + }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const pdf:Buffer = await ff.generate( + [htmlFile, cssFile], + { + options: { + host: true, + } + } + ); + + const chunks: any[] = []; for await (let chunk of pdf) { - chunks.push(chunk) + chunks.push(chunk); + } + const result = JSON.parse(pdf.toString()); + + expect(result.url).not.toBeNull(); + + }, 10_000_000); + + it("should fail because of invalid api key", async () => { + const htmlBlob = new Blob([HTML], { + type: "text/html", + }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); + + const ff = new FileForgeClient({ + apiKey: "blabla_invalid_key" + }); + try { + const pdf:Buffer = await ff.generate( + [htmlFile, cssFile], + { + options: { + host: true, + } + } + ); + + }catch(e){ + expect(e).not.toBeNull(); + if (e instanceof error.FileForgeError) { + console.log(`Error status code: ${e.statusCode}`); + console.log(`Error body: ${e.body}`); + expect(e.statusCode).toBe(401); + + } } - await writeFile("output.pdf", Buffer.concat(chunks)); + }, 10_000_000); + + }); diff --git a/tests/test.html b/tests/test.html new file mode 100644 index 0000000..e69de29 From d90ad99bff8b2af7776eba4e67819327ec35920a Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Wed, 22 May 2024 12:14:34 +0200 Subject: [PATCH 02/21] Changes the generate function to return a Promise --- output.pdf | Bin 18819 -> 31187 bytes src/Client.ts | 16 +++++++++++++--- tests/custom.test.ts | 19 +++++-------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/output.pdf b/output.pdf index f4adfdca410fdaf33e584ecbbf93d7b3c706f8e5..9a4779d936bd41d82bb071342d0348ff3eabf58f 100644 GIT binary patch literal 31187 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%0ADqjCIEbx99hceC1GfLN zxMN#tH5g-5ct8UPU}rpK?R^gCr^L_QJ}LggN=SjUR1r_0dWk(1*t*} zYO(Oy$N)NsxhubfnRQbO9j8ZBgxN@|Qn?zStsjg}AziZx=~uoI%;Rp|Tv9iiM@j>E zJEPyYK?m-ERJQ!(YY(aH#2BEqx&QCzWYEYD0H6M9UKEy=V1TK?X=YhZstoGSG^gn`^W-g;3i9{0CrUKPU)BDV`Hh1m^U z{sY)T5?HKNElwtc_o)5!?Ku+%GwKekS}g`P4}2S)E4c-%0XD?T3@Pv)x5Cg19B(Fo zI_P*ampu|{nM+Mlbx(P|>cSZLx4R$kWRe0&dOz>O*T**P4po{jH|3KLgk15>DQ}w*C z=so6GhE~jXch!yr-LPc8hCZpOHU3YeDZ1;?3*sp zj{$(r4A0y06zd?L=eZnT1444w8a&fGMfdj4tM%O+OrNitPFF|J)x8B=@0_!3z$)@O z%7iWf^?`C@7rSj%TY_35%T*8nLDyV=PV94!b3`!Vs2%7tTiowtXh~cg*Pj^`#g+mD zv#qSpxJA2FLkSCr2CoFY{;aw}4cGTE+qp`2OUnw6sbEqIPKnrHO|5MyH$nI0rPdE| zaX?kc@F0Y*Si+rAJDQWgz`Cmx<|l*X7(ZPEl<0=e}p=9=l~QPQ#bzFM0zV--5+=d}SK4@xr(LmlYcMM+ViaztsD( z9B+U7NAJtJ^<{a}vZ>|6dS;Ms3tDKnr_@x=+S=c-De; zj4St;3hFVv^8;=4B%?b*̞sW_{0bUHZJKcM4iS!gC^YuUj7L$$#rux3tmiW|H= z4uOLI7)nTA9qpttdzix?PugTL2$F@~MWY)=)aPC6Go@m1&Mj8ALGQn#<6Uo*ARDmMRV8;9oa0^IPZ`Hug z2>m6{Wjg(P^Y<6nf2>Slfgc2WKF@zL9jsv<4Cwvr5m6$)Aio@0!$dOXWNF#;`M*|^ zZOYyM%aZ$lrt-iG4||&$o$p{PDp|*SI%n|;&r$2-w9Op*pD(={tD7D-$M$458JZR= ztW(pqn@iS?&F0Rr&DpX1@z|1LucGyW_4&nl{0U6m`uv=2xnSKKYr&ttv=%_;us#+C zEsakUwBxm)atJJQ?3CTUSfJOht*vFOnKBlZCiR*5`T2T-QExP+DHX{TLWS(^1SXi33*o!TTi+HP^#g1$9h$6jn%Bu*voqtnQ?X+yp zuC%#nF0EkBVw*I_uBVU7`%hzwn>KXvw>^8TqdNXc%OX8DG&haUIW##1FS37PT(ki1 zSRG#(vo004E=}Xln&K^~8JW5yx^U4kfNOCJ$wgeE^JsO>1Mb_u3}Ql6iy;gx3(&I6 zu}h3Gv|IjEr|Cc&+h3F}>ENmcKfkQON2VN>@;>%xeZjyM7=NJ9q z&i&l(ZMRM!uctSyIul=kXdAcUowiwc&263zFB>%CZ@U_^b$LU0@uqG71G-GSZua0G zRb{)0IdaJ0;gXprMW^x81&w^V0xI0=T~pKzOh$$lwZmN4nhtM&fwR`}cWAu~x-2ie zQc?Y<%gN5hE+=%_7+-?R|8zEOEX#=Zc-}mgm6MH^N$!u~EsgT|%-qbJ1LKYZ42H~n zynb{4*nFL7|5{mw&z;whm52M){;>`PAIG~%wK1$OU!5Q`KNoL(y!qg)93x)Cd-GVf zG5hn!<>euDZavQQxy5Ja8$LIdlWDm1vza-$S+`ynV+YrVMyYlVFJ&Frkz*B^cv&i5 z3wzUoGIR3|p1{k#WWmcXm-t7A9e)AXk^Hz}Yw6a`zY~n*@~xM3mAZkVyv!;?PIh^2 zd0wV5t1{nEo?TsDo|$JdmgVQ>=T&AF>;CtLNP=3H?2h!w%rj(VdnF`PwN!g~sf03k h9b6hq0Dn1H=U6>o$8252TQ>Qr|Cg)IG3BXM|1S)m+%*6I delta 15557 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 + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", @@ -69,6 +74,7 @@ export class FileForgeClient { timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, }); + if (_response.ok) { const chunks: any[] = []; @@ -77,8 +83,12 @@ export class FileForgeClient { } const buffer: Buffer = Buffer.concat(chunks); - - return buffer; + + if (request.options?.host !== true){ + return {"file": buffer.toString()}; + }else{ + return JSON.parse(buffer.toString()) + } } if (_response.error.reason === "status-code") { diff --git a/tests/custom.test.ts b/tests/custom.test.ts index fe7b712..5fb1788 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -46,14 +46,14 @@ describe("test", () => { apiKey: FILEFORGE_API_KEY }); - const pdf = await ff.generate( + const pdf:FileForgeClient.Response = await ff.generate( [htmlFile, cssFile], { options: {} } ); - await writeFile("output.pdf", pdf); + await writeFile("output.pdf", pdf.file!); }, 10_000_000); @@ -71,7 +71,7 @@ describe("test", () => { apiKey: FILEFORGE_API_KEY }); - const pdf:Buffer = await ff.generate( + const pdf:FileForgeClient.Response = await ff.generate( [htmlFile, cssFile], { options: { @@ -80,13 +80,7 @@ describe("test", () => { } ); - const chunks: any[] = []; - for await (let chunk of pdf) { - chunks.push(chunk); - } - const result = JSON.parse(pdf.toString()); - - expect(result.url).not.toBeNull(); + expect(pdf.url).not.toBeNull(); }, 10_000_000); @@ -104,7 +98,7 @@ describe("test", () => { apiKey: "blabla_invalid_key" }); try { - const pdf:Buffer = await ff.generate( + const pdf = await ff.generate( [htmlFile, cssFile], { options: { @@ -116,10 +110,7 @@ describe("test", () => { }catch(e){ expect(e).not.toBeNull(); if (e instanceof error.FileForgeError) { - console.log(`Error status code: ${e.statusCode}`); - console.log(`Error body: ${e.body}`); expect(e.statusCode).toBe(401); - } } From 9d217a18ffa09004253ffcafd1e520d05c4d3315 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Thu, 23 May 2024 17:32:12 +0200 Subject: [PATCH 03/21] Removes client from fernignore --- .fernignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.fernignore b/.fernignore index 5a732a2..9e24d62 100644 --- a/.fernignore +++ b/.fernignore @@ -1,6 +1,5 @@ # Specify files that shouldn't be modified by Fern -src/Client.ts src/core/form-data-utils/FormDataWrapper.ts src/core/form-data-utils/index.ts src/core/index.ts From 1a23cbf827b9fa6c3b2355775126df61e82e16a5 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Thu, 23 May 2024 15:35:56 +0000 Subject: [PATCH 04/21] Release 0.0.10 --- .github/workflows/ci.yml | 74 +- output.pdf | Bin 31187 -> 0 bytes package-lock.json | 4442 -------------------------- src/Client.ts | 338 +- src/core/fetcher/Fetcher.ts | 28 +- src/core/form-data-utils/FormData.ts | 84 - tests/custom.test.ts | 113 +- tests/test.html | 0 yarn.lock | 54 +- 9 files changed, 377 insertions(+), 4756 deletions(-) delete mode 100644 output.pdf delete mode 100644 package-lock.json delete mode 100644 src/core/form-data-utils/FormData.ts delete mode 100644 tests/test.html diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4fd98c9..c348128 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,53 +3,53 @@ name: ci on: [push] jobs: - compile: - runs-on: ubuntu-latest + compile: + runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v3 + steps: + - name: Checkout repo + uses: actions/checkout@v3 - - name: Set up node - uses: actions/setup-node@v3 + - name: Set up node + uses: actions/setup-node@v3 - - name: Compile - run: yarn && yarn build + - name: Compile + run: yarn && yarn build - test: - runs-on: ubuntu-latest + test: + runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v3 + steps: + - name: Checkout repo + uses: actions/checkout@v3 - - name: Set up node - uses: actions/setup-node@v3 + - name: Set up node + uses: actions/setup-node@v3 - - name: Compile - run: yarn && yarn test + - name: Compile + run: yarn && yarn test - publish: - needs: [compile, test] - if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') - runs-on: ubuntu-latest + publish: + needs: [ compile, test ] + if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + runs-on: ubuntu-latest - steps: - - name: Checkout repo - uses: actions/checkout@v3 + steps: + - name: Checkout repo + uses: actions/checkout@v3 - - name: Set up node - uses: actions/setup-node@v3 + - name: Set up node + uses: actions/setup-node@v3 - - name: Install dependencies - run: yarn install + - name: Install dependencies + run: yarn install - - name: Build - run: yarn build + - name: Build + run: yarn build - - name: Publish to npm - run: | - npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} - npm publish --access public - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Publish to npm + run: | + npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} + npm publish --access public + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/output.pdf b/output.pdf deleted file mode 100644 index 9a4779d936bd41d82bb071342d0348ff3eabf58f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31187 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%0ADqjCIEbx99hceC1GfLN zxMN#tH5g-5ct8UPU}rpK?R^gCr^L_QJ}LggN=SjUR1r_0dWk(1*t*} zYO(Oy$N)NsxhubfnRQbO9j8ZBgxN@|Qn?zStsjg}AziZx=~uoI%;Rp|Tv9iiM@j>E zJEPyYK?m-ERJQ!(YY(aH#2BEqx&QCzWYEYD0H6M9UKEy=V1TK?X=YhZstoGSG^gn`^W-g;3i9{0CrUKPU)BDV`Hh1m^U z{sY)T5?HKNElwtc_o)5!?Ku+%GwKekS}g`P4}2S)E4c-%0XD?T3@Pv)x5Cg19B(Fo zI_P*ampu|{nM+Mlbx(P|>cSZLx4R$kWRe0&dOz>O*T**P4po{jH|3KLgk15>DQ}w*C z=so6GhE~jXch!yr-LPc8hCZpOHU3YeDZ1;?3*sp zj{$(r4A0y06zd?L=eZnT1444w8a&fGMfdj4tM%O+OrNitPFF|J)x8B=@0_!3z$)@O z%7iWf^?`C@7rSj%TY_35%T*8nLDyV=PV94!b3`!Vs2%7tTiowtXh~cg*Pj^`#g+mD zv#qSpxJA2FLkSCr2CoFY{;aw}4cGTE+qp`2OUnw6sbEqIPKnrHO|5MyH$nI0rPdE| zaX?kc@F0Y*Si+rAJDQWgz`Cmx<|l*X7(ZPEl<0=e}p=9=l~QPQ#bzFM0zV--5+=d}SK4@xr(LmlYcMM+ViaztsD( z9B+U7NAJtJ^<{a}vZ>|6dS;Ms3tDKnr_@x=+S=c-De; zj4St;3hFVv^8;=4B%?b*̞sW_{0bUHZJKcM4iS!gC^YuUj7L$$#rux3tmiW|H= z4uOLI7)nTA9qpttdzix?PugTL2$F@~MWY)=)aPC6Go@m1&Mj8ALGQn#<6Uo*ARDmMRV8;9oa0^IPZ`Hug z2>m6{Wjg(P^Y<6nf2>Slfgc2WKF@zL9jsv<4Cwvr5m6$)Aio@0!$dOXWNF#;`M*|^ zZOYyM%aZ$lrt-iG4||&$o$p{PDp|*SI%n|;&r$2-w9Op*pD(={tD7D-$M$458JZR= ztW(pqn@iS?&F0Rr&DpX1@z|1LucGyW_4&nl{0U6m`uv=2xnSKKYr&ttv=%_;us#+C zEsakUwBxm)atJJQ?3CTUSfJOht*vFOnKBlZCiR*5`T2T-QExP+DHX{TLWS(^1SXi33*o!TTi+HP^#g1$9h$6jn%Bu*voqtnQ?X+yp zuC%#nF0EkBVw*I_uBVU7`%hzwn>KXvw>^8TqdNXc%OX8DG&haUIW##1FS37PT(ki1 zSRG#(vo004E=}Xln&K^~8JW5yx^U4kfNOCJ$wgeE^JsO>1Mb_u3}Ql6iy;gx3(&I6 zu}h3Gv|IjEr|Cc&+h3F}>ENmcKfkQON2VN>@;>%xeZjyM7=NJ9q z&i&l(ZMRM!uctSyIul=kXdAcUowiwc&263zFB>%CZ@U_^b$LU0@uqG71G-GSZua0G zRb{)0IdaJ0;gXprMW^x81&w^V0xI0=T~pKzOh$$lwZmN4nhtM&fwR`}cWAu~x-2ie zQc?Y<%gN5hE+=%_7+-?R|8zEOEX#=Zc-}mgm6MH^N$!u~EsgT|%-qbJ1LKYZ42H~n zynb{4*nFL7|5{mw&z;whm52M){;>`PAIG~%wK1$OU!5Q`KNoL(y!qg)93x)Cd-GVf zG5hn!<>euDZavQQxy5Ja8$LIdlWDm1vza-$S+`ynV+YrVMyYlVFJ&Frkz*B^cv&i5 z3wzUoGIR3|p1{k#WWmcXm-t7A9e)AXk^Hz}Yw6a`zY~n*@~xM3mAZkVyv!;?PIh^2 zd0wV5t1{nEo?TsDo|$JdmgVQ>=T&AF>;CtLNP=3H?2h!w%rj(VdnF`PwN!g~sf03k h9b6hq0Dn1H=U6>o$8252TQ>Qr|Cg)IG3BXM|1S)m+%*6I diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 1dec07d..0000000 --- a/package-lock.json +++ /dev/null @@ -1,4442 +0,0 @@ -{ - "name": "fileforge", - "version": "0.0.9", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "fileforge", - "version": "0.0.9", - "license": "MIT", - "dependencies": { - "form-data": "4.0.0", - "form-data-encoder": "^4.0.2", - "formdata-node": "^6.0.3", - "js-base64": "3.7.2", - "node-fetch": "2.7.0", - "qs": "6.11.2", - "url-join": "4.0.1" - }, - "devDependencies": { - "@types/jest": "29.5.5", - "@types/node": "17.0.33", - "@types/node-fetch": "2.6.9", - "@types/qs": "6.9.8", - "@types/url-join": "4.0.1", - "jest": "29.7.0", - "jest-environment-jsdom": "29.7.0", - "prettier": "2.7.1", - "ts-jest": "29.1.1", - "typescript": "4.6.4" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.5", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/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==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/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==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/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, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", - "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.5", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz", - "integrity": "sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg==", - "dev": true, - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/node": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", - "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==", - "dev": true - }, - "node_modules/@types/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/qs": { - "version": "6.9.8", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz", - "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true - }, - "node_modules/@types/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "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, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "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 - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001618", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz", - "integrity": "sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "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, - "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/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", - "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "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, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "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 - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "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, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.768", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.768.tgz", - "integrity": "sha512-z2U3QcvNuxdkk33YV7R1bVMNq7fL23vq3WfO5BHcqrm4TnDGReouBfYKLEFh5umoK1XACjEwp8mmnhXk2EJigw==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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 - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.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==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/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==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz", - "integrity": "sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/formdata-node": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-6.0.3.tgz", - "integrity": "sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg==", - "engines": { - "node": ">= 18" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "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, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/js-base64": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", - "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "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==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "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 - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nwsapi": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", - "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", - "dev": true - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", - "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-jest": { - "version": "29.1.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", - "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^29.0.0", - "json5": "^2.2.3", - "lodash.memoize": "4.x", - "make-error": "1.x", - "semver": "^7.5.3", - "yargs-parser": "^21.0.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/types": "^29.0.0", - "babel-jest": "^29.0.0", - "jest": "^29.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "4.6.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", - "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", - "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "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, - "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" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/ws": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", - "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "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, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/src/Client.ts b/src/Client.ts index 1714146..8356092 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -4,16 +4,19 @@ import * as environments from "./environments"; import * as core from "./core"; +import urlJoin from "url-join"; +import * as errors from "./errors/index"; import * as fs from "fs"; import * as FileForge from "./api/index"; import * as stream from "stream"; -import urlJoin from "url-join"; -import * as errors from "./errors/index"; +import { default as FormData } from "form-data"; import * as serializers from "./serialization/index"; export declare namespace FileForgeClient { interface Options { environment?: core.Supplier; + username?: core.Supplier; + password?: core.Supplier; apiKey: core.Supplier; } @@ -21,16 +24,163 @@ export declare namespace FileForgeClient { timeoutInSeconds?: number; maxRetries?: number; } - - interface Response{ - file?: string; - url?:string; - } } export class FileForgeClient { constructor(protected readonly _options: FileForgeClient.Options) {} + /** + * @param {FileForgeClient.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await fileForge.retrieveServerStatus() + */ + public async retrieveServerStatus(requestOptions?: FileForgeClient.RequestOptions): Promise { + const _response = await core.fetcher({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + "status/" + ), + method: "GET", + headers: { + Authorization: await this._getAuthorizationHeader(), + "X-API-Key": await core.Supplier.get(this._options.apiKey), + "X-Fern-Language": "JavaScript", + "X-Fern-SDK-Name": "fileforge", + "X-Fern-SDK-Version": "0.0.10", + "X-Fern-Runtime": core.RUNTIME.type, + "X-Fern-Runtime-Version": core.RUNTIME.version, + }, + contentType: "application/json", + timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, + maxRetries: requestOptions?.maxRetries, + }); + if (_response.ok) { + return; + } + + if (_response.error.reason === "status-code") { + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + }); + case "timeout": + throw new errors.FileForgeTimeoutError(); + case "unknown": + throw new errors.FileForgeError({ + message: _response.error.errorMessage, + }); + } + } + + /** + * Converts a Microsoft Word document (.DOCX or .DOC) file to a PDF document. + * + * This service uses a LibreOffice headless server to perform the conversion, and may not support all features of the original document. + * + * **Known discrepancies** + * + * - Some fonts may not be available in the server, and may be substituted by a closest match. + * - Some complex formatting may not be preserved, such as background graphics. + * + * **Variables** + * + * Variable replacement is supported with various methods: + * + * - Templated litterals: `{{name}}` + * - Word variables, as listed in the document metadata: `{DOCVARIABLE "name"}` + * + * To enable variable replacement as Word variables for your account, please contact the FileForge support. + * @throws {@link FileForge.BadRequestError} + * @throws {@link FileForge.UnauthorizedError} + * @throws {@link FileForge.InternalServerError} + */ + public async convertDocx( + file: File | fs.ReadStream, + request: FileForge.ConvertDocxRequest, + requestOptions?: FileForgeClient.RequestOptions + ): Promise { + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); + _request.append("file", file); + const _response = await core.fetcher({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + "pdf/docx/" + ), + method: "POST", + headers: { + Authorization: await this._getAuthorizationHeader(), + "X-API-Key": await core.Supplier.get(this._options.apiKey), + "X-Fern-Language": "JavaScript", + "X-Fern-SDK-Name": "fileforge", + "X-Fern-SDK-Version": "0.0.10", + "X-Fern-Runtime": core.RUNTIME.type, + "X-Fern-Runtime-Version": core.RUNTIME.version, + }, + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, + responseType: "streaming", + timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, + maxRetries: requestOptions?.maxRetries, + }); + if (_response.ok) { + return _response.body; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new FileForge.BadRequestError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 401: + throw new FileForge.UnauthorizedError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 500: + throw new FileForge.InternalServerError(_response.error.body); + default: + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + }); + case "timeout": + throw new errors.FileForgeTimeoutError(); + case "unknown": + throw new errors.FileForgeError({ + message: _response.error.errorMessage, + }); + } + } + /** * Generates a PDF document from web assets. * @throws {@link FileForge.BadRequestError} @@ -42,18 +192,13 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.GenerateRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise{ - const _request = core.newFormData(); - const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: false, - allowUnrecognizedEnumValues: false, - breadcrumbsPrefix: [""], - }); - await _request.append("options", new Blob([JSON.stringify(options)], { type: "application/json" })); + ): Promise { + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - await _request.append("files", _file); + _request.append("files", _file); } + const _response = await core.fetcher({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, @@ -61,41 +206,147 @@ export class FileForgeClient { ), method: "POST", headers: { + Authorization: await this._getAuthorizationHeader(), "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.1", + "X-Fern-SDK-Version": "0.0.10", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, - ...(await _request.getHeaders()), }, - body: await _request.getBody(), + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, }); + if (_response.ok) { + return _response.body; + } + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new FileForge.BadRequestError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 401: + throw new FileForge.UnauthorizedError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 500: + throw new FileForge.InternalServerError(_response.error.body); + case 502: + throw new FileForge.BadGatewayError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + default: + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + }); + case "timeout": + throw new errors.FileForgeTimeoutError(); + case "unknown": + throw new errors.FileForgeError({ + message: _response.error.errorMessage, + }); + } + } + + /** + * @throws {@link FileForge.BadRequestError} + * @throws {@link FileForge.UnauthorizedError} + * @throws {@link FileForge.InternalServerError} + */ + public async merge( + files: File[] | fs.ReadStream[], + request: FileForge.MergeRequest, + requestOptions?: FileForgeClient.RequestOptions + ): Promise { + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); + for (const _file of files) { + _request.append("files", _file); + } + + const _response = await core.fetcher({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + "pdf/merge/" + ), + method: "POST", + headers: { + Authorization: await this._getAuthorizationHeader(), + "X-API-Key": await core.Supplier.get(this._options.apiKey), + "X-Fern-Language": "JavaScript", + "X-Fern-SDK-Name": "fileforge", + "X-Fern-SDK-Version": "0.0.10", + "X-Fern-Runtime": core.RUNTIME.type, + "X-Fern-Runtime-Version": core.RUNTIME.version, + }, + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, + responseType: "streaming", + timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, + maxRetries: requestOptions?.maxRetries, + }); if (_response.ok) { - const chunks: any[] = []; - - for await (let chunk of _response.body) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - - if (request.options?.host !== true){ - return {"file": buffer.toString()}; - }else{ - return JSON.parse(buffer.toString()) - } + return _response.body; } if (_response.error.reason === "status-code") { - throw new errors.FileForgeError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - }); + switch (_response.error.statusCode) { + case 400: + throw new FileForge.BadRequestError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 401: + throw new FileForge.UnauthorizedError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 500: + throw new FileForge.InternalServerError(_response.error.body); + default: + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } } switch (_response.error.reason) { @@ -112,4 +363,17 @@ export class FileForgeClient { }); } } + + protected async _getAuthorizationHeader(): Promise { + const username = await core.Supplier.get(this._options.username); + const password = await core.Supplier.get(this._options.password); + if (username != null && password != null) { + return core.BasicAuth.toAuthorizationHeader({ + username: username, + password: password, + }); + } + + return undefined; + } } diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index 9bf147a..ee40897 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -1,3 +1,4 @@ +import { default as FormData } from "form-data"; import qs from "qs"; import { RUNTIME } from "../runtime"; import { APIResponse } from "./APIResponse"; @@ -66,25 +67,24 @@ async function fetcherImpl(args: Fetcher.Args): Promise { - if (body instanceof Uint8Array) { - return body; - } else if (body instanceof FormData - || body instanceof (await import("formdata-node")).FormData - || body instanceof (await import("form-data")).default) { - return body as any; - } else { - return JSON.stringify(body); - } - }; - - body = await maybeStringifyBody(args.body); + if (args.body instanceof FormData) { + // @ts-expect-error + body = args.body; + } else if (args.body instanceof Uint8Array) { + body = args.body; + } else { + body = JSON.stringify(args.body); + } // In Node.js environments, the SDK always uses`node-fetch`. // If not in Node.js the SDK uses global fetch if available, // and falls back to node-fetch. const fetchFn = - typeof fetch == "function" + RUNTIME.type === "node" + ? // `.default` is required due to this issue: + // https://github.com/node-fetch/node-fetch/issues/450#issuecomment-387045223 + ((await import("node-fetch")).default as any) + : typeof fetch == "function" ? fetch : ((await import("node-fetch")).default as any); diff --git a/src/core/form-data-utils/FormData.ts b/src/core/form-data-utils/FormData.ts deleted file mode 100644 index 9f8ebb9..0000000 --- a/src/core/form-data-utils/FormData.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { RUNTIME } from "../runtime"; - -export function newFormData(): CrossRuntimeFormData { - if (RUNTIME.type === "node") { - return new NodeFormData(); - } else { - return new WebFormData(); - } -} - -export declare namespace CrossRuntimeFormData { - interface AppendOptions { - contentType?: string; - } -} - -export abstract class CrossRuntimeFormData { - public abstract append(key: string, value: any, options?: { contentType?: string }): Promise; - - /** - * @returns the multipart form data request - */ - public abstract getBody(): Promise; - - /** - * @returns headers that need to be added to the multipart form data request - */ - public abstract getHeaders(): Promise>; -} - -class NodeFormData implements CrossRuntimeFormData { - private fd: any | undefined; - - public constructor() { - this.fd = new FormData(); - } - - public async append( - key: string, - value: any, - options?: { contentType?: string | undefined } | undefined - ): Promise { - if (options?.contentType != null) { - this.fd.append(key, new Blob([value], { type: options?.contentType })); - } else { - this.fd.append(key, value); - } - } - - public async getBody(): Promise { - return this.fd; - } - - public async getHeaders(): Promise> { - return {}; - } -} - -class WebFormData implements CrossRuntimeFormData { - private fd: any; - - public async initialize(): Promise { - this.fd = new (await import("form-data")).default(); - } - - public async append( - key: string, - value: any, - options?: { contentType?: string | undefined } | undefined - ): Promise { - if (this.fd == null) { - await this.initialize(); - } - this.fd.append(key, value, { contentType: options?.contentType }); - } - - public async getBody(): Promise { - return this.fd; - } - - public async getHeaders(): Promise> { - return {}; - } -} diff --git a/tests/custom.test.ts b/tests/custom.test.ts index 5fb1788..7f5e031 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -1,28 +1,3 @@ -import stream from "stream"; -import * as core from "../src/core"; -import { FileForgeClient } from "../src"; -import * as error from "../src/errors/index"; -import fs from "fs"; -import { writeFile } from "fs/promises"; - -const FILEFORGE_API_KEY = process.env.FILEFORGE_API_KEY!; - -const HTML = ` - - - My First Web Page - - - -

Hello World!

- - -`; - -const CSS =`body{ - background-color: lightblue; -} -`; /** * This is a custom test file, if you wish to add more tests * to your SDK. @@ -32,89 +7,7 @@ const CSS =`body{ * you will have tests automatically generated for you. */ describe("test", () => { - it("should generate a PDF buffer", async () => { - const htmlBlob = new Blob([HTML], { - type: "text/html", - }); - const cssBlob = new Blob([CSS], { - type: "text/css", - }); - const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); - const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); - - const ff = new FileForgeClient({ - apiKey: FILEFORGE_API_KEY - }); - - const pdf:FileForgeClient.Response = await ff.generate( - [htmlFile, cssFile], - { - options: {} - } - ); - - await writeFile("output.pdf", pdf.file!); - }, 10_000_000); - - - it("should generate a PDF link", async () => { - const htmlBlob = new Blob([HTML], { - type: "text/html", - }); - const cssBlob = new Blob([CSS], { - type: "text/css", - }); - const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); - const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); - - const ff = new FileForgeClient({ - apiKey: FILEFORGE_API_KEY - }); - - const pdf:FileForgeClient.Response = await ff.generate( - [htmlFile, cssFile], - { - options: { - host: true, - } - } - ); - - expect(pdf.url).not.toBeNull(); - - }, 10_000_000); - - it("should fail because of invalid api key", async () => { - const htmlBlob = new Blob([HTML], { - type: "text/html", - }); - const cssBlob = new Blob([CSS], { - type: "text/css", - }); - const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); - const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); - - const ff = new FileForgeClient({ - apiKey: "blabla_invalid_key" - }); - try { - const pdf = await ff.generate( - [htmlFile, cssFile], - { - options: { - host: true, - } - } - ); - - }catch(e){ - expect(e).not.toBeNull(); - if (e instanceof error.FileForgeError) { - expect(e.statusCode).toBe(401); - } - } - - }, 10_000_000); - - + it("default", () => { + expect(true).toBe(true); + }); }); diff --git a/tests/test.html b/tests/test.html deleted file mode 100644 index e69de29..0000000 diff --git a/yarn.lock b/yarn.lock index 4c1d364..5f46d65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -589,9 +589,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" - integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== + version "7.20.6" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" + integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== dependencies: "@babel/types" "^7.20.7" @@ -844,12 +844,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: - fill-range "^7.0.1" + fill-range "^7.1.1" browserslist@^4.22.2: version "4.23.0" @@ -907,9 +907,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001587: - version "1.0.30001620" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" - integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== + version "1.0.30001621" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" + integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== chalk@^2.4.2: version "2.4.2" @@ -1105,9 +1105,9 @@ domexception@^4.0.0: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.668: - version "1.4.772" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz#7a1efabf86b20e5709736ce64dbc2ce13cb68936" - integrity sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A== + version "1.4.779" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" + integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== emittery@^0.13.1: version "0.13.1" @@ -1227,10 +1227,10 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" @@ -1242,11 +1242,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -form-data-encoder@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" - integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== - form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1256,11 +1251,6 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -formdata-node@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" - integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -2028,11 +2018,11 @@ merge-stream@^2.0.0: integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + version "4.0.7" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5" + integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q== dependencies: - braces "^3.0.2" + braces "^3.0.3" picomatch "^2.3.1" mime-db@1.52.0: From 18b679f235293bbb1cd1dd58d4ebdb6816fbd398 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Sun, 26 May 2024 10:37:14 +0000 Subject: [PATCH 05/21] Release 0.0.12 --- src/Client.ts | 155 ++++---- src/api/client/requests/ConvertDocxRequest.ts | 4 +- src/api/client/requests/GenerateRequest.ts | 4 +- src/api/client/requests/MergeRequest.ts | 4 +- src/api/errors/BadGatewayError.ts | 6 +- src/api/errors/BadRequestError.ts | 6 +- src/api/errors/InternalServerError.ts | 2 +- src/api/errors/UnauthorizedError.ts | 6 +- src/core/fetcher/Fetcher.ts | 102 +++++- src/environments.ts | 4 +- .../{FileForgeError.ts => FileforgeError.ts} | 4 +- ...meoutError.ts => FileforgeTimeoutError.ts} | 4 +- src/errors/index.ts | 4 +- src/index.ts | 8 +- .../types/ConvertDocxRequestOptions.ts | 4 +- src/serialization/types/ErrorSchema.ts | 4 +- .../types/GenerateRequestOptions.ts | 4 +- .../types/MergeRequestOptions.ts | 4 +- yarn.lock | 337 +++++++++--------- 19 files changed, 378 insertions(+), 288 deletions(-) rename src/errors/{FileForgeError.ts => FileforgeError.ts} (90%) rename src/errors/{FileForgeTimeoutError.ts => FileforgeTimeoutError.ts} (53%) diff --git a/src/Client.ts b/src/Client.ts index 8356092..5ad4c17 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -7,14 +7,13 @@ import * as core from "./core"; import urlJoin from "url-join"; import * as errors from "./errors/index"; import * as fs from "fs"; -import * as FileForge from "./api/index"; +import * as Fileforge from "./api/index"; import * as stream from "stream"; -import { default as FormData } from "form-data"; import * as serializers from "./serialization/index"; -export declare namespace FileForgeClient { +export declare namespace FileforgeClient { interface Options { - environment?: core.Supplier; + environment?: core.Supplier; username?: core.Supplier; password?: core.Supplier; apiKey: core.Supplier; @@ -23,22 +22,23 @@ export declare namespace FileForgeClient { interface RequestOptions { timeoutInSeconds?: number; maxRetries?: number; + abortSignal?: AbortSignal; } } -export class FileForgeClient { - constructor(protected readonly _options: FileForgeClient.Options) {} +export class FileforgeClient { + constructor(protected readonly _options: FileforgeClient.Options) {} /** - * @param {FileForgeClient.RequestOptions} requestOptions - Request-specific configuration. + * @param {FileforgeClient.RequestOptions} requestOptions - Request-specific configuration. * * @example - * await fileForge.retrieveServerStatus() + * await fileforge.retrieveServerStatus() */ - public async retrieveServerStatus(requestOptions?: FileForgeClient.RequestOptions): Promise { + public async retrieveServerStatus(requestOptions?: FileforgeClient.RequestOptions): Promise { const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "status/" ), method: "GET", @@ -47,20 +47,21 @@ export class FileForgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Version": "0.0.12", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, }, contentType: "application/json", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return; } if (_response.error.reason === "status-code") { - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -68,14 +69,14 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } @@ -99,21 +100,22 @@ export class FileForgeClient { * - Word variables, as listed in the document metadata: `{DOCVARIABLE "name"}` * * To enable variable replacement as Word variables for your account, please contact the FileForge support. - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} + * @throws {@link Fileforge.BadRequestError} + * @throws {@link Fileforge.UnauthorizedError} + * @throws {@link Fileforge.InternalServerError} */ public async convertDocx( file: File | fs.ReadStream, - request: FileForge.ConvertDocxRequest, - requestOptions?: FileForgeClient.RequestOptions + request: Fileforge.ConvertDocxRequest, + requestOptions?: FileforgeClient.RequestOptions ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); - _request.append("file", file); + const _request = new core.FormDataWrapper(); + await _request.append("options", JSON.stringify(request.options)); + await _request.append("file", file); + const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/docx/" ), method: "POST", @@ -122,15 +124,16 @@ export class FileForgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Version": "0.0.12", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _maybeEncodedRequest.getHeaders()), }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, + body: await _maybeEncodedRequest.getBody(), responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -139,7 +142,7 @@ export class FileForgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new FileForge.BadRequestError( + throw new Fileforge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -148,7 +151,7 @@ export class FileForgeClient { }) ); case 401: - throw new FileForge.UnauthorizedError( + throw new Fileforge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -157,9 +160,9 @@ export class FileForgeClient { }) ); case 500: - throw new FileForge.InternalServerError(_response.error.body); + throw new Fileforge.InternalServerError(_response.error.body); default: - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -168,14 +171,14 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } @@ -183,25 +186,26 @@ export class FileForgeClient { /** * Generates a PDF document from web assets. - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} - * @throws {@link FileForge.BadGatewayError} + * @throws {@link Fileforge.BadRequestError} + * @throws {@link Fileforge.UnauthorizedError} + * @throws {@link Fileforge.InternalServerError} + * @throws {@link Fileforge.BadGatewayError} */ public async generate( files: File[] | fs.ReadStream[], - request: FileForge.GenerateRequest, - requestOptions?: FileForgeClient.RequestOptions + request: Fileforge.GenerateRequest, + requestOptions?: FileforgeClient.RequestOptions ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); + const _request = new core.FormDataWrapper(); + await _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - _request.append("files", _file); + await _request.append("files", _file); } + const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/generate/" ), method: "POST", @@ -210,15 +214,16 @@ export class FileForgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Version": "0.0.12", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _maybeEncodedRequest.getHeaders()), }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, + body: await _maybeEncodedRequest.getBody(), responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -227,7 +232,7 @@ export class FileForgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new FileForge.BadRequestError( + throw new Fileforge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -236,7 +241,7 @@ export class FileForgeClient { }) ); case 401: - throw new FileForge.UnauthorizedError( + throw new Fileforge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -245,9 +250,9 @@ export class FileForgeClient { }) ); case 500: - throw new FileForge.InternalServerError(_response.error.body); + throw new Fileforge.InternalServerError(_response.error.body); case 502: - throw new FileForge.BadGatewayError( + throw new Fileforge.BadGatewayError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -256,7 +261,7 @@ export class FileForgeClient { }) ); default: - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -265,38 +270,39 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } } /** - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} + * @throws {@link Fileforge.BadRequestError} + * @throws {@link Fileforge.UnauthorizedError} + * @throws {@link Fileforge.InternalServerError} */ public async merge( files: File[] | fs.ReadStream[], - request: FileForge.MergeRequest, - requestOptions?: FileForgeClient.RequestOptions + request: Fileforge.MergeRequest, + requestOptions?: FileforgeClient.RequestOptions ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); + const _request = new core.FormDataWrapper(); + await _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - _request.append("files", _file); + await _request.append("files", _file); } + const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/merge/" ), method: "POST", @@ -305,15 +311,16 @@ export class FileForgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Version": "0.0.12", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _maybeEncodedRequest.getHeaders()), }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, + body: await _maybeEncodedRequest.getBody(), responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -322,7 +329,7 @@ export class FileForgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new FileForge.BadRequestError( + throw new Fileforge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -331,7 +338,7 @@ export class FileForgeClient { }) ); case 401: - throw new FileForge.UnauthorizedError( + throw new Fileforge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -340,9 +347,9 @@ export class FileForgeClient { }) ); case 500: - throw new FileForge.InternalServerError(_response.error.body); + throw new Fileforge.InternalServerError(_response.error.body); default: - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -351,14 +358,14 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } diff --git a/src/api/client/requests/ConvertDocxRequest.ts b/src/api/client/requests/ConvertDocxRequest.ts index 80b2b21..48abbff 100644 --- a/src/api/client/requests/ConvertDocxRequest.ts +++ b/src/api/client/requests/ConvertDocxRequest.ts @@ -2,7 +2,7 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as FileForge from "../../index"; +import * as Fileforge from "../../index"; /** * @example @@ -34,5 +34,5 @@ export interface ConvertDocxRequest { * * There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options. */ - options: FileForge.ConvertDocxRequestOptions; + options: Fileforge.ConvertDocxRequestOptions; } diff --git a/src/api/client/requests/GenerateRequest.ts b/src/api/client/requests/GenerateRequest.ts index 1f78730..baa60ce 100644 --- a/src/api/client/requests/GenerateRequest.ts +++ b/src/api/client/requests/GenerateRequest.ts @@ -2,7 +2,7 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as FileForge from "../../index"; +import * as Fileforge from "../../index"; /** * @example @@ -10,5 +10,5 @@ import * as FileForge from "../../index"; */ export interface GenerateRequest { /** Conversion options. This field is required even if empty. */ - options: FileForge.GenerateRequestOptions; + options: Fileforge.GenerateRequestOptions; } diff --git a/src/api/client/requests/MergeRequest.ts b/src/api/client/requests/MergeRequest.ts index 726c713..e784b4c 100644 --- a/src/api/client/requests/MergeRequest.ts +++ b/src/api/client/requests/MergeRequest.ts @@ -2,12 +2,12 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as FileForge from "../../index"; +import * as Fileforge from "../../index"; /** * @example * {} */ export interface MergeRequest { - options: FileForge.MergeRequestOptions; + options: Fileforge.MergeRequestOptions; } diff --git a/src/api/errors/BadGatewayError.ts b/src/api/errors/BadGatewayError.ts index 953d2b5..be53669 100644 --- a/src/api/errors/BadGatewayError.ts +++ b/src/api/errors/BadGatewayError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class BadGatewayError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class BadGatewayError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "BadGatewayError", statusCode: 502, diff --git a/src/api/errors/BadRequestError.ts b/src/api/errors/BadRequestError.ts index 7fb7954..fe45848 100644 --- a/src/api/errors/BadRequestError.ts +++ b/src/api/errors/BadRequestError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class BadRequestError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class BadRequestError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "BadRequestError", statusCode: 400, diff --git a/src/api/errors/InternalServerError.ts b/src/api/errors/InternalServerError.ts index 3a3bea5..ecd25b4 100644 --- a/src/api/errors/InternalServerError.ts +++ b/src/api/errors/InternalServerError.ts @@ -4,7 +4,7 @@ import * as errors from "../../errors/index"; -export class InternalServerError extends errors.FileForgeError { +export class InternalServerError extends errors.FileforgeError { constructor(body?: unknown) { super({ message: "InternalServerError", diff --git a/src/api/errors/UnauthorizedError.ts b/src/api/errors/UnauthorizedError.ts index 10e74b0..3c21e62 100644 --- a/src/api/errors/UnauthorizedError.ts +++ b/src/api/errors/UnauthorizedError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class UnauthorizedError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class UnauthorizedError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "UnauthorizedError", statusCode: 401, diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index ee40897..265126e 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -1,4 +1,3 @@ -import { default as FormData } from "form-data"; import qs from "qs"; import { RUNTIME } from "../runtime"; import { APIResponse } from "./APIResponse"; @@ -16,6 +15,7 @@ export declare namespace Fetcher { timeoutMs?: number; maxRetries?: number; withCredentials?: boolean; + abortSignal?: AbortSignal; responseType?: "json" | "blob" | "streaming" | "text"; } @@ -67,13 +67,28 @@ async function fetcherImpl(args: Fetcher.Args): Promise { + if (body instanceof Uint8Array) { + return body; + } else { + return JSON.stringify(body); + } + }; + + if (RUNTIME.type === "node") { + if (args.body instanceof (await import("formdata-node")).FormData) { + // @ts-expect-error + body = args.body; + } else { + body = maybeStringifyBody(args.body); + } } else { - body = JSON.stringify(args.body); + if (args.body instanceof (await import("form-data")).default) { + // @ts-expect-error + body = args.body; + } else { + body = maybeStringifyBody(args.body); + } } // In Node.js environments, the SDK always uses`node-fetch`. @@ -89,21 +104,33 @@ async function fetcherImpl(args: Fetcher.Args): Promise => { - const controller = new AbortController(); - let abortId = undefined; + const signals: AbortSignal[] = []; + + // Add timeout signal + let timeoutAbortId: NodeJS.Timeout | undefined = undefined; if (args.timeoutMs != null) { - abortId = setTimeout(() => controller.abort(), args.timeoutMs); + const { signal, abortId } = getTimeoutSignal(args.timeoutMs); + timeoutAbortId = abortId; + signals.push(signal); } + + // Add arbitrary signal + if (args.abortSignal != null) { + signals.push(args.abortSignal); + } + const response = await fetchFn(url, { method: args.method, headers, body, - signal: controller.signal, + signal: anySignal(signals), credentials: args.withCredentials ? "include" : undefined, }); - if (abortId != null) { - clearTimeout(abortId); + + if (timeoutAbortId != null) { + clearTimeout(timeoutAbortId); } + return response; }; @@ -167,7 +194,15 @@ async function fetcherImpl(args: Fetcher.Args): Promise(args: Fetcher.Args): Promise controller.abort(TIMEOUT), timeoutMs); + return { signal: controller.signal, abortId }; +} + +/** + * Returns an abort signal that is getting aborted when + * at least one of the specified abort signals is aborted. + * + * Requires at least node.js 18. + */ +function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal { + // Allowing signals to be passed either as array + // of signals or as multiple arguments. + const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args); + + const controller = new AbortController(); + + for (const signal of signals) { + if (signal.aborted) { + // Exiting early if one of the signals + // is already aborted. + controller.abort((signal as any)?.reason); + break; + } + + // Listening for signals and removing the listeners + // when at least one symbol is aborted. + signal.addEventListener("abort", () => controller.abort((signal as any)?.reason), { + signal: controller.signal, + }); + } + + return controller.signal; +} + export const fetcher: FetchFunction = fetcherImpl; diff --git a/src/environments.ts b/src/environments.ts index bf96f92..5dd3fe7 100644 --- a/src/environments.ts +++ b/src/environments.ts @@ -2,8 +2,8 @@ * This file was auto-generated by Fern from our API Definition. */ -export const FileForgeEnvironment = { +export const FileforgeEnvironment = { Default: "https://api.fileforge.com", } as const; -export type FileForgeEnvironment = typeof FileForgeEnvironment.Default; +export type FileforgeEnvironment = typeof FileforgeEnvironment.Default; diff --git a/src/errors/FileForgeError.ts b/src/errors/FileforgeError.ts similarity index 90% rename from src/errors/FileForgeError.ts rename to src/errors/FileforgeError.ts index 26a2145..8b2d5eb 100644 --- a/src/errors/FileForgeError.ts +++ b/src/errors/FileforgeError.ts @@ -2,13 +2,13 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileForgeError extends Error { +export class FileforgeError extends Error { readonly statusCode?: number; readonly body?: unknown; constructor({ message, statusCode, body }: { message?: string; statusCode?: number; body?: unknown }) { super(buildMessage({ message, statusCode, body })); - Object.setPrototypeOf(this, FileForgeError.prototype); + Object.setPrototypeOf(this, FileforgeError.prototype); if (statusCode != null) { this.statusCode = statusCode; } diff --git a/src/errors/FileForgeTimeoutError.ts b/src/errors/FileforgeTimeoutError.ts similarity index 53% rename from src/errors/FileForgeTimeoutError.ts rename to src/errors/FileforgeTimeoutError.ts index 382adca..de95282 100644 --- a/src/errors/FileForgeTimeoutError.ts +++ b/src/errors/FileforgeTimeoutError.ts @@ -2,9 +2,9 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileForgeTimeoutError extends Error { +export class FileforgeTimeoutError extends Error { constructor() { super("Timeout"); - Object.setPrototypeOf(this, FileForgeTimeoutError.prototype); + Object.setPrototypeOf(this, FileforgeTimeoutError.prototype); } } diff --git a/src/errors/index.ts b/src/errors/index.ts index cf98fef..af778a7 100644 --- a/src/errors/index.ts +++ b/src/errors/index.ts @@ -1,2 +1,2 @@ -export { FileForgeError } from "./FileForgeError"; -export { FileForgeTimeoutError } from "./FileForgeTimeoutError"; +export { FileforgeError } from "./FileforgeError"; +export { FileforgeTimeoutError } from "./FileforgeTimeoutError"; diff --git a/src/index.ts b/src/index.ts index 8013178..c93e5d4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export * as FileForge from "./api"; -export { FileForgeClient } from "./Client"; -export { FileForgeEnvironment } from "./environments"; -export { FileForgeError, FileForgeTimeoutError } from "./errors"; +export * as Fileforge from "./api"; +export { FileforgeClient } from "./Client"; +export { FileforgeEnvironment } from "./environments"; +export { FileforgeError, FileforgeTimeoutError } from "./errors"; diff --git a/src/serialization/types/ConvertDocxRequestOptions.ts b/src/serialization/types/ConvertDocxRequestOptions.ts index 3ea284a..5ab4694 100644 --- a/src/serialization/types/ConvertDocxRequestOptions.ts +++ b/src/serialization/types/ConvertDocxRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; export const ConvertDocxRequestOptions: core.serialization.ObjectSchema< serializers.ConvertDocxRequestOptions.Raw, - FileForge.ConvertDocxRequestOptions + Fileforge.ConvertDocxRequestOptions > = core.serialization.object({ templateLiterals: core.serialization.record(core.serialization.string(), core.serialization.string()).optional(), }); diff --git a/src/serialization/types/ErrorSchema.ts b/src/serialization/types/ErrorSchema.ts index 627132b..08bea9b 100644 --- a/src/serialization/types/ErrorSchema.ts +++ b/src/serialization/types/ErrorSchema.ts @@ -3,10 +3,10 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; -export const ErrorSchema: core.serialization.ObjectSchema = +export const ErrorSchema: core.serialization.ObjectSchema = core.serialization.object({ statusCode: core.serialization.number(), code: core.serialization.string(), diff --git a/src/serialization/types/GenerateRequestOptions.ts b/src/serialization/types/GenerateRequestOptions.ts index 0392fb3..b00102e 100644 --- a/src/serialization/types/GenerateRequestOptions.ts +++ b/src/serialization/types/GenerateRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; export const GenerateRequestOptions: core.serialization.ObjectSchema< serializers.GenerateRequestOptions.Raw, - FileForge.GenerateRequestOptions + Fileforge.GenerateRequestOptions > = core.serialization.object({ test: core.serialization.boolean().optional(), host: core.serialization.boolean().optional(), diff --git a/src/serialization/types/MergeRequestOptions.ts b/src/serialization/types/MergeRequestOptions.ts index b7c01dd..d7ed099 100644 --- a/src/serialization/types/MergeRequestOptions.ts +++ b/src/serialization/types/MergeRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; export const MergeRequestOptions: core.serialization.ObjectSchema< serializers.MergeRequestOptions.Raw, - FileForge.MergeRequestOptions + Fileforge.MergeRequestOptions > = core.serialization.object({}); export declare namespace MergeRequestOptions { diff --git a/yarn.lock b/yarn.lock index 5f46d65..13583da 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,156 +10,155 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" + integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== dependencies: - "@babel/highlight" "^7.24.2" + "@babel/highlight" "^7.24.6" picocolors "^1.0.0" -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" + integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" + integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helpers" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/traverse" "^7.24.6" + "@babel/types" "^7.24.6" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== +"@babel/generator@^7.24.6", "@babel/generator@^7.7.2": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" + integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== dependencies: - "@babel/types" "^7.24.5" + "@babel/types" "^7.24.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" + integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" +"@babel/helper-environment-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" + integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== + +"@babel/helper-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" + integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/helper-hoist-variables@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" + integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-module-imports@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" + integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-module-transforms@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" + integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== + dependencies: + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" + integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== + +"@babel/helper-simple-access@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" + integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-split-export-declaration@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" + integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-string-parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" + integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== + +"@babel/helper-validator-identifier@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" + integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== + +"@babel/helper-validator-option@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" + integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== + +"@babel/helpers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" + integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/highlight@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" + integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== + dependencies: + "@babel/helper-validator-identifier" "^7.24.6" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" + integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -197,11 +196,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz#bcca2964150437f88f65e3679e3d68762287b9c8" + integrity sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -253,44 +252,44 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz#769daf2982d60308bc83d8936eaecb7582463c87" + integrity sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A== + dependencies: + "@babel/helper-plugin-utils" "^7.24.6" + +"@babel/template@^7.24.6", "@babel/template@^7.3.3": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" + integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/traverse@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" + integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.6", "@babel/types@^7.3.3": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" + integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-string-parser" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1105,9 +1104,9 @@ domexception@^4.0.0: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.668: - version "1.4.779" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" - integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== + version "1.4.783" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz#933887165b8b6025a81663d2d97cf4b85cde27b2" + integrity sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ== emittery@^0.13.1: version "0.13.1" @@ -1242,6 +1241,11 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +form-data-encoder@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" + integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== + form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1251,6 +1255,11 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +formdata-node@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" + integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" From e5c9c743f7d5d95883f134cb27717106a8bb56d9 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Sun, 26 May 2024 14:54:07 +0200 Subject: [PATCH 06/21] Adds valid tests --- output.pdf | Bin 31187 -> 31187 bytes src/Client.ts | 21 +++------------------ tests/custom.test.ts | 27 +++++++++++++++++++++------ 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/output.pdf b/output.pdf index 9a4779d936bd41d82bb071342d0348ff3eabf58f..022fa1e10584f9b8ec274d6891d3f36e5a34f07c 100644 GIT binary patch delta 176 zcmcconep;x#tr)`oSoea4UCM;Tue+XOiWD73@i=IT+A%ZOic~kT+E#uUF{TX2q~G& oR9PHHND&d{*u~n}aTS*&7L`;KrKWKiT9_GIaH*=g`nz!f04P%|Z~y=R delta 176 zcmcconep;x#tr)`oGlDp4a`iP%$+O@jZ9oD4V+BfoSY0TjEx*E%`Gil4DA$b2q~G& oR9PHHND&d{*u~n}aTS*&7L`;KrKWKiT9_GIaH*=g`nz!f07;E3v;Y7A diff --git a/src/Client.ts b/src/Client.ts index 1714146..8c9b76e 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -22,10 +22,6 @@ export declare namespace FileForgeClient { maxRetries?: number; } - interface Response{ - file?: string; - url?:string; - } } export class FileForgeClient { @@ -42,7 +38,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.GenerateRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise{ + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", @@ -76,19 +72,8 @@ export class FileForgeClient { }); if (_response.ok) { - const chunks: any[] = []; - - for await (let chunk of _response.body) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - - if (request.options?.host !== true){ - return {"file": buffer.toString()}; - }else{ - return JSON.parse(buffer.toString()) - } + + return _response.body } if (_response.error.reason === "status-code") { diff --git a/tests/custom.test.ts b/tests/custom.test.ts index 5fb1788..ad1e983 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -46,14 +46,22 @@ describe("test", () => { apiKey: FILEFORGE_API_KEY }); - const pdf:FileForgeClient.Response = await ff.generate( + const pdf = await ff.generate( [htmlFile, cssFile], { options: {} } - ); + ); + + const chunks: any[] = []; + + for await (let chunk of pdf) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); - await writeFile("output.pdf", pdf.file!); + await writeFile("output.pdf", buffer.toString()!); }, 10_000_000); @@ -71,7 +79,7 @@ describe("test", () => { apiKey: FILEFORGE_API_KEY }); - const pdf:FileForgeClient.Response = await ff.generate( + const pdf = await ff.generate( [htmlFile, cssFile], { options: { @@ -79,8 +87,15 @@ describe("test", () => { } } ); - - expect(pdf.url).not.toBeNull(); + const chunks: any[] = []; + + for await (let chunk of pdf) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); + + expect(JSON.parse(buffer.toString()).url).not.toBeNull(); }, 10_000_000); From 0817cbf1ed6a7c208f4b756d2a526451fab40743 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Sun, 26 May 2024 22:38:28 +0200 Subject: [PATCH 07/21] Modifies Fetcher to return something else than a stream, writes helper for generate function --- .fernignore | 4 +- output.pdf | Bin 31187 -> 18819 bytes output_helper.pdf | Bin 0 -> 14201 bytes package-lock.json | 10 + package.json | 20 +- src/Client.ts | 2 +- src/core/fetcher/Fetcher.ts | 47 ++- src/helper.ts | 86 ++++ tests/custom.test.ts | 76 +++- yarn.lock | 780 ++++++++++++++++++------------------ 10 files changed, 606 insertions(+), 419 deletions(-) create mode 100644 output_helper.pdf create mode 100644 src/helper.ts diff --git a/.fernignore b/.fernignore index 9e24d62..d5aa9f1 100644 --- a/.fernignore +++ b/.fernignore @@ -1,6 +1,8 @@ # Specify files that shouldn't be modified by Fern -src/core/form-data-utils/FormDataWrapper.ts +src/core/helper.ts +src/core/fetcher/Fetcher.ts +src/core/form-data-utils/FormData.ts src/core/form-data-utils/index.ts src/core/index.ts README.md diff --git a/output.pdf b/output.pdf index 022fa1e10584f9b8ec274d6891d3f36e5a34f07c..dbf0f7e333a7aa25c5ab5e96683e86b4ebadd03f 100644 GIT binary patch delta 15557 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 1dec07d..62d44b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,12 +13,14 @@ "form-data-encoder": "^4.0.2", "formdata-node": "^6.0.3", "js-base64": "3.7.2", + "mime-types": "^2.1.35", "node-fetch": "2.7.0", "qs": "6.11.2", "url-join": "4.0.1" }, "devDependencies": { "@types/jest": "29.5.5", + "@types/mime-types": "^2.1.4", "@types/node": "17.0.33", "@types/node-fetch": "2.6.9", "@types/qs": "6.9.8", @@ -1074,6 +1076,13 @@ "parse5": "^7.0.0" } }, + "node_modules/@types/mime-types": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", @@ -3295,6 +3304,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, diff --git a/package.json b/package.json index 88df0ff..b03bfc2 100644 --- a/package.json +++ b/package.json @@ -13,24 +13,26 @@ "test": "jest" }, "dependencies": { - "url-join": "4.0.1", "form-data": "4.0.0", + "form-data-encoder": "^4.0.2", + "formdata-node": "^6.0.3", + "js-base64": "3.7.2", + "mime-types": "^2.1.35", "node-fetch": "2.7.0", "qs": "6.11.2", - "formdata-node": "^6.0.3", - "form-data-encoder": "^4.0.2", - "js-base64": "3.7.2" + "url-join": "4.0.1" }, "devDependencies": { - "@types/url-join": "4.0.1", - "@types/qs": "6.9.8", + "@types/jest": "29.5.5", + "@types/mime-types": "^2.1.4", + "@types/node": "17.0.33", "@types/node-fetch": "2.6.9", + "@types/qs": "6.9.8", + "@types/url-join": "4.0.1", "jest": "29.7.0", - "@types/jest": "29.5.5", - "ts-jest": "29.1.1", "jest-environment-jsdom": "29.7.0", - "@types/node": "17.0.33", "prettier": "2.7.1", + "ts-jest": "29.1.1", "typescript": "4.6.4" } } diff --git a/src/Client.ts b/src/Client.ts index 8c9b76e..9ebcc95 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -38,7 +38,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.GenerateRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise{ + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index 9bf147a..5c7b3f2 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -42,6 +42,29 @@ export declare namespace Fetcher { } } +async function* readableStreamAsyncIterator(stream: ReadableStream) { + const reader = stream.getReader(); + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + yield value; + } + } finally { + reader.releaseLock(); + } + } + +function isStringifiedJSON(str: string): boolean { + try { + JSON.parse(str); + return true; + } catch (e) { + return false; + } + } + + const INITIAL_RETRY_DELAY = 1; const MAX_RETRY_DELAY = 60; const DEFAULT_MAX_RETRIES = 2; @@ -127,10 +150,32 @@ async function fetcherImpl(args: Fetcher.Args): Promise{ + + const files: AssetOrPathBuffer[] = document.files ?? []; + files.push({ path: "/index.html", content: document.html }); + + const test: boolean = document.test ?? true; + const save: boolean = document.host ?? false; + + + const optionsToUpload: FileForge.GenerateRequestOptions = { + test: test, + host: save, + expiresAt: document.expiresAt ?? new Date(Date.now() + 24 * 60 * 60 * 1000), + fileName: document.fileName ?? "document" + } + + const htmlBlob = new Blob([document.html],{ type: "text/html" }) + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + + let filesToUpload = [htmlFile]; + + files.forEach((asset) => { + + if (asset.content) { + + const assetType = mime.lookup(asset.path) || "application/octet-stream"; + + const fileBlob = new Blob([asset.content],{ type: assetType }) + const file = new File([fileBlob], asset.path, { type: assetType }); + filesToUpload.push(file); + + } + }); + + return await client.generate( + filesToUpload, + { + options: optionsToUpload + } + ) + +} \ No newline at end of file diff --git a/tests/custom.test.ts b/tests/custom.test.ts index ad1e983..fd8732c 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -1,6 +1,7 @@ import stream from "stream"; import * as core from "../src/core"; import { FileForgeClient } from "../src"; +import { generate_from_html } from "../src/Helper"; import * as error from "../src/errors/index"; import fs from "fs"; import { writeFile } from "fs/promises"; @@ -53,15 +54,8 @@ describe("test", () => { } ); - const chunks: any[] = []; - - for await (let chunk of pdf) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - await writeFile("output.pdf", buffer.toString()!); + await writeFile("output.pdf", pdf.file); }, 10_000_000); @@ -87,15 +81,9 @@ describe("test", () => { } } ); - const chunks: any[] = []; - - for await (let chunk of pdf) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - expect(JSON.parse(buffer.toString()).url).not.toBeNull(); + + expect(pdf.url).not.toBeNull(); }, 10_000_000); @@ -132,4 +120,60 @@ describe("test", () => { }, 10_000_000); + it("should generate a PDF buffer from helper", async () => { + const htmlBlob = new Blob([HTML], { + type: "text/html", + }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const pdf = await generate_from_html( + ff, + { + html:HTML, + fileName:"test", + host:false, + test:false + } + + ); + + await writeFile("output_helper.pdf", pdf.file!); + }, 10_000_000); + + it("should generate a PDF url from helper", async () => { + const htmlBlob = new Blob([HTML], { + type: "text/html", + }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const pdf = await generate_from_html( + ff, + { + html:HTML, + fileName:"test", + host:true, + } + + ); + + expect(pdf.url).not.toBeNull(); +}, 10_000_000); + + }); diff --git a/yarn.lock b/yarn.lock index 4c1d364..edc8902 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@ampproject/remapping@^2.2.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz" integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== dependencies: "@jridgewell/gen-mapping" "^0.3.5" @@ -12,7 +12,7 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: "@babel/highlight" "^7.24.2" @@ -20,12 +20,12 @@ "@babel/compat-data@^7.23.5": version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz" integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" @@ -46,7 +46,7 @@ "@babel/generator@^7.24.5", "@babel/generator@^7.7.2": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz" integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: "@babel/types" "^7.24.5" @@ -56,7 +56,7 @@ "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz" integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== dependencies: "@babel/compat-data" "^7.23.5" @@ -67,12 +67,12 @@ "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz" integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== "@babel/helper-function-name@^7.23.0": version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: "@babel/template" "^7.22.15" @@ -80,21 +80,21 @@ "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz" integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== dependencies: "@babel/types" "^7.22.5" "@babel/helper-module-imports@^7.24.3": version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" "@babel/helper-module-transforms@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz" integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== dependencies: "@babel/helper-environment-visitor" "^7.22.20" @@ -105,41 +105,41 @@ "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz" integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== "@babel/helper-simple-access@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz" integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== dependencies: "@babel/types" "^7.24.5" "@babel/helper-split-export-declaration@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz" integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== dependencies: "@babel/types" "^7.24.5" "@babel/helper-string-parser@^7.24.1": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== "@babel/helper-validator-identifier@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz" integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== "@babel/helper-validator-option@^7.23.5": version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== "@babel/helpers@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz" integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== dependencies: "@babel/template" "^7.24.0" @@ -148,7 +148,7 @@ "@babel/highlight@^7.24.2": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz" integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== dependencies: "@babel/helper-validator-identifier" "^7.24.5" @@ -158,110 +158,110 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz" integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== dependencies: "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz" integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== dependencies: "@babel/helper-plugin-utils" "^7.24.0" "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== dependencies: "@babel/code-frame" "^7.23.5" @@ -270,7 +270,7 @@ "@babel/traverse@^7.24.5": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz" integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== dependencies: "@babel/code-frame" "^7.24.2" @@ -286,7 +286,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz" integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== dependencies: "@babel/helper-string-parser" "^7.24.1" @@ -295,12 +295,12 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -311,12 +311,12 @@ "@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: "@jest/types" "^29.6.3" @@ -328,7 +328,7 @@ "@jest/core@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: "@jest/console" "^29.7.0" @@ -362,7 +362,7 @@ "@jest/environment@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: "@jest/fake-timers" "^29.7.0" @@ -372,14 +372,14 @@ "@jest/expect-utils@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz" integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: jest-get-type "^29.6.3" "@jest/expect@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz" integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: expect "^29.7.0" @@ -387,7 +387,7 @@ "@jest/fake-timers@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz" integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: "@jest/types" "^29.6.3" @@ -399,7 +399,7 @@ "@jest/globals@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz" integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: "@jest/environment" "^29.7.0" @@ -409,7 +409,7 @@ "@jest/reporters@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -439,14 +439,14 @@ "@jest/schemas@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jest/source-map@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" @@ -455,7 +455,7 @@ "@jest/test-result@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: "@jest/console" "^29.7.0" @@ -465,7 +465,7 @@ "@jest/test-sequencer@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: "@jest/test-result" "^29.7.0" @@ -475,7 +475,7 @@ "@jest/transform@^29.7.0": version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" @@ -494,9 +494,9 @@ slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.6.3": +"@jest/types@^29.0.0", "@jest/types@^29.6.3": version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz" integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: "@jest/schemas" "^29.6.3" @@ -508,7 +508,7 @@ "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: "@jridgewell/set-array" "^1.2.1" @@ -517,22 +517,22 @@ "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== "@jridgewell/set-array@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" @@ -540,31 +540,31 @@ "@sinclair/typebox@^0.27.8": version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sinonjs/commons@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz" integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz" integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" "@tootallnate/once@2": version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== "@types/babel__core@^7.1.14": version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== dependencies: "@babel/parser" "^7.20.7" @@ -575,14 +575,14 @@ "@types/babel__generator@*": version "7.6.8" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.8.tgz#f836c61f48b1346e7d2b0d93c6dacc5b9535d3ab" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz" integrity sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.4" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz" integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== dependencies: "@babel/parser" "^7.1.0" @@ -590,40 +590,40 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.20.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.5.tgz#7b7502be0aa80cc4ef22978846b983edaafcd4dd" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz" integrity sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ== dependencies: "@babel/types" "^7.20.7" "@types/graceful-fs@^4.1.3": version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz" integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.6" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== "@types/istanbul-lib-report@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz" integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@29.5.5": version "29.5.5" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.5.tgz" integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== dependencies: expect "^29.0.0" @@ -631,73 +631,71 @@ "@types/jsdom@^20.0.0": version "20.0.1" - resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" + resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz" integrity sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ== dependencies: "@types/node" "*" "@types/tough-cookie" "*" parse5 "^7.0.0" +"@types/mime-types@^2.1.4": + version "2.1.4" + resolved "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz" + integrity sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w== + "@types/node-fetch@2.6.9": version "2.6.9" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.9.tgz#15f529d247f1ede1824f7e7acdaa192d5f28071e" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz" integrity sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA== dependencies: "@types/node" "*" form-data "^4.0.0" -"@types/node@*": - version "20.12.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050" - integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw== - dependencies: - undici-types "~5.26.4" - -"@types/node@17.0.33": +"@types/node@*", "@types/node@17.0.33": version "17.0.33" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.33.tgz#3c1879b276dc63e73030bb91165e62a4509cd506" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz" integrity sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ== "@types/qs@6.9.8": version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz" integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/stack-utils@^2.0.0": version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== "@types/tough-cookie@*": version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz" integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== "@types/url-join@4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/url-join/-/url-join-4.0.1.tgz#4989c97f969464647a8586c7252d97b449cdc045" + resolved "https://registry.npmjs.org/@types/url-join/-/url-join-4.0.1.tgz" integrity sha512-wDXw9LEEUHyV+7UWy7U315nrJGJ7p1BzaCxDpEoLr789Dk1WDVMMlf3iBfbG2F8NdWnYyFbtTxUn2ZNbm1Q4LQ== "@types/yargs-parser@*": version "21.0.3" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz" integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== "@types/yargs@^17.0.8": version "17.0.32" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz" integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog== dependencies: "@types/yargs-parser" "*" abab@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== acorn-globals@^7.0.0: version "7.0.1" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz" integrity sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q== dependencies: acorn "^8.1.0" @@ -705,55 +703,55 @@ acorn-globals@^7.0.0: acorn-walk@^8.0.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== acorn@^8.1.0, acorn@^8.8.1: version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" ansi-escapes@^4.2.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== anymatch@^3.0.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -761,19 +759,19 @@ anymatch@^3.0.3: argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== -babel-jest@^29.7.0: +babel-jest@^29.0.0, babel-jest@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: "@jest/transform" "^29.7.0" @@ -786,7 +784,7 @@ babel-jest@^29.7.0: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -797,7 +795,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" @@ -807,7 +805,7 @@ babel-plugin-jest-hoist@^29.6.3: babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -825,7 +823,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: babel-plugin-jest-hoist "^29.6.3" @@ -833,12 +831,12 @@ babel-preset-jest@^29.6.3: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -846,14 +844,14 @@ brace-expansion@^1.1.7: braces@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -browserslist@^4.22.2: +browserslist@^4.22.2, "browserslist@>= 4.21.0": version "4.23.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== dependencies: caniuse-lite "^1.0.30001587" @@ -863,26 +861,26 @@ browserslist@^4.22.2: bs-logger@0.x: version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz" integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== dependencies: fast-json-stable-stringify "2.x" bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== call-bind@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== dependencies: es-define-property "^1.0.0" @@ -893,27 +891,27 @@ call-bind@^1.0.7: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001587: - version "1.0.30001620" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz#78bb6f35b8fe315b96b8590597094145d0b146b4" - integrity sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew== + version "1.0.30001618" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001618.tgz" + integrity sha512-p407+D1tIkDvsEAPS22lJxLQQaG8OTBEqo0KhzfABGk0TU4juBNDSfH0hyAp/HRyx+M8L17z/ltyhxh27FTfQg== chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -922,7 +920,7 @@ chalk@^2.4.2: chalk@^4.0.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -930,22 +928,22 @@ chalk@^4.0.0: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== ci-info@^3.2.0: version "3.9.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz" integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q== cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -954,58 +952,58 @@ cliui@^8.0.1: co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== collect-v8-coverage@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== convert-source-map@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== create-jest@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== dependencies: "@jest/types" "^29.6.3" @@ -1018,7 +1016,7 @@ create-jest@^29.7.0: cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -1027,55 +1025,55 @@ cross-spawn@^7.0.3: cssom@^0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz" integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" data-urls@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz" integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== dependencies: abab "^2.0.6" whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@4: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decimal.js@^10.4.2: version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== dedent@^1.0.0: version "1.5.3" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" + resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== define-data-property@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + resolved "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz" integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== dependencies: es-define-property "^1.0.0" @@ -1084,83 +1082,83 @@ define-data-property@^1.1.4: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== diff-sequences@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== domexception@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz" integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== dependencies: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.668: - version "1.4.772" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.772.tgz#7a1efabf86b20e5709736ce64dbc2ce13cb68936" - integrity sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A== + version "1.4.768" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.768.tgz" + integrity sha512-z2U3QcvNuxdkk33YV7R1bVMNq7fL23vq3WfO5BHcqrm4TnDGReouBfYKLEFh5umoK1XACjEwp8mmnhXk2EJigw== emittery@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== entities@^4.4.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" es-define-property@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" + resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz" integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== dependencies: get-intrinsic "^1.2.4" es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escodegen@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz" integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== dependencies: esprima "^4.0.1" @@ -1171,22 +1169,22 @@ escodegen@^2.0.0: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== estraverse@^5.2.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -1201,12 +1199,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expect@^29.0.0, expect@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: "@jest/expect-utils" "^29.7.0" @@ -1215,28 +1213,28 @@ expect@^29.0.0, expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -1244,12 +1242,12 @@ find-up@^4.0.0, find-up@^4.1.0: form-data-encoder@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-4.0.2.tgz" integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== -form-data@4.0.0, form-data@^4.0.0: +form-data@^4.0.0, form-data@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -1258,37 +1256,37 @@ form-data@4.0.0, form-data@^4.0.0: formdata-node@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" + resolved "https://registry.npmjs.org/formdata-node/-/formdata-node-6.0.3.tgz" integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== dependencies: es-errors "^1.3.0" @@ -1299,17 +1297,17 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== glob@^7.1.3, glob@^7.1.4: version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" @@ -1321,70 +1319,70 @@ glob@^7.1.3, glob@^7.1.4: globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz" integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== dependencies: es-define-property "^1.0.0" has-proto@^1.0.1: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz" integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== hasown@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-proxy-agent@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz" integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== dependencies: "@tootallnate/once" "2" @@ -1393,7 +1391,7 @@ http-proxy-agent@^5.0.0: https-proxy-agent@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -1401,19 +1399,19 @@ https-proxy-agent@^5.0.1: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== iconv-lite@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -1421,12 +1419,12 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -1434,59 +1432,59 @@ inflight@^1.0.4: inherits@2: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-core-module@^2.13.0: version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: hasown "^2.0.0" is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz" integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4: version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -1497,7 +1495,7 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-instrument@^6.0.0: version "6.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz#91655936cf7380e4e473383081e38478b69993b1" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz" integrity sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw== dependencies: "@babel/core" "^7.23.9" @@ -1508,7 +1506,7 @@ istanbul-lib-instrument@^6.0.0: istanbul-lib-report@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -1517,7 +1515,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -1526,7 +1524,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.7" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz" integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== dependencies: html-escaper "^2.0.0" @@ -1534,7 +1532,7 @@ istanbul-reports@^3.1.3: jest-changed-files@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" @@ -1543,7 +1541,7 @@ jest-changed-files@^29.7.0: jest-circus@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: "@jest/environment" "^29.7.0" @@ -1569,7 +1567,7 @@ jest-circus@^29.7.0: jest-cli@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: "@jest/core" "^29.7.0" @@ -1586,7 +1584,7 @@ jest-cli@^29.7.0: jest-config@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" @@ -1614,7 +1612,7 @@ jest-config@^29.7.0: jest-diff@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" @@ -1624,14 +1622,14 @@ jest-diff@^29.7.0: jest-docblock@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" jest-each@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: "@jest/types" "^29.6.3" @@ -1642,7 +1640,7 @@ jest-each@^29.7.0: jest-environment-jsdom@29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz" integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: "@jest/environment" "^29.7.0" @@ -1656,7 +1654,7 @@ jest-environment-jsdom@29.7.0: jest-environment-node@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: "@jest/environment" "^29.7.0" @@ -1668,12 +1666,12 @@ jest-environment-node@^29.7.0: jest-get-type@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== jest-haste-map@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz" integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: "@jest/types" "^29.6.3" @@ -1692,7 +1690,7 @@ jest-haste-map@^29.7.0: jest-leak-detector@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: jest-get-type "^29.6.3" @@ -1700,7 +1698,7 @@ jest-leak-detector@^29.7.0: jest-matcher-utils@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" @@ -1710,7 +1708,7 @@ jest-matcher-utils@^29.7.0: jest-message-util@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz" integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" @@ -1725,7 +1723,7 @@ jest-message-util@^29.7.0: jest-mock@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz" integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: "@jest/types" "^29.6.3" @@ -1734,25 +1732,25 @@ jest-mock@^29.7.0: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^29.6.3: version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== jest-resolve-dependencies@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: jest-regex-util "^29.6.3" jest-snapshot "^29.7.0" -jest-resolve@^29.7.0: +jest-resolve@*, jest-resolve@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" @@ -1767,7 +1765,7 @@ jest-resolve@^29.7.0: jest-runner@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: "@jest/console" "^29.7.0" @@ -1794,7 +1792,7 @@ jest-runner@^29.7.0: jest-runtime@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== dependencies: "@jest/environment" "^29.7.0" @@ -1822,7 +1820,7 @@ jest-runtime@^29.7.0: jest-snapshot@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" @@ -1848,7 +1846,7 @@ jest-snapshot@^29.7.0: jest-util@^29.0.0, jest-util@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: "@jest/types" "^29.6.3" @@ -1860,7 +1858,7 @@ jest-util@^29.0.0, jest-util@^29.7.0: jest-validate@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: "@jest/types" "^29.6.3" @@ -1872,7 +1870,7 @@ jest-validate@^29.7.0: jest-watcher@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: "@jest/test-result" "^29.7.0" @@ -1886,7 +1884,7 @@ jest-watcher@^29.7.0: jest-worker@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" @@ -1894,9 +1892,9 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@29.7.0: +jest@^29.0.0, jest@29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" + resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz" integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== dependencies: "@jest/core" "^29.7.0" @@ -1906,17 +1904,17 @@ jest@29.7.0: js-base64@3.7.2: version "3.7.2" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745" + resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz" integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ== js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -1924,7 +1922,7 @@ js-yaml@^3.13.1: jsdom@^20.0.0: version "20.0.3" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz" integrity sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ== dependencies: abab "^2.0.6" @@ -1956,80 +1954,80 @@ jsdom@^20.0.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== json-parse-even-better-errors@^2.3.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json5@^2.2.3: version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" lodash.memoize@4.x: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" make-error@1.x: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== micromatch@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" @@ -2037,120 +2035,120 @@ micromatch@^4.0.4: mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@^2.1.35: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== node-fetch@2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.14: version "2.0.14" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz" integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw== normalize-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nwsapi@^2.2.2: version "2.2.10" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.10.tgz#0b77a68e21a0b483db70b11fad055906e867cda8" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz" integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== object-inspect@^1.13.1: version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz" integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -2160,61 +2158,61 @@ parse-json@^5.2.0: parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" + resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== dependencies: entities "^4.4.0" path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== picocolors@^1.0.0, picocolors@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pirates@^4.0.4: version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" prettier@2.7.1: version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz" integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" @@ -2223,7 +2221,7 @@ pretty-format@^29.0.0, pretty-format@^29.7.0: prompts@^2.0.1: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -2231,66 +2229,66 @@ prompts@^2.0.1: psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== pure-rand@^6.0.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== qs@6.11.2: version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== react-is@^18.0.0: version "18.3.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve.exports@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.20.0: version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== dependencies: is-core-module "^2.13.0" @@ -2299,29 +2297,34 @@ resolve@^1.20.0: "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== saxes@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" + resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== dependencies: xmlchars "^2.2.0" semver@^6.3.0, semver@^6.3.1: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.3, semver@^7.5.4: +semver@^7.5.3: version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" + integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== + +semver@^7.5.4: + version "7.6.2" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== set-function-length@^1.2.1: version "1.2.2" - resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + resolved "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== dependencies: define-data-property "^1.1.4" @@ -2333,19 +2336,19 @@ set-function-length@^1.2.1: shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== side-channel@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== dependencies: call-bind "^1.0.7" @@ -2355,22 +2358,22 @@ side-channel@^1.0.4: signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== source-map-support@0.5.13: version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" @@ -2378,24 +2381,24 @@ source-map-support@0.5.13: source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stack-utils@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -2403,7 +2406,7 @@ string-length@^4.0.1: string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -2412,60 +2415,60 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -2474,24 +2477,24 @@ test-exclude@^6.0.0: tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tough-cookie@^4.1.2: version "4.1.4" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz" integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== dependencies: psl "^1.1.33" @@ -2501,19 +2504,19 @@ tough-cookie@^4.1.2: tr46@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz" integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== dependencies: punycode "^2.1.1" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-jest@29.1.1: version "29.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz" integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== dependencies: bs-logger "0.x" @@ -2527,32 +2530,27 @@ ts-jest@29.1.1: type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -typescript@4.6.4: +"typescript@>=4.3 <6", typescript@4.6.4: version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz" integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== -undici-types@~5.26.4: - version "5.26.5" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" - integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== - universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== update-browserslist-db@^1.0.13: version "1.0.16" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz#f6d489ed90fb2f07d67784eb3f53d7891f736356" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz" integrity sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ== dependencies: escalade "^3.1.2" @@ -2560,12 +2558,12 @@ update-browserslist-db@^1.0.13: url-join@4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" @@ -2573,7 +2571,7 @@ url-parse@^1.5.3: v8-to-istanbul@^9.0.1: version "9.2.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz#2ed7644a245cddd83d4e087b9b33b3e62dfd10ad" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz" integrity sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" @@ -2582,43 +2580,43 @@ v8-to-istanbul@^9.0.1: w3c-xmlserializer@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz" integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw== dependencies: xml-name-validator "^4.0.0" walker@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-mimetype@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== whatwg-url@^11.0.0: version "11.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz" integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== dependencies: tr46 "^3.0.0" @@ -2626,7 +2624,7 @@ whatwg-url@^11.0.0: whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -2634,14 +2632,14 @@ whatwg-url@^5.0.0: which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -2650,12 +2648,12 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz" integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== dependencies: imurmurhash "^0.1.4" @@ -2663,37 +2661,37 @@ write-file-atomic@^4.0.2: ws@^8.11.0: version "8.17.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.0.tgz#d145d18eca2ed25aaf791a183903f7be5e295fea" + resolved "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz" integrity sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow== xml-name-validator@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@^17.3.1: version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -2706,5 +2704,5 @@ yargs@^17.3.1: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From 5be9995f789f3aa1660e4d9df73d12854139407e Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Sun, 26 May 2024 22:39:26 +0200 Subject: [PATCH 08/21] Updates fernignore --- .fernignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.fernignore b/.fernignore index d5aa9f1..90c61de 100644 --- a/.fernignore +++ b/.fernignore @@ -1,6 +1,6 @@ # Specify files that shouldn't be modified by Fern -src/core/helper.ts +src/core/Helper.ts src/core/fetcher/Fetcher.ts src/core/form-data-utils/FormData.ts src/core/form-data-utils/index.ts From a866307d64a664a5e1349cdfa6ee924a46ba7812 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Sun, 26 May 2024 23:27:23 +0200 Subject: [PATCH 09/21] Adds merge + test case for merging --- output.pdf | Bin 18819 -> 18819 bytes output_helper.pdf | Bin 14201 -> 14201 bytes output_merged.pdf | Bin 0 -> 26822 bytes src/Client.ts | 94 +++++++++++++++++++++++++++++++++++++++++++ tests/custom.test.ts | 27 +++++++++++++ 5 files changed, 121 insertions(+) create mode 100644 output_merged.pdf diff --git a/output.pdf b/output.pdf index dbf0f7e333a7aa25c5ab5e96683e86b4ebadd03f..147f27b4f8d97102983e2fdcac22e91e8d9a8f38 100644 GIT binary patch delta 176 zcmZpk%-B4caYMd`vx~8-lZla~n~8yivx%9xp`(F?g_D`1ld+Mxo2!MJnVo_SAtjSH nc@)PHQbdF~cCmJLT*W1cMI{wQscBq>7G}m4T&k+B{%%|VZYL|} delta 176 zcmZpk%-B4caYMd`vxSk1lZ%0wiJ6PJnTfHZnWKfPk)^AFp|P2xv7@QEi=BcEAtjSH nc@)PHQbdF~cCmJLT*W1cMI{wQscBq>7G}m4T&k+B{%%|VNKq?$ diff --git a/output_helper.pdf b/output_helper.pdf index 7579c85d37a9e5751958a3c05a785983c58f380c..c23768993c5fa17d57a0a670494a58b2d13c8ee4 100644 GIT binary patch delta 151 zcmeyF_cL!ps+qHkv$Laxv757ji=l;yqlvSli;=5=tFeWXp{cQ>xwD0xf(;=hlUJA( KQ^lM(b7=r6DJH`J delta 151 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 qL>G}!3f#%R3!x|th4&vu>Fi?U { + const _request = core.newFormData(); + const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: false, + allowUnrecognizedEnumValues: false, + breadcrumbsPrefix: [""], + }); + await _request.append("options", new Blob([JSON.stringify(options)], { type: "application/json" })); + for (const _file of files) { + await _request.append("files", _file); + } + + const _response = await core.fetcher({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + "pdf/merge/" + ), + method: "POST", + headers: { + Authorization: await core.Supplier.get(this._options.apiKey), + "X-API-Key": await core.Supplier.get(this._options.apiKey), + "X-Fern-Language": "JavaScript", + "X-Fern-SDK-Name": "fileforge", + "X-Fern-SDK-Version": "0.0.12", + "X-Fern-Runtime": core.RUNTIME.type, + "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _request.getHeaders()), + }, + body: await _request.getBody(), + responseType: "streaming", + timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, + maxRetries: requestOptions?.maxRetries, + }); + if (_response.ok) { + return _response.body; + } + + if (_response.error.reason === "status-code") { + switch (_response.error.statusCode) { + case 400: + throw new FileForge.BadRequestError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 401: + throw new FileForge.UnauthorizedError( + await serializers.ErrorSchema.parseOrThrow(_response.error.body, { + unrecognizedObjectKeys: "passthrough", + allowUnrecognizedUnionMembers: true, + allowUnrecognizedEnumValues: true, + breadcrumbsPrefix: ["response"], + }) + ); + case 500: + throw new FileForge.InternalServerError(_response.error.body); + default: + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.body, + }); + } + } + + switch (_response.error.reason) { + case "non-json": + throw new errors.FileForgeError({ + statusCode: _response.error.statusCode, + body: _response.error.rawBody, + }); + case "timeout": + throw new errors.FileForgeTimeoutError(); + case "unknown": + throw new errors.FileForgeError({ + message: _response.error.errorMessage, + }); + } + } } diff --git a/tests/custom.test.ts b/tests/custom.test.ts index fd8732c..6ba9c1b 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -175,5 +175,32 @@ describe("test", () => { expect(pdf.url).not.toBeNull(); }, 10_000_000); + it("should merge two PDFs", async () => { + const PDF1 = await fs.promises.readFile("./output.pdf"); + const PDF2 = await fs.promises.readFile("./output_helper.pdf"); + + const pdfBlob1= new Blob([PDF1], { + type: "application/pdf", + }); + const pdfBlob2 = new Blob([PDF2], { + type: "application/pdf", + }); + const file1 = new File([pdfBlob1], "pdf1.pdf", { type: "application/pdf" }); + const file2 = new File([pdfBlob2], "pdf2.pdf", { type: "application/pdf" }); + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const pdf = await ff.merge( + [file1, file2], + { + options: {}, + } + ); + + await writeFile("output_merged.pdf", pdf.file); + expect(pdf.file).not.toBeNull(); +}, 10_000_000); }); From 4551db35d03cb8c327feab394a9a3531c8c94a95 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Sun, 26 May 2024 23:28:37 +0200 Subject: [PATCH 10/21] Adds Client.ts to fernignore --- .fernignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.fernignore b/.fernignore index 90c61de..564e53b 100644 --- a/.fernignore +++ b/.fernignore @@ -1,6 +1,7 @@ # Specify files that shouldn't be modified by Fern -src/core/Helper.ts +src/core/Client.ts +src/core/helper.ts src/core/fetcher/Fetcher.ts src/core/form-data-utils/FormData.ts src/core/form-data-utils/index.ts From 2c6305ea949642dfd3301f908a4abaad4382fd85 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 12:13:16 +0200 Subject: [PATCH 11/21] Bases fetcher response type on header content-type --- output.pdf | Bin 18819 -> 31187 bytes output_helper.pdf | Bin 14201 -> 23089 bytes output_merged.pdf | Bin 26822 -> 47688 bytes src/Client.ts | 2 +- src/core/fetcher/Fetcher.ts | 33 +++++++++++------------------ tests/custom.test.ts | 40 ++++++++++++++++++++++++++++-------- 6 files changed, 45 insertions(+), 30 deletions(-) diff --git a/output.pdf b/output.pdf index 147f27b4f8d97102983e2fdcac22e91e8d9a8f38..551c24202c634b2a8a6d3ac05c0152f5cfd8f225 100644 GIT binary patch literal 31187 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%0ADqjCIEbx99hceC1GfLN zxMN#tH5g-5ct8UPU}rpK?R^gCr^L_QJ}LggN=SjUR1r_0dWk(1*t*} zYO(Oy$N)NsxhubfnRQbO9j8ZBgxN@|Qn?zStsjg}AziZx=~uoI%;Rp|Tv9iiM@j>E zJEPyYK?m-ERJQ!(YY(aH#2BEqx&QCzWYEYD0H6M9UKEy=V1TK?X=YhZstoGSG^gn`^W-g;3i9{0CrUKPU)BDV`Hh1m^U z{sY)T5?HKNElwtc_o)5!?Ku+%GwKekS}g`P4}2S)E4c-%0XD?T3@Pv)x5Cg19B(Fo zI_P*ampu|{nM+Mlbx(P|>cSZLx4R$kWRe0&dOz>O*T**P4po{jH|3KLgk15>DQ}w*C z=so6GhE~jXch!yr-LPc8hCZpOHU3YeDZ1;?3*sp zj{$(r4A0y06zd?L=eZnT1444w8a&fGMfdj4tM%O+OrNitPFF|J)x8B=@0_!3z$)@O z%7iWf^?`C@7rSj%TY_35%T*8nLDyV=PV94!b3`!Vs2%7tTiowtXh~cg*Pj^`#g+mD zv#qSpxJA2FLkSCr2CoFY{;aw}4cGTE+qp`2OUnw6sbEqIPKnrHO|5MyH$nI0rPdE| zaX?kc@F0Y*Si+rAJDQWgz`Cmx<|l*X7(ZPEl<0=e}p=9=l~QPQ#bzFM0zV--5+=d}SK4@xr(LmlYcMM+ViaztsD( z9B+U7NAJtJ^<{a}vZ>|6dS;Ms3tDKnr_@x=+S=c-De; zj4St;3hFVv^8;=4B%?b*̞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 diff --git a/output_helper.pdf b/output_helper.pdf index c23768993c5fa17d57a0a670494a58b2d13c8ee4..14db9f1b9b837380d0b60241467b0298d643e81f 100644 GIT binary patch literal 23089 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 F{~siz%z*#^ delta 11261 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 diff --git a/output_merged.pdf b/output_merged.pdf index bc015776f6103452abb081954b4e2d6af472c9de..09a6579778481552d37fb6beebb0ba57d4930b15 100644 GIT binary patch literal 47688 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 literal 26822 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 qL>G}!3f#%R3!x|th4&vu>Fi?U{ + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index 5c7b3f2..64d75e6 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -55,15 +55,6 @@ async function* readableStreamAsyncIterator(stream: ReadableStream) } } -function isStringifiedJSON(str: string): boolean { - try { - JSON.parse(str); - return true; - } catch (e) { - return false; - } - } - const INITIAL_RETRY_DELAY = 1; const MAX_RETRY_DELAY = 60; @@ -154,23 +145,23 @@ async function fetcherImpl(args: Fetcher.Args): Promise { options: {} } ); - - await writeFile("output.pdf", pdf.file); + const chunks: any[] = []; + + for await (let chunk of pdf) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); + const bufferString = buffer.toString() + + await writeFile("output.pdf", bufferString); }, 10_000_000); @@ -82,7 +90,6 @@ describe("test", () => { } ); - expect(pdf.url).not.toBeNull(); }, 10_000_000); @@ -143,9 +150,18 @@ describe("test", () => { test:false } - ); + ); + const chunks: any[] = []; + + for await (let chunk of pdf) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); + const bufferString = buffer.toString() + - await writeFile("output_helper.pdf", pdf.file!); + await writeFile("output_helper.pdf", bufferString); }, 10_000_000); it("should generate a PDF url from helper", async () => { @@ -197,10 +213,18 @@ describe("test", () => { { options: {}, } - ); + ); + + const chunks: any[] = []; + + for await (let chunk of pdf) { + chunks.push(chunk); + } + + const buffer: Buffer = Buffer.concat(chunks); + const bufferString = buffer.toString() - await writeFile("output_merged.pdf", pdf.file); - expect(pdf.file).not.toBeNull(); + await writeFile("output_merged.pdf", bufferString); }, 10_000_000); }); From 29e907c1afefdc3a8f24bd0465c9e70d64cc4692 Mon Sep 17 00:00:00 2001 From: fern-bot Date: Mon, 27 May 2024 12:48:20 +0200 Subject: [PATCH 12/21] Revert "Release 0.0.12" This reverts commit 18b679f235293bbb1cd1dd58d4ebdb6816fbd398. --- src/Client.ts | 155 ++++---- src/api/client/requests/ConvertDocxRequest.ts | 4 +- src/api/client/requests/GenerateRequest.ts | 4 +- src/api/client/requests/MergeRequest.ts | 4 +- src/api/errors/BadGatewayError.ts | 6 +- src/api/errors/BadRequestError.ts | 6 +- src/api/errors/InternalServerError.ts | 2 +- src/api/errors/UnauthorizedError.ts | 6 +- src/core/fetcher/Fetcher.ts | 102 +----- src/environments.ts | 4 +- .../{FileforgeError.ts => FileForgeError.ts} | 4 +- ...meoutError.ts => FileForgeTimeoutError.ts} | 4 +- src/errors/index.ts | 4 +- src/index.ts | 8 +- .../types/ConvertDocxRequestOptions.ts | 4 +- src/serialization/types/ErrorSchema.ts | 4 +- .../types/GenerateRequestOptions.ts | 4 +- .../types/MergeRequestOptions.ts | 4 +- yarn.lock | 337 +++++++++--------- 19 files changed, 288 insertions(+), 378 deletions(-) rename src/errors/{FileforgeError.ts => FileForgeError.ts} (90%) rename src/errors/{FileforgeTimeoutError.ts => FileForgeTimeoutError.ts} (53%) diff --git a/src/Client.ts b/src/Client.ts index 5ad4c17..8356092 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -7,13 +7,14 @@ import * as core from "./core"; import urlJoin from "url-join"; import * as errors from "./errors/index"; import * as fs from "fs"; -import * as Fileforge from "./api/index"; +import * as FileForge from "./api/index"; import * as stream from "stream"; +import { default as FormData } from "form-data"; import * as serializers from "./serialization/index"; -export declare namespace FileforgeClient { +export declare namespace FileForgeClient { interface Options { - environment?: core.Supplier; + environment?: core.Supplier; username?: core.Supplier; password?: core.Supplier; apiKey: core.Supplier; @@ -22,23 +23,22 @@ export declare namespace FileforgeClient { interface RequestOptions { timeoutInSeconds?: number; maxRetries?: number; - abortSignal?: AbortSignal; } } -export class FileforgeClient { - constructor(protected readonly _options: FileforgeClient.Options) {} +export class FileForgeClient { + constructor(protected readonly _options: FileForgeClient.Options) {} /** - * @param {FileforgeClient.RequestOptions} requestOptions - Request-specific configuration. + * @param {FileForgeClient.RequestOptions} requestOptions - Request-specific configuration. * * @example - * await fileforge.retrieveServerStatus() + * await fileForge.retrieveServerStatus() */ - public async retrieveServerStatus(requestOptions?: FileforgeClient.RequestOptions): Promise { + public async retrieveServerStatus(requestOptions?: FileForgeClient.RequestOptions): Promise { const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, "status/" ), method: "GET", @@ -47,21 +47,20 @@ export class FileforgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.12", + "X-Fern-SDK-Version": "0.0.10", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, }, contentType: "application/json", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, - abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return; } if (_response.error.reason === "status-code") { - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -69,14 +68,14 @@ export class FileforgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileforgeTimeoutError(); + throw new errors.FileForgeTimeoutError(); case "unknown": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ message: _response.error.errorMessage, }); } @@ -100,22 +99,21 @@ export class FileforgeClient { * - Word variables, as listed in the document metadata: `{DOCVARIABLE "name"}` * * To enable variable replacement as Word variables for your account, please contact the FileForge support. - * @throws {@link Fileforge.BadRequestError} - * @throws {@link Fileforge.UnauthorizedError} - * @throws {@link Fileforge.InternalServerError} + * @throws {@link FileForge.BadRequestError} + * @throws {@link FileForge.UnauthorizedError} + * @throws {@link FileForge.InternalServerError} */ public async convertDocx( file: File | fs.ReadStream, - request: Fileforge.ConvertDocxRequest, - requestOptions?: FileforgeClient.RequestOptions + request: FileForge.ConvertDocxRequest, + requestOptions?: FileForgeClient.RequestOptions ): Promise { - const _request = new core.FormDataWrapper(); - await _request.append("options", JSON.stringify(request.options)); - await _request.append("file", file); - const _maybeEncodedRequest = _request.getRequest(); + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); + _request.append("file", file); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, "pdf/docx/" ), method: "POST", @@ -124,16 +122,15 @@ export class FileforgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.12", + "X-Fern-SDK-Version": "0.0.10", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, - ...(await _maybeEncodedRequest.getHeaders()), }, - body: await _maybeEncodedRequest.getBody(), + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, - abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -142,7 +139,7 @@ export class FileforgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new Fileforge.BadRequestError( + throw new FileForge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -151,7 +148,7 @@ export class FileforgeClient { }) ); case 401: - throw new Fileforge.UnauthorizedError( + throw new FileForge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -160,9 +157,9 @@ export class FileforgeClient { }) ); case 500: - throw new Fileforge.InternalServerError(_response.error.body); + throw new FileForge.InternalServerError(_response.error.body); default: - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -171,14 +168,14 @@ export class FileforgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileforgeTimeoutError(); + throw new errors.FileForgeTimeoutError(); case "unknown": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ message: _response.error.errorMessage, }); } @@ -186,26 +183,25 @@ export class FileforgeClient { /** * Generates a PDF document from web assets. - * @throws {@link Fileforge.BadRequestError} - * @throws {@link Fileforge.UnauthorizedError} - * @throws {@link Fileforge.InternalServerError} - * @throws {@link Fileforge.BadGatewayError} + * @throws {@link FileForge.BadRequestError} + * @throws {@link FileForge.UnauthorizedError} + * @throws {@link FileForge.InternalServerError} + * @throws {@link FileForge.BadGatewayError} */ public async generate( files: File[] | fs.ReadStream[], - request: Fileforge.GenerateRequest, - requestOptions?: FileforgeClient.RequestOptions + request: FileForge.GenerateRequest, + requestOptions?: FileForgeClient.RequestOptions ): Promise { - const _request = new core.FormDataWrapper(); - await _request.append("options", JSON.stringify(request.options)); + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - await _request.append("files", _file); + _request.append("files", _file); } - const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, "pdf/generate/" ), method: "POST", @@ -214,16 +210,15 @@ export class FileforgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.12", + "X-Fern-SDK-Version": "0.0.10", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, - ...(await _maybeEncodedRequest.getHeaders()), }, - body: await _maybeEncodedRequest.getBody(), + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, - abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -232,7 +227,7 @@ export class FileforgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new Fileforge.BadRequestError( + throw new FileForge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -241,7 +236,7 @@ export class FileforgeClient { }) ); case 401: - throw new Fileforge.UnauthorizedError( + throw new FileForge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -250,9 +245,9 @@ export class FileforgeClient { }) ); case 500: - throw new Fileforge.InternalServerError(_response.error.body); + throw new FileForge.InternalServerError(_response.error.body); case 502: - throw new Fileforge.BadGatewayError( + throw new FileForge.BadGatewayError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -261,7 +256,7 @@ export class FileforgeClient { }) ); default: - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -270,39 +265,38 @@ export class FileforgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileforgeTimeoutError(); + throw new errors.FileForgeTimeoutError(); case "unknown": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ message: _response.error.errorMessage, }); } } /** - * @throws {@link Fileforge.BadRequestError} - * @throws {@link Fileforge.UnauthorizedError} - * @throws {@link Fileforge.InternalServerError} + * @throws {@link FileForge.BadRequestError} + * @throws {@link FileForge.UnauthorizedError} + * @throws {@link FileForge.InternalServerError} */ public async merge( files: File[] | fs.ReadStream[], - request: Fileforge.MergeRequest, - requestOptions?: FileforgeClient.RequestOptions + request: FileForge.MergeRequest, + requestOptions?: FileForgeClient.RequestOptions ): Promise { - const _request = new core.FormDataWrapper(); - await _request.append("options", JSON.stringify(request.options)); + const _request = new FormData(); + _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - await _request.append("files", _file); + _request.append("files", _file); } - const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, "pdf/merge/" ), method: "POST", @@ -311,16 +305,15 @@ export class FileforgeClient { "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.12", + "X-Fern-SDK-Version": "0.0.10", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, - ...(await _maybeEncodedRequest.getHeaders()), }, - body: await _maybeEncodedRequest.getBody(), + contentType: "multipart/form-data; boundary=" + _request.getBoundary(), + body: _request, responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, - abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -329,7 +322,7 @@ export class FileforgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new Fileforge.BadRequestError( + throw new FileForge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -338,7 +331,7 @@ export class FileforgeClient { }) ); case 401: - throw new Fileforge.UnauthorizedError( + throw new FileForge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -347,9 +340,9 @@ export class FileforgeClient { }) ); case 500: - throw new Fileforge.InternalServerError(_response.error.body); + throw new FileForge.InternalServerError(_response.error.body); default: - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -358,14 +351,14 @@ export class FileforgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileforgeTimeoutError(); + throw new errors.FileForgeTimeoutError(); case "unknown": - throw new errors.FileforgeError({ + throw new errors.FileForgeError({ message: _response.error.errorMessage, }); } diff --git a/src/api/client/requests/ConvertDocxRequest.ts b/src/api/client/requests/ConvertDocxRequest.ts index 48abbff..80b2b21 100644 --- a/src/api/client/requests/ConvertDocxRequest.ts +++ b/src/api/client/requests/ConvertDocxRequest.ts @@ -2,7 +2,7 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as Fileforge from "../../index"; +import * as FileForge from "../../index"; /** * @example @@ -34,5 +34,5 @@ export interface ConvertDocxRequest { * * There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options. */ - options: Fileforge.ConvertDocxRequestOptions; + options: FileForge.ConvertDocxRequestOptions; } diff --git a/src/api/client/requests/GenerateRequest.ts b/src/api/client/requests/GenerateRequest.ts index baa60ce..1f78730 100644 --- a/src/api/client/requests/GenerateRequest.ts +++ b/src/api/client/requests/GenerateRequest.ts @@ -2,7 +2,7 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as Fileforge from "../../index"; +import * as FileForge from "../../index"; /** * @example @@ -10,5 +10,5 @@ import * as Fileforge from "../../index"; */ export interface GenerateRequest { /** Conversion options. This field is required even if empty. */ - options: Fileforge.GenerateRequestOptions; + options: FileForge.GenerateRequestOptions; } diff --git a/src/api/client/requests/MergeRequest.ts b/src/api/client/requests/MergeRequest.ts index e784b4c..726c713 100644 --- a/src/api/client/requests/MergeRequest.ts +++ b/src/api/client/requests/MergeRequest.ts @@ -2,12 +2,12 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as Fileforge from "../../index"; +import * as FileForge from "../../index"; /** * @example * {} */ export interface MergeRequest { - options: Fileforge.MergeRequestOptions; + options: FileForge.MergeRequestOptions; } diff --git a/src/api/errors/BadGatewayError.ts b/src/api/errors/BadGatewayError.ts index be53669..953d2b5 100644 --- a/src/api/errors/BadGatewayError.ts +++ b/src/api/errors/BadGatewayError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as Fileforge from "../index"; +import * as FileForge from "../index"; -export class BadGatewayError extends errors.FileforgeError { - constructor(body: Fileforge.ErrorSchema) { +export class BadGatewayError extends errors.FileForgeError { + constructor(body: FileForge.ErrorSchema) { super({ message: "BadGatewayError", statusCode: 502, diff --git a/src/api/errors/BadRequestError.ts b/src/api/errors/BadRequestError.ts index fe45848..7fb7954 100644 --- a/src/api/errors/BadRequestError.ts +++ b/src/api/errors/BadRequestError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as Fileforge from "../index"; +import * as FileForge from "../index"; -export class BadRequestError extends errors.FileforgeError { - constructor(body: Fileforge.ErrorSchema) { +export class BadRequestError extends errors.FileForgeError { + constructor(body: FileForge.ErrorSchema) { super({ message: "BadRequestError", statusCode: 400, diff --git a/src/api/errors/InternalServerError.ts b/src/api/errors/InternalServerError.ts index ecd25b4..3a3bea5 100644 --- a/src/api/errors/InternalServerError.ts +++ b/src/api/errors/InternalServerError.ts @@ -4,7 +4,7 @@ import * as errors from "../../errors/index"; -export class InternalServerError extends errors.FileforgeError { +export class InternalServerError extends errors.FileForgeError { constructor(body?: unknown) { super({ message: "InternalServerError", diff --git a/src/api/errors/UnauthorizedError.ts b/src/api/errors/UnauthorizedError.ts index 3c21e62..10e74b0 100644 --- a/src/api/errors/UnauthorizedError.ts +++ b/src/api/errors/UnauthorizedError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as Fileforge from "../index"; +import * as FileForge from "../index"; -export class UnauthorizedError extends errors.FileforgeError { - constructor(body: Fileforge.ErrorSchema) { +export class UnauthorizedError extends errors.FileForgeError { + constructor(body: FileForge.ErrorSchema) { super({ message: "UnauthorizedError", statusCode: 401, diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index 265126e..ee40897 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -1,3 +1,4 @@ +import { default as FormData } from "form-data"; import qs from "qs"; import { RUNTIME } from "../runtime"; import { APIResponse } from "./APIResponse"; @@ -15,7 +16,6 @@ export declare namespace Fetcher { timeoutMs?: number; maxRetries?: number; withCredentials?: boolean; - abortSignal?: AbortSignal; responseType?: "json" | "blob" | "streaming" | "text"; } @@ -67,28 +67,13 @@ async function fetcherImpl(args: Fetcher.Args): Promise { - if (body instanceof Uint8Array) { - return body; - } else { - return JSON.stringify(body); - } - }; - - if (RUNTIME.type === "node") { - if (args.body instanceof (await import("formdata-node")).FormData) { - // @ts-expect-error - body = args.body; - } else { - body = maybeStringifyBody(args.body); - } + if (args.body instanceof FormData) { + // @ts-expect-error + body = args.body; + } else if (args.body instanceof Uint8Array) { + body = args.body; } else { - if (args.body instanceof (await import("form-data")).default) { - // @ts-expect-error - body = args.body; - } else { - body = maybeStringifyBody(args.body); - } + body = JSON.stringify(args.body); } // In Node.js environments, the SDK always uses`node-fetch`. @@ -104,33 +89,21 @@ async function fetcherImpl(args: Fetcher.Args): Promise => { - const signals: AbortSignal[] = []; - - // Add timeout signal - let timeoutAbortId: NodeJS.Timeout | undefined = undefined; + const controller = new AbortController(); + let abortId = undefined; if (args.timeoutMs != null) { - const { signal, abortId } = getTimeoutSignal(args.timeoutMs); - timeoutAbortId = abortId; - signals.push(signal); + abortId = setTimeout(() => controller.abort(), args.timeoutMs); } - - // Add arbitrary signal - if (args.abortSignal != null) { - signals.push(args.abortSignal); - } - const response = await fetchFn(url, { method: args.method, headers, body, - signal: anySignal(signals), + signal: controller.signal, credentials: args.withCredentials ? "include" : undefined, }); - - if (timeoutAbortId != null) { - clearTimeout(timeoutAbortId); + if (abortId != null) { + clearTimeout(abortId); } - return response; }; @@ -194,15 +167,7 @@ async function fetcherImpl(args: Fetcher.Args): Promise(args: Fetcher.Args): Promise controller.abort(TIMEOUT), timeoutMs); - return { signal: controller.signal, abortId }; -} - -/** - * Returns an abort signal that is getting aborted when - * at least one of the specified abort signals is aborted. - * - * Requires at least node.js 18. - */ -function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal { - // Allowing signals to be passed either as array - // of signals or as multiple arguments. - const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args); - - const controller = new AbortController(); - - for (const signal of signals) { - if (signal.aborted) { - // Exiting early if one of the signals - // is already aborted. - controller.abort((signal as any)?.reason); - break; - } - - // Listening for signals and removing the listeners - // when at least one symbol is aborted. - signal.addEventListener("abort", () => controller.abort((signal as any)?.reason), { - signal: controller.signal, - }); - } - - return controller.signal; -} - export const fetcher: FetchFunction = fetcherImpl; diff --git a/src/environments.ts b/src/environments.ts index 5dd3fe7..bf96f92 100644 --- a/src/environments.ts +++ b/src/environments.ts @@ -2,8 +2,8 @@ * This file was auto-generated by Fern from our API Definition. */ -export const FileforgeEnvironment = { +export const FileForgeEnvironment = { Default: "https://api.fileforge.com", } as const; -export type FileforgeEnvironment = typeof FileforgeEnvironment.Default; +export type FileForgeEnvironment = typeof FileForgeEnvironment.Default; diff --git a/src/errors/FileforgeError.ts b/src/errors/FileForgeError.ts similarity index 90% rename from src/errors/FileforgeError.ts rename to src/errors/FileForgeError.ts index 8b2d5eb..26a2145 100644 --- a/src/errors/FileforgeError.ts +++ b/src/errors/FileForgeError.ts @@ -2,13 +2,13 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileforgeError extends Error { +export class FileForgeError extends Error { readonly statusCode?: number; readonly body?: unknown; constructor({ message, statusCode, body }: { message?: string; statusCode?: number; body?: unknown }) { super(buildMessage({ message, statusCode, body })); - Object.setPrototypeOf(this, FileforgeError.prototype); + Object.setPrototypeOf(this, FileForgeError.prototype); if (statusCode != null) { this.statusCode = statusCode; } diff --git a/src/errors/FileforgeTimeoutError.ts b/src/errors/FileForgeTimeoutError.ts similarity index 53% rename from src/errors/FileforgeTimeoutError.ts rename to src/errors/FileForgeTimeoutError.ts index de95282..382adca 100644 --- a/src/errors/FileforgeTimeoutError.ts +++ b/src/errors/FileForgeTimeoutError.ts @@ -2,9 +2,9 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileforgeTimeoutError extends Error { +export class FileForgeTimeoutError extends Error { constructor() { super("Timeout"); - Object.setPrototypeOf(this, FileforgeTimeoutError.prototype); + Object.setPrototypeOf(this, FileForgeTimeoutError.prototype); } } diff --git a/src/errors/index.ts b/src/errors/index.ts index af778a7..cf98fef 100644 --- a/src/errors/index.ts +++ b/src/errors/index.ts @@ -1,2 +1,2 @@ -export { FileforgeError } from "./FileforgeError"; -export { FileforgeTimeoutError } from "./FileforgeTimeoutError"; +export { FileForgeError } from "./FileForgeError"; +export { FileForgeTimeoutError } from "./FileForgeTimeoutError"; diff --git a/src/index.ts b/src/index.ts index c93e5d4..8013178 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export * as Fileforge from "./api"; -export { FileforgeClient } from "./Client"; -export { FileforgeEnvironment } from "./environments"; -export { FileforgeError, FileforgeTimeoutError } from "./errors"; +export * as FileForge from "./api"; +export { FileForgeClient } from "./Client"; +export { FileForgeEnvironment } from "./environments"; +export { FileForgeError, FileForgeTimeoutError } from "./errors"; diff --git a/src/serialization/types/ConvertDocxRequestOptions.ts b/src/serialization/types/ConvertDocxRequestOptions.ts index 5ab4694..3ea284a 100644 --- a/src/serialization/types/ConvertDocxRequestOptions.ts +++ b/src/serialization/types/ConvertDocxRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as Fileforge from "../../api/index"; +import * as FileForge from "../../api/index"; import * as core from "../../core"; export const ConvertDocxRequestOptions: core.serialization.ObjectSchema< serializers.ConvertDocxRequestOptions.Raw, - Fileforge.ConvertDocxRequestOptions + FileForge.ConvertDocxRequestOptions > = core.serialization.object({ templateLiterals: core.serialization.record(core.serialization.string(), core.serialization.string()).optional(), }); diff --git a/src/serialization/types/ErrorSchema.ts b/src/serialization/types/ErrorSchema.ts index 08bea9b..627132b 100644 --- a/src/serialization/types/ErrorSchema.ts +++ b/src/serialization/types/ErrorSchema.ts @@ -3,10 +3,10 @@ */ import * as serializers from "../index"; -import * as Fileforge from "../../api/index"; +import * as FileForge from "../../api/index"; import * as core from "../../core"; -export const ErrorSchema: core.serialization.ObjectSchema = +export const ErrorSchema: core.serialization.ObjectSchema = core.serialization.object({ statusCode: core.serialization.number(), code: core.serialization.string(), diff --git a/src/serialization/types/GenerateRequestOptions.ts b/src/serialization/types/GenerateRequestOptions.ts index b00102e..0392fb3 100644 --- a/src/serialization/types/GenerateRequestOptions.ts +++ b/src/serialization/types/GenerateRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as Fileforge from "../../api/index"; +import * as FileForge from "../../api/index"; import * as core from "../../core"; export const GenerateRequestOptions: core.serialization.ObjectSchema< serializers.GenerateRequestOptions.Raw, - Fileforge.GenerateRequestOptions + FileForge.GenerateRequestOptions > = core.serialization.object({ test: core.serialization.boolean().optional(), host: core.serialization.boolean().optional(), diff --git a/src/serialization/types/MergeRequestOptions.ts b/src/serialization/types/MergeRequestOptions.ts index d7ed099..b7c01dd 100644 --- a/src/serialization/types/MergeRequestOptions.ts +++ b/src/serialization/types/MergeRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as Fileforge from "../../api/index"; +import * as FileForge from "../../api/index"; import * as core from "../../core"; export const MergeRequestOptions: core.serialization.ObjectSchema< serializers.MergeRequestOptions.Raw, - Fileforge.MergeRequestOptions + FileForge.MergeRequestOptions > = core.serialization.object({}); export declare namespace MergeRequestOptions { diff --git a/yarn.lock b/yarn.lock index 13583da..5f46d65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,155 +10,156 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" - integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: - "@babel/highlight" "^7.24.6" + "@babel/highlight" "^7.24.2" picocolors "^1.0.0" -"@babel/compat-data@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" - integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== +"@babel/compat-data@^7.23.5": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" - integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-compilation-targets" "^7.24.6" - "@babel/helper-module-transforms" "^7.24.6" - "@babel/helpers" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/template" "^7.24.6" - "@babel/traverse" "^7.24.6" - "@babel/types" "^7.24.6" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.6", "@babel/generator@^7.7.2": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" - integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== +"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: - "@babel/types" "^7.24.6" + "@babel/types" "^7.24.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" - integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== +"@babel/helper-compilation-targets@^7.23.6": + version "7.23.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" + integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== dependencies: - "@babel/compat-data" "^7.24.6" - "@babel/helper-validator-option" "^7.24.6" + "@babel/compat-data" "^7.23.5" + "@babel/helper-validator-option" "^7.23.5" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" - integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== - -"@babel/helper-function-name@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" - integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== - dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/helper-hoist-variables@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" - integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-module-imports@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" - integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-module-transforms@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" - integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== - dependencies: - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-module-imports" "^7.24.6" - "@babel/helper-simple-access" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.6", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" - integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== - -"@babel/helper-simple-access@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" - integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-split-export-declaration@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" - integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== - dependencies: - "@babel/types" "^7.24.6" - -"@babel/helper-string-parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" - integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== - -"@babel/helper-validator-identifier@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" - integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== - -"@babel/helper-validator-option@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" - integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== - -"@babel/helpers@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" - integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== - dependencies: - "@babel/template" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/highlight@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" - integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== - dependencies: - "@babel/helper-validator-identifier" "^7.24.6" +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" + integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== + dependencies: + "@babel/types" "^7.24.0" + +"@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + +"@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== + dependencies: + "@babel/types" "^7.24.5" + +"@babel/helper-string-parser@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" + integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== + +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== + +"@babel/helper-validator-option@^7.23.5": + version "7.23.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" + integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== + +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== + dependencies: + "@babel/template" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" + +"@babel/highlight@^7.24.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== + dependencies: + "@babel/helper-validator-identifier" "^7.24.5" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" - integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -196,11 +197,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz#bcca2964150437f88f65e3679e3d68762287b9c8" - integrity sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw== + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== dependencies: - "@babel/helper-plugin-utils" "^7.24.6" + "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -252,44 +253,44 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz#769daf2982d60308bc83d8936eaecb7582463c87" - integrity sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A== - dependencies: - "@babel/helper-plugin-utils" "^7.24.6" - -"@babel/template@^7.24.6", "@babel/template@^7.3.3": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" - integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" - -"@babel/traverse@^7.24.6": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" - integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== - dependencies: - "@babel/code-frame" "^7.24.6" - "@babel/generator" "^7.24.6" - "@babel/helper-environment-visitor" "^7.24.6" - "@babel/helper-function-name" "^7.24.6" - "@babel/helper-hoist-variables" "^7.24.6" - "@babel/helper-split-export-declaration" "^7.24.6" - "@babel/parser" "^7.24.6" - "@babel/types" "^7.24.6" + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" + integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== + dependencies: + "@babel/code-frame" "^7.23.5" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" + +"@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== + dependencies: + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.6", "@babel/types@^7.3.3": - version "7.24.6" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" - integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== dependencies: - "@babel/helper-string-parser" "^7.24.6" - "@babel/helper-validator-identifier" "^7.24.6" + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1104,9 +1105,9 @@ domexception@^4.0.0: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.668: - version "1.4.783" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz#933887165b8b6025a81663d2d97cf4b85cde27b2" - integrity sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ== + version "1.4.779" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" + integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== emittery@^0.13.1: version "0.13.1" @@ -1241,11 +1242,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -form-data-encoder@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" - integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== - form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1255,11 +1251,6 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -formdata-node@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" - integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" From faea737e6f811789d6a7d189fabdb3ddd760f87a Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 13:04:35 +0200 Subject: [PATCH 13/21] Changes merge function return type --- output.pdf | Bin 31187 -> 31187 bytes output_helper.pdf | Bin 23089 -> 23089 bytes output_merged.pdf | Bin 47688 -> 47722 bytes src/Client.ts | 2 +- 4 files changed, 1 insertion(+), 1 deletion(-) diff --git a/output.pdf b/output.pdf index 551c24202c634b2a8a6d3ac05c0152f5cfd8f225..0cebb3628522049a617987ec2390d3533d82697a 100644 GIT binary patch delta 176 zcmcconep;x#tr)`oGsi8+#C%IO--GhEKMw39UTn~T-}^pjm#~L4NT0PUF;NW2q~G& oR9PHHND&d{*u~n}aTS*&7L`;KrKWKiT9_GIaH*=g`nz!f0G(Mai~s-t delta 176 zcmcconep;x#tr)`oDH1aEL{!F&0US$EKQ6}jVw&eT#e1l3|&l3om`B}E$kF*2q~G& oR9PHHND&d{*u~n}aTS*&7L`;KrKWKiT9_GIaH*=g`nz!f08ec!v;Y7A diff --git a/output_helper.pdf b/output_helper.pdf index 14db9f1b9b837380d0b60241467b0298d643e81f..e881dac6bec9fb4bac56bc9cb392f7ad365a3cbf 100644 GIT binary patch delta 176 zcmdnEg>mB+#tpKO&Sn|*WgxQa^>i%KerQq#B$O$>|-xKveL{oS|#bxbRC delta 176 zcmdnEg>mB+#tpKO&gO=O78WM1M$QI?#wO-2u9gO-CPpr%#+JsWmQE&a7Iq3Ygp^E9 nh%AmHq=*P}>|*WgxQa^>i%KerQq#B$O$>|-xKveL{oS|#8>T9_ diff --git a/output_merged.pdf b/output_merged.pdf index 09a6579778481552d37fb6beebb0ba57d4930b15..1dff900c6e3604faa11ef33bed721365aef07b16 100644 GIT binary patch delta 836 zcmX|<-Aj{U7{=X1wwj+zXeik%$858Y9mI$nfud;|jwnCYLCw|P+R9xId zMRgi=8aSi{V`mmoXAx0>=br4uKcL^uy*+SU*L~gB`*lCh^L{;W?;p57=E|(1W__Y0B_s+j!?vdbDCkcI z(0Pg07SUo0(pa1n50vo?R-Xj%$@;q;jUHZFFxN(RUuR5%xetBEWaI9^8xRa@LBlbB zs8zeh9@?ow#OH3_;K=Qs)R0X7>m?%7|Nel;W_^F(kAlbW$D6!-Owltt+9S)z!4B9J z)*Ow%PB^29oLA?#ya0Gd5SdPPB+@+orHQP#Z{ zT9mh(f$h;{6i6T=8OV3#$B4s)6(lPkv!=&T0q5_hdZ9cErVUwJ7!5aPZ`r|E|9=185Gx=7L_!cM>hY}Q)j*~qgbO6)Z4~QV;XDZA z+$%NZMrf!P2XarYfye_%QwYl{A1=aRZw_JG zct`*lr?wTJoSF$_1Vcp4tKC36AUeLOApFWyFK!^yCJRW^gY+2yF%ZQiY08IW$wD~t z>JXX{NP+whL6tyCmO~dvTEoSFjEhqtJdi{ogqZ}P45A@4dsHrjA!cm^WT-+ooP!DNAMAA?wDd_?rzm!GTpTz;l zkg9fuNOM9cAjt*9Ait%dwF&9gaBPbXJQ?h~N`~87?K~CWZ zMG6p=K_iL-$QDTk5+LjZ#GqiRlLrz&RFf*p2Bb_5cLB+4^JA-k6vz;eKV@rzCLb`6 ztd9h;FRTTH8H)jv4Uht&jLW<73hI3_JrW>%yK+!e@kK)I2C|ufSP6(h@dMJUTwnuo zfN>a*fFNxUQ=L}~NXkV43Dy80;SR)3c3h%B3W~TPW&wHWnv+d;Zf2C2{BmcQHZ!L* qS885LaY<2XVlIf4pOnSLRa}x-R8motn#N^fW?^B#rK;-c?*;(9j`&^x diff --git a/src/Client.ts b/src/Client.ts index 8aedb8c..fd79300 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -109,7 +109,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.MergeRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise { + ): Promise { const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", From 558cfb0923fcfea05edcbcacc8b4392d17edc1ea Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 14:42:43 +0200 Subject: [PATCH 14/21] Returns appropriate stream type depending on web or node environment --- output.pdf | Bin 31187 -> 18819 bytes outputSnippet.pdf | Bin 0 -> 17015 bytes output_helper.pdf | Bin 23089 -> 14201 bytes output_merged.pdf | Bin 47722 -> 26822 bytes src/Client.ts | 2 +- src/core/fetcher/Fetcher.ts | 20 ++++----- src/helper.ts | 11 ++++- tests/custom.test.ts | 82 ++++++++++++++++++++---------------- 8 files changed, 65 insertions(+), 50 deletions(-) create mode 100644 outputSnippet.pdf diff --git a/output.pdf b/output.pdf index 0cebb3628522049a617987ec2390d3533d82697a..d08774edef464fc731f8d7dca0fd197ab59f58dc 100644 GIT binary patch delta 15557 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%0ADqjCIEbx99hceC1GfLN zxMN#tH5g-5ct8UPU}rpK?R^gCr^L_QJ}LggN=SjUR1r_0dWk(1*t*} zYO(Oy$N)NsxhubfnRQbO9j8ZBgxN@|Qn?zStsjg}AziZx=~uoI%;Rp|Tv9iiM@j>E zJEPyYK?m-ERJQ!(YY(aH#2BEqx&QCzWYEYD0H6M9UKEy=V1TK?X=YhZstoGSG^gn`^W-g;3i9{0CrUKPU)BDV`Hh1m^U z{sY)T5?HKNElwtc_o)5!?Ku+%GwKekS}g`P4}2S)E4c-%0XD?T3@Pv)x5Cg19B(Fo zI_P*ampu|{nM+Mlbx(P|>cSZLx4R$kWRe0&dOz>O*T**P4po{jH|3KLgk15>DQ}w*C z=so6GhE~jXch!yr-LPc8hCZpOHU3YeDZ1;?3*sp zj{$(r4A0y06zd?L=eZnT1444w8a&fGMfdj4tM%O+OrNitPFF|J)x8B=@0_!3z$)@O z%7iWf^?`C@7rSj%TY_35%T*8nLDyV=PV94!b3`!Vs2%7tTiowtXh~cg*Pj^`#g+mD zv#qSpxJA2FLkSCr2CoFY{;aw}4cGTE+qp`2OUnw6sbEqIPKnrHO|5MyH$nI0rPdE| zaX?kc@F0Y*Si+rAJDQWgz`Cmx<|l*X7(ZPEl<0=e}p=9=l~QPQ#bzFM0zV--5+=d}SK4@xr(LmlYcMM+ViaztsD( z9B+U7NAJtJ^<{a}vZ>|6dS;Ms3tDKnr_@x=+S=c-De; zj4St;3hFVv^8;=4B%?b*̞sW_{0bUHZJKcM4iS!gC^YuUj7L$$#rux3tmiW|H= z4uOLI7)nTA9qpttdzix?PugTL2$F@~MWY)=)aPC6Go@m1&Mj8ALGQn#<6Uo*ARDmMRV8;9oa0^IPZ`Hug z2>m6{Wjg(P^Y<6nf2>Slfgc2WKF@zL9jsv<4Cwvr5m6$)Aio@0!$dOXWNF#;`M*|^ zZOYyM%aZ$lrt-iG4||&$o$p{PDp|*SI%n|;&r$2-w9Op*pD(={tD7D-$M$458JZR= ztW(pqn@iS?&F0Rr&DpX1@z|1LucGyW_4&nl{0U6m`uv=2xnSKKYr&ttv=%_;us#+C zEsakUwBxm)atJJQ?3CTUSfJOht*vFOnKBlZCiR*5`T2T-QExP+DHX{TLWS(^1SXi33*o!TTi+HP^#g1$9h$6jn%Bu*voqtnQ?X+yp zuC%#nF0EkBVw*I_uBVU7`%hzwn>KXvw>^8TqdNXc%OX8DG&haUIW##1FS37PT(ki1 zSRG#(vo004E=}Xln&K^~8JW5yx^U4kfNOCJ$wgeE^JsO>1Mb_u3}Ql6iy;gx3(&I6 zu}h3Gv|IjEr|Cc&+h3F}>ENmcKfkQON2VN>@;>%xeZjyM7=NJ9q z&i&l(ZMRM!uctSyIul=kXdAcUowiwc&263zFB>%CZ@U_^b$LU0@uqG71G-GSZua0G zRb{)0IdaJ0;gXprMW^x81&w^V0xI0=T~pKzOh$$lwZmN4nhtM&fwR`}cWAu~x-2ie zQc?Y<%gN5hE+=%_7+-?R|8zEOEX#=Zc-}mgm6MH^N$!u~EsgT|%-qbJ1LKYZ42H~n zynb{4*nFL7|5{mw&z;whm52M){;>`PAIG~%wK1$OU!5Q`KNoL(y!qg)93x)Cd-GVf zG5hn!<>euDZavQQxy5Ja8$LIdlWDm1vza-$S+`ynV+YrVMyYlVFJ&Frkz*B^cv&i5 z3wzUoGIR3|p1{k#WWmcXm-t7A9e)AXk^Hz}Yw6a`zY~n*@~xM3mAZkVylO*rnISVf zyP`ZlE5E9&EYna`U0!9(%{Ljcaw{r}b^rTABtb1pc1QYT<{7fGy%G|tTB^OgR6-fN h4la!)fWI89bF7}PW45m1Et~w*|I1b9nDW%B{}+za-3ESWwKG<= z09%6qU`J<=fB*te!5M6AVGH45`(v;Qq{A4j>IecU+u4Bu?0-<@3>~ecY)$Q+B|W!6 zCVvZ%1Az@qAbJ2eo>?IxLAEB(N+NJV-v88A7G!G%HV1J3AxzxD8Vqs-0L85h!5~qP zv7HGB;ZK7Uj4V~aHV8m@01E<8+``cb4B&={bOJkq3~dlx(`po%)>xF7Sa++dCQt|H z2c*=-e@c!F3~0cO0SBd&rne?hCF!L{=#-e0m=xhQCO=3qFe-&`ymr7kCnwAOh~#99 z2;;BG%Ug;58Kwx~_A!r=JK3$MNB7n?S?t{f4qB@~C|tdhH_f=BNEYLZ0erIXXLJ6X z{x8Fx&3HD9nVI8nW1n6Br?G!5&F>XK0LoaHI01B6pAFYT0E*Z-+kyei|8NpB)4vA( z=_TgpWri%{e{s`4T_Gkvg5b}D*X*MZv%G|Iq)}22g}yUp4{H~g-Zx!E3fFUGCN`KL zBm7EgtHO`*%T>+g7Ka6LT11XB9glY7m{vEJGV*jMCB!KFCb!LWpzF|jki&6gevjb0~+ z zy*sbnu`|8))w7oG9uLQN-p9M%Pp-fh{l+g~!ppIICGifAdPBm)OxH-DpbKA$Wx>|Y zrG>NoZ2!3Pqc7OW?kZ_=`8sa1X7+<2!@TYL$Cj#@$XnD#LE*@up|z}SKE*Z;9Dc%W zJ?etKpx4d0_X01V5jX>fU_Md{T@antFn@uzkiAD`9@xMVDBhL4z#`^_+NPxb{z*<6 zGy6VX6?b%7KXqGhE6kO!me>Mqh9=pF*d0fTC-F#&%z{zN-G_%tj(XdT`s+4DAp)s9?R5B%xi_zXC-1#5SUTD>RtzRUp zVseu2mgJ-dywrLJOZyIU?-h9mbV3IX*9+V=`1^MNI2a`Z_O*}D(XRpkh+7{S03=v` z7?rrHzS`q2@P!b$UM_TM*`w>iaCQ>?e1Y@=9`9vE2lO>uJ}F$6h-%2|qIcTS0wxGr z!u0*{zXB43I~B38pn61JNg{2()5#Vt#47gN&l2C$*h2!NH=$ezMP-wk6S~8C`JyMi znleP5d!Y|qW1uldf)c3Fd1}wof->s=p%dGl-xJB!AK1mY4qFNB4WmHzf|Oi3griGT zGlUl-M3mei1Z_S93$QK8Kj{Z1{S&r=W30^L824MAI=}q>gV;5sMGt~y1g`)NE*W^ zEN-C8x3WI$^~+6d2fYS?B_>;psJ@alxzot&cYFlEuH8+#)4rd$KR=w3Un@Yf2z@e; z`bj2=2_2v-%$*%-pJAWKB%Snj5d9+b^4mMI#D)Y-S!;j`h8?Cv$P|TJEa^ZDmb5g5 z4XIkRwxoun|CcKh7Oh}w34QsUILljfV&OsHd1?&YlA_>kfcaxYu0?*&?wVuO^!SwWmt%uEr&4le@QA&rz`o>l$ zS1VUd!si7`zsE7Bx7X{?sdN$=@@q!SkDrOxi+3A@87vz_jc+exQsq;NRdp$;E#Xt^ zDNHG3)EH6b&vF;LsKeJA5sJuF&vFqy3gs!a%^@yr(|?G*Ww?++mP59SV2hBBkioBD z|IDVxhRHs}Hf9xRHBp;Zd#w%9#;w(7!Fp33ZXyn|$zm+5qqiubQ>s_6T*6;wT!@(; zS29(6rkeO=Xfk4oVd`i$eSB&XaeQdPYStr1VcP5m)!xa}$wVd#6I%$=ob9+RlWC## zo>jwW<-GlPh~<`bysfGocoolVm_?pt#m=)2nxl$Cim8aB(FP%PA?cUgRq7?fH^y2W zYE8}d%1kN4CKlG@kzrC+%9=dWM$;oxJDeX3VfwWmN@F=EJF`0jJIFgwI0!i2IE^^z zI4AUS^xO$E30Gx>>iX)br97o8j2wEyI-Uln>N$i{aZ(+0_!sdO z@fW>u(y_nM8tK(^FEq~ERP$P0&9C(8oA`7++QH_F#EQgq&tY^^wooF=1Q9tC&PO^& zVo(LCgii@kh1S%wE;g>*G=3^a{Jvc|R9I4Fm2<%Sozr&5R`~0bt;+G`F~L$Z9~!D% z)T=0c1(-3WG1@UReIET&{Skf4mD!bp)@IL2fk%O6uUjv6PwuveHcan&Z-RTqJC%Ep z`;z-iAiEZ=?!ucFu-7n$@OZlU?Xs1n{Akd(uaDt9@lEjJiO&}umwsh!&kVhX)`8xI zz6ux@o(*6N^h9z-WI!Q;V@1FWb`Bm2sz9cS6w=4Qa*6Dd`J|rYQ-TZ>7E}tfmT(p5qdaeq>PxfkXE8 zP`e5a@DF z+XQg*+8(ZaX{NE8>Nh9&{sD*tI@;(+?^}C z4|Dp>P&NMTxgQE6-b)$U;maPah<;{k=G#7Os|K`Rf&?n;N zVjcbobD2tuN=N=jW-+%Muip6Ux-y$oa|QE6u&DES`YG?!@{e)1Th5x*$g~*&9WVJ) z-BY*8o0cT{=UzwQ1`m!gJ7VMG%8zX zOe6yp$tmdlL-OhF_m~#kY258x?c50C1Y@(l*4~pA-BZUcwS|%&-*0>dp485I_eP4^ z^&Z>U(Ycv_sb9P7=uLQhzLF52e;nt3!*+9MJlOZ6$WMVbGt%4C>-Yxa6a?lupnJ6H z;oP)KUwvpt9sM#qe7`0)tf8ce3Q?3;1RZndQ&8f{ywcb+R(z*7WSQZ+UIR+nh-yCvqKVA))V9x z9f>c0mbsdmHrbl)5bz+Hy!gm?>hl6YaQ^bYojRXSlg~#@7Isd~zmMpD5&zDfo{#9y zsS_kg0{@je$$?BP42A7n0XokIa}LN+m6Mz0_sQKB3}JHu{64TlPUp%XCp%}yKa(qQ zJBS2`TybUq^Y1(ga$W^0I@%elfWQD9AS8_g098S*;NOC*?HpC?4UIv+voesWp|dqu zSwa}XCM6;wZ0H0@t$rVnmGuN54+8LygzOJ3od8UbOv%v52>?`q^!=5P{GRjQvX5tl zAVZyvz`yfERYl?Q9Hf6;&97?W|4YR1tt; zwvfEc!qyA`$@h$Zcm75BGcgk}H*^HBLeex@LnrX>7Z!GQ1fYh63D_Kx^02To0a#g| zeg6O6A1CK?PWiw8n3XK;KP1Q-+Cc6u{#W1$IT=6iM=ow=1mN??=NASRNU9B# zf?Rf37z^2&L9Q<#`#=Q@vQd9-h#1;Sf-KC;A(=HRJA@B%uVCi%J2ap575=@O8Q9sm z01T{58~~Q*AYo==VgJ(}NSX~|0WkmHw->(&f12`FlKLEd|2;8>?1JA{9FYCb#lgh| zamn9T7Dv2R2JthWcUSI4c;jwNeu9CKH#9mJ}wYK#Prr z#;Qdt9lHjU=^a?n322wO44L#Ap-q%(ljt#+FMcjYEUZ@ zpkU13YWC2tc6_DDIjclsa)Au4g;G6+mK5`fu4#KH79x_=Fl>c8koLK|EnjI#t*Kgp zHqc|@V&cP)4&HqkcCvZjnO)xL{NSWvM0C-oYDDl-fLMSGVA-%1JdQZ@6P34}HeE+a z?9iM^^hJ|h!B4x#=qHfi%#ncx15Wg?_Y1DC*&om&$vl}_sln29C}~qxA`+TN3zDcJ zTX8SH3-Nfq_|R1|j_@S>W;&M7{B`IY;3YLppgWmAwyG$q)>?qOc>tFtv=2ah4yI;} zTp4yz>NS1fUB^oq05R>lM`fHY)-76nx1A)AFS3<{QlLMe$3$q4Nf#+1n`+{9hwe4$ zl1NTxBq6^;5K4BCVFP-GpHCoK>BnYOUL_fFdjH4qxJnFtD!TsdY!gkmhf3^YKUf12 zLQ2jU8Yyf`ecT(^RlX#yOb>6c4%6fZT*K1Ir0q*u) z##v~Y-mYja-Mrt#!?f5%MbH;41FZ~jhlELRJ4U$b3;JhFa6h5&hvz0k5mh2bMwj$s z$*B;jrX$(BM2xI}<0tYDUe9FqcnV+Gm&DW&)I-NOB&1U&pCzJC)LBYKz|#ZM@Tz%_<1>fGT8p$E$ADd zW$xEWlJVB_M6e)#hjLQtOy%8tiE_$$!g*f)19ItK2>{8bK@RJ8G*yp3qww5nVU@ux<(||MGn@>IY4}nY{WyxsjlWT_y0#2rW<`s>C~+ zr%0f9V7$$Je`P8-->~V!?dT5=k)EVamcuQ0x=vz>f!tr=%o;H{)>xra*QCQIaKf*> zlDL}zFFe*kORZO%XB;i$_uFH^T$q_%7D;chc2&e`uLHb*9mz$#))wS?Twm9BEgcye zla~U=TDK&&UWT6>Y$5+5a7=1Z5a?!pIg!%A&=f(`{>HJUo_R&<<*k(^bx^eWy*;O3@lg{ys~)P&;p5aXH8R-9_|1 z_e_PVgc|7u(LU@<+&(Is`-rt%ZoZUL%}zl|Ysv>UQk%CsDp2m3UZWfzU>kJ@3pOc4 zsT`KZ#?dc<=dfF+XD(gL=UJHQ6H@h2kDKh9hy0hU?hLj&?0)HF~sjBff%$TjIWu-T9b9K*e*M|J_-SJQgT0UR zTd_h5{__p4_;Hc~5^-d!Y-s6z%j#E_(KRoWMGhv;GS~FC5X+F3%Pf`L*1nrChx(g2 zTvZ!lov8lEkILS{Y(QBJg4x1>lmF0#l|jc5E7X!C*Qc7Qx>?+(s!*7r)S90Gqp@Dx zifeYte~qPp90)d`7w~I0DA!ouALzVL3Du|XU@eWRuk=!s!!Sg<>Y!ixTEg_2&i-w% z(omf}U3me?=9^zuTv8_07#Y6)4UVM^qrBs7I2Y61d0YqGKQWhx+GYIaCgF?LdbzxW za-`siggiVmTQRTZY0iHTU6UUZlCEo@B+FRZU-GO0JsENX=f@@A{*+xo&U00st<+dY zjgBm^!Y-c(u6j?fBhL2aUD3W*OU;%n5dQPHetp!pO$)pTt(gF-JJ0HutxW4&@*;#< z2t8A{+4X%6Kr7V;JcakD8AuLn@=dbNG`9~p87A#P*@~=<68>}@8qOAR6*-=dEsdZ& zN~f?-2(2{;zs?+;_>K=tWi`Z`regBvR8(T)FfgrWuN&s@K521?5#%Ddr>p0xONC?f z7dg+?(Rgd5zIWutrSIQ%Hsj@}&72zF(Wops_I%Sm`Sx4<8KoEX`~$Ysd(BBsaw!uK z@$k@yl4W|>QyqQ*is8AcS|fm3l+-;=T!Gz z%SB7Y_VKF;@>nx_ zQ+Jg9*!wBf$|`npQrpq#{!3GL;{xg^ZTkSZXqI-;X-UZgzM=S!?Ob1-_|UYXDjh12 z=JHPHKG>zc!uqo2634dtP^g*R`ye5=zD7;ew#c^aRM!@Rprr1CwuOhoC3j=h&Ec$Z ziA}%0HVfrYhIN0TcYpl64DZ{m3|6gpg`LG^+`+_`E{QG)Y~uHcH3?s9%hc|9%s$tc zS=$iE%WWi)B-qF!QoOyr42XPZRK_wpeJFdTLBXxFU=>ScWN1CVW8kMC#g!SC%1WBr z?VBFLAr?Zt*(mxQNkLIKP32<9luV{UVl*%b%{xy-NFgPiD<4B2{JBF@0zPcLAkYBl zLp3T{@m^z@<89)p%gSoSV08N6oY}`WYkZfdHw;HHIL<-$Z|q}t2V{#$pOB8OT<>i; z70~6_M`>;~8TWe{xl`Z%co-GZ5(-%N7Z11bkkJwd5@d)__{k6_pc#SvwAVAT-t?*@ z?$z4RRqeF}!LDrj`Zv8n?p!l2*5$>tqydGH@BUovv+QTav75%09)tH3k3I$;0&gx7 zxekE(6Q$FUbz(+3t6+VGVPNvQ7`2bAGpkGvde~d$&Ymy2+~mV_BTC*hP(IUSMZ8q( z+QZTl!tp%qOZ5QV`n{>iHc-L9xYUYFR?RY*?d=fX?)Tjc4Z*S2LgpY88Ak2ZS|e*& zAL0s>4_Q@JJO#>}vmCPmZ}9bwR84m0h+D=?B9Uk7(~~C###O#j+#J~2bPAnEvka>v zsA0-GPW504I8IU0rCjx2m%FQ|IDN#>URIy!l8`J(O&LQj>7Pl^O?xXHdm1mNewrwc ztjaGmaAr9|F?DP7j*@@uT}4a=RdkkGNk+k;g)%%3A5xImIvEqi3itj6qCGw&)$Mb zIpjip*q)nrg(o}O(U9L1hws=D-T(t zRJ-B2Lx+5-qM{f*jYHNI^&=0?s(Xo4;F$7}y>JQ{9gTKy_f8ESt@YBy9`^vYL7WY* zjjWQgb=>)t0#A!{*y1|%<{@4@-C1^c(Xf7fNw^vf4T!pCF?$`KjTN7*+O!}Dol>lu zoohroY-W8}AeU6fyuaS;WYAQel9B-AslkQ#IbInyqeyGU)nM_o4vK0qJ>8~8%R1S==K`$kAW@?H}! zQC)X0oz-LX(8wufXd8@E(8EoHUnfo!41YP3P;r?BGrK>zH09*9n@=T9uo08rzEwN$ z4yEsV{LVP8;|_OK?~kdoF1A)@caVaTskpdqZTIX*Ik${LRP01eoyzz0ywmCcCp-Ao z67EPR!B53rokUGf!}*9dt?+_%atr$M*G%i()^bG==8mPVCmF~xttBlHfd}ubehmh; zb@g_2c1?7hcBKbC3NJgEv|o8$qr$nVbvLaC#FQR5ugcBAM}50F4OBIg=?@w%z3)=i zESw&}_an`L;+87MgUOMR9Nz=q20-f=<;;Hkz>44#Es5|^i$kSmCe}#3dQurHjg5OS zo@^0QMdh$&35KS|Q@I{GXkgq~C{?IJHmLma!qkdgn#>%;Fk|UdQ)5(9QSN5ZTV zbrkGyg0c~#T&=HXc)!YSLfQKY&sq1}()5CdQAEzcGp6@c)1DGulVyA1V$wLi>I#T& zZLO>hUVF-{j7x7!Cnex}UUZTq(qXcyl|_E4i%lBl8$82lY$3*E^>A@O|Ha;?CswsT z`D2Ks;9=^knXJal@a04g?)Dhj?ds<(H#)k#D@&D4>qeg&&H~+P)jBT!JTuXw>t8SH zFQ?NdDWj%~SXs`Nqu$ELkP1w3f!2( zCBW93PVxa{qU@Xu7u>kuI^39yhHUDAlmT~J;x`}Z2jJZ(7s*q@VL2};9S_iK@iK$0 z`o3|fI2=wHH;fR*3G%vxdCu+|POvB-P4bjvxz_-P);W5=Kt5Os7d8e5heyBc?;%Nq z(_t=&)3Xd)BvVXn4M2B{z^OI!A0I82q_jV=;^<^z)3VyC24qq{yH(A~x9B$*e zdVQdItk+A@yPA3ycircdF&IkBzHFWUk#%*!FENxqI*MFQvILF1p5_&7=_NvWD~z_o zr<&eAolVsqOFsK=G~c2~OB$&$IqNs@a96)G32l^}Hsn@uPA@FQ{)oUuo`&&Aard53 zS!UJ1Ra11{%yE8GAAX;sYo&gMF|z@DuSb%aFKK}+sHxv}w%{emSCv;7OHuwwLCPhw zZT(X7&I?tRZzt>xqS;F;(AXw#gK(JFh^35|wbkJ}YX#jz8>iB@B2RE$F>OZP>20GZ z_^7=Puy+c%-a3R1*G3y*2{pDHYYnkBPM(R&Xb&-`{#@xg1YuO#>7(6K?}!X;cNm0Xr>!3^mOZN-5VsvzL~$JsYmz^aGOsGF zYi@I`M-xiBTrZveI)uw<=_pEIa>2$5Ee-7g^L)J15!N0!S~ppjK+F)9V16%fDhWTS^HdoXeSQS$G?HSFw{P-^9~;AXQ$?zno946TW+mKi;9?C? zqCn;rGKHM%$RYPEE2eqp&D5GQjtVYrpSD6Un9g!>w~Wz&K4Zz#VENZn)biu4gPC|* z4Ydv9&0$fSOfm3N`-i*HqcLyM4FS)ez9okVT?roP>#5LkeeAT|@xXZ&%X;-%t&mk= zSz1MZYmEU*Ep>v)Bg-~6B8uhmjR02KWk&M#PaljF>ZDQE3mbEh1XK;z;5F5Um6*O3 zN*eUgRF1tdX81+Wj{*gMa;CA!z{}u`IP_Ij(?v6%UV@$$F)>q3_1o$3QVZExEKSQx zcfR||KIeYHvo2Wg9zKVhvt@h#V3KWhz6A0DS5s#A9W@23K^5b(VkSdQ=i!*isiN+M zPJMlT2@Kw8vf&XbX3mIc@f6ScL<}iYtSa672$whT=B11g@>Y_kQf8NU1G~Slk}1e2 zdAdEq-{A%-1-|Q?yb&Y3o2=mzQyGPlN085~85xlJJm%IO$0LW+9H{LHi}Vd`fZ11x zy|08`BDQEJB53)v4c4(QsFBp2m`cMZ$o%v zsak-I{KRdnBZFjlCZt-_c9F`+#b3p2;$ShwXLxg5`g7rdQ@BUBHuy`;vWwQdY`MKk zQz)qkwZaEMIDP{M5xZA*)B*yYP8)GsWK%jTnyYo&BddfD_CD*vR<(vg z`nHz&%(I_k`ZHEa{>y{WZl%pvIq{9gX) zXahFfWaXa?1CVR0BFFlaZ#_C?YaKPx^w0;NF0rc6(tcc8x1lMgxmOG%@>Fzf$z-S) zYUdiozOJ4rqH$ND+sh;?c}G@~LHM0;oN$7PZzbc`8^EGToleor5jdbGG}k~#DW*dz ztfNg+#&aUxABhK!%LLZBWn15o#)l-V6j~Q9(|f`FFv(Mu9ySA!81>PWZ9{Rx3W|@S z+VUr{UmO7^?>$b}sz4Vn+^R_Fy2z_U)c5?!_ryZ_7Oi#FUz%7dTtmg}WTl29RYKm< zwwq|PuIA1(Bg~PvKdcllgzby5$MUQwO|+ek#42;s_~sRqNPksSGxl`Mp%rP#DA|i# zv~^o)7-TzPweeHGN4f62`gFkMt?#7vb0}3|mDax=59G|c>S$CXm0BJ+WODs$2Z%EC z{wYPVf{}9IUPk^F?@&3>50+i$i=pPAt$!ZY0Y(Semjm)&UWNekM73-clH5Rr7vRmp zeV31g;*b0ll{vu*2E>OQ4AC2p38+J-vsEA4UeK=XFdC9{CRfOP4~vEOQ4x!n!m71b z2{1Kx;uDsMhAAMcMNsa!ib+!!K`9Cw$G>L(5jCz&-GOM8G~0<>3lt{!!G9i??21)l zn;x1hbuosX;`fCIE&I)|`U8is3|h&oggJK7bP>8X^6CB(T$wNX{ytn8OzLeFT$#V+ zg%kRMBt9GMv@AtXeNNpFSuM2N0*BC<`H#A<66Wwr3(e3Yxy7>rxY?BU7VmLtgZkt= z_=Js1YcmnGKOHGGO~Ww=MUFC2!*w_OJPJ38JRzEY=a=0&{=Xp=40eV6*AF~Molx_4e7iH3{#hk~!Vb7lh@WIVg)VbZDR z1MV+!)O;yJDzKEH=4K;Pilg^M8Y{FJo8Jk7^3C2H8!WBZf8&G+o3MO2EKG}daVZSz z2pcW-(D}%K$gVg)|r<7wmlDwJ)Ub7uH$t`8B5*|~Q?NkXL zj;OIKt7C5FHFEeUkmww5oWHJ*YiatNV;|I#=n@QDoAw*#Du7|N0hIoCDQ`W(G>cA4=qiycO!fO&at* zv%2(y+*p5Qb*WW@mAQ(BnZC-&ZMh*x>ig%xYTt{a2Q?_KbTghrufPI()A?WJ*@n~k zSi9K6%GLPpyg{#nV4EbW+oi5`=Uci;0^p?Ke0yaa1FP~YTn>rU7e2>iUyhbv9Elvn z`yRLRkmY@S|3+vf@1d1kFMW`b{D{1;sI{Hd$3XJUyV2-L=E^D`lfti7TqhMY$re@{ zVk3%opIaZS;`5f5TZ#0f88sGGzt_EKM!7&iJ>R7s^57L$eAu|m9xZ=F2dP_Re+3!j zR=0W8R68^vJ_tQE!$waDlp?txmz@x;x0S8X^Od!N9Vi`xMM3uFSx&}%a3npS`CEzj zchAL^7FQ>}R$(?rB2lNecKdsozX%R$byv!Q${Y90$Vp=s7+?LWHLyRT-ZWdW(>l7p zFG&6n!3cjUFR+tcZiu7?i#o`?BNk5Hw1a?J?LILm`Q4qkGh4rQf!iMBv-<9?QGDXZ zWn~E$JZlYerGtt6X2|4xT_`Lr$i3L}K5FZy`q{`jx9% z1GZJXx{?C)YE*~ex{5qxeYQq-bBKpp^i+(~yL|KQtHqDrCAW8F`zK$EpI=t()L5xx zPgcRifqA&($3iXel&(X)h?h_9QJ+M=1OeyH!gYx+pghHK-?F8=u$?koDHsTZdc1Z%Oi;C&TU0!Y9G0x6I-pe8ActZtj^4Kf!7DB#sH;#gd^Si)CHuqz zOBXsYn`Qu`cA=$(yD;ikq+{vKX%ly4&bUTV+;Bs5W7-=a)GJtgM3`n@E9OlDQLD;) zj-?XXC0$~4M!H&!d}BSKpQK1+hr(Q;S>h)n(NRp1Xu{E=5kod2bH0_B>u`zK3$=my zgA`KYk@UTc{zRlCzCx+j$PMq~-%5Q_n&?svxVy2Nr1W}md+4DEk2s5pK+-7R(}}J)R-e! zgXZ->b)elyL@NMz$Fw4eukUsX#T^ofd7x%ri&(Q}?7LhV*TbCHyIfK)B1j1zUit1- zrmwQRi8_Nk?{ zj`F=qNq(VUOTP8z$^Fp65+=97M8!<+avsz1kaJ$e`Kl1^=pjBrnD5tR%@JDgHM5Hi zU{s(k@j)!aYqTz_6_(kU3jsg3Rpm3!C14Eg5?=fs)9`32tK=KvXGRw~EPx`?{+(p& zSbLa3Ukp#=6qvAJhf99M0rI8CTZT&Ge(oTan?p3D>aT``>)u}|RU5fKqA!t$oYS8W zUlO?>iwm!Osv@6jVlVu(lc9%M`3iSj1T;EDS9voJ>V86yzhrUZQ-k|Gv!Z+S~ zj;v2z<9b9Hh=&bI7n4~8P=&xWI(Ud#Hi%$9`Q|r7Mg|u zueTJV?2jzP;gjyco9BwvP*qbT^Ws@uEHEn!eKSYA;dHb{kzXZDOW|&iN9Zwe^{JM!0<05mT5$=JccD)h8Pzy6)Q|>r*xQ{U4$)(s{L6$~IPZY&aGyrj z4#)8*!p9k0m9<)&4wS{cukeC0h5ZyT0NJSYGG&YVCxV^s$3|Kv=}zgVE&yOmhk* zr30FAUYykr+rdK$@ih;~!36Sbl@GxvBs>lwM`QeH9%P9(__2d6PU~&!p82zOMv*R~yipLg?uj$)qX3oYmpM|&AU|7&;m&8KIRCvEnbMf*5 z{X(j)SZO(*ST(A+Z-#fqvia?MmF&}^ytvOZ=Qc?D^7IdISmITLxbgH{Dw@P-7Y<5x z-HwXWUYZ;TgQ1|81!!r72MqB9J&uIFL#IucL$CBD>^F`dJ*)}7K}eIUcdK48bepG}-SS6q`oc#Hv9O>2D!B(2B z6;W<^FBKhv1b@F@hV#_aR0%L?Id-qpoMb<%y8|tC1GgXGg3Ufy6;42kOFjq53`lbtMh)rxaR;YAirNsbVt^f7l3Z;|gWO1K2bsaLLSyb=|K$NNw_De*m{6egNKv0siEy>oCdimO*$pPp_ zLf9{PM#&TIV~_VVV(2+(=s9fI(ru{wgGv98iP6PgP0JOEZ4ygAmQFPJu!go*CG1qM z=NcGx3hKH3Xk@Jv4nhcvQ~1fp9(yNxBcg;OsAW=%`$i=!TtR6mxqtg5=H8{UG$Sne z6ztOWrBpsb4Zta-zsHkl0kS&f^RZw&1C$-pmnp=#b#vX>~-5#z;UN(~CwyFZ~Gd#t=t^ zS#l9Yg>E`Sd!Qcog3a+k0+Wb=6#yks2h9Z40U6C5lt1mWNa5!RULost8)T7^OuWm= z#+zt*cViXe4z(@e_MP3t&%iX!)*ew|5o+1?vEXZrZ>?~GK}CR3_D#+^C{!sT4P^_8 zx)|T-XiM*1ay1iS^HZ257;1H5`)0HeR0&)CtVRDqis(S*w@$CL1iSi2BJuin&d%7R zBsd$$%sL*p5aywl=R=gCmg_=dT@}EzZ;fVNZFkW)b&TX~eblKE6hRtiVB7B$JD#@@ zjBszK&!iZFx&(U0X=7AAQ6f&*-t{4u9QoKLeIuxNAlL1RI;kfSpAgxWgnXC&VM*f1 z?gQ^(yJKzuaNseFckHpns>X}Os)Bzm+A{N9-~DpQQFBvZP-b(bPRFD9ECuD9huM|U zot|yfLvXp&arc$dwYV)5w%*B#b^C1HavQpe;g@yOyGq_3fh6ZZFB=?Ale(*>#CZ>U z0OW>O;|kxS`3}WHr|Rc5!j;vfOjr-zesfO@;8E;hvUrqwg&n zt$gCHDn%%5rtRR-DJ%s;mN2HRp{c_u>zUG7HjCn)Ed$dg=96qiDVk+sbXK`_O4_aJ zC2Cfb3^RT>=7%PGA!FT7bJXe#kF+ujr^*<$vTjn{KJ8+m2^*gh1cPR#Ze@z^o%k-| zQpQ<)LJL+ZY+72}{Gu0iBwKxoq4qWC9>;(V@)!?2boaDo*rz)C*=4 zRV^Q>ny0FGoc2V_?DzzCAC9N1PX5}c^0Kmdk?#)ElP$sL<82F|mh|)K+N?QU(%0Ky zqA(#S32Jc-VQ$>+%g?(ZG4R&q$<#npLGDH?QbV;_DRtFGxf^g*b33az1n z=N90gWBmYgGNmrrzvZlxQy73d@tJ{KXDb3bncS_A4 zD_YSLYz~%czZCT6q9=rpn3`dS&slm{{WQZ9Bqt|0^=Bp~M(JC?F%5UMgdu?ukH$wQ zi5E@jt~8JMDPgcVAJvDM5NN32d?qR)Qdai$ZRnF5eftLw?V!$0c!G1+7d9J(Jz|3T zy64FI*IldZ_u1<;uQ@1fuVK+5LkJ$RR*q2tgq;N5w5ha$ir!z+ z&s_h4o&Jf{WO)Yq{x7WN9~GJkf7hBqV9S5hnzBBZX8w)bbdKso@KZz+yE?1JR+qBFnn5qLjT1vzs-F{t1`2*{q2@#NbA2N zSlL-Q|Eje8t8DilC~-|W*?*bOC+G?Rsarwt>qa0m3tN7&lje3ZfQ1P^nFhNYlbpQ> z$lOBG-4UeXF0X3rZe`4ELMAAHz~{>2YGZE$DG3I++F08<@woDn8A8f|K|GN5GZ{z* zVRAGv^Ov4<&4!7=P=`Xl!Q#gmgeSS%2$oV$5S|=V)UH7BIB8hd_}H!H~J1IrxD8>O$ay zw876c)_+b3L0t!}qM>zqtRD z`49K~H4S7`%nD1huWelo}BHHNhQuYzcn=bDEcg0)iBDut91( zxBw7@HaCC`g8kM2=s?;4W=NUEzqY)wk(mjGk)e^90mdtqj})wNXqYcx2w(X97o%Mv z_4No$05${&p8U@Tz`@SW$__9E{7rjCkv~5G+rMdSERcU<|4w6NgW%Htra>U;e~gFh z<>!6<@4QUR+>qLXzi8YLB>P{Ju`&IJU?w)M{}jOa&&hsEVq)U_FG{g;L6-HeiT>bY z<#=A|f2Tq0`Hwl+*f{@T(C-1v?942X!uEd~3!$<7LmtFf*1s)hf)t7WJ2M9p+dnM- z-O0?s%=!-j2w+D;2%6vV`3Dky|60NCz=V7X{2dCvf79U4`g$o*fDRvrkhqWtI~Sx7 zL|mMWMVw7Yh?7Hz6;da_!o|tV!Nwr~_m;R*Sb14zvQMEmDDA&?8C{XFXbORc#ey8NN_{{f)hJd6MU literal 0 HcmV?d00001 diff --git a/output_helper.pdf b/output_helper.pdf index e881dac6bec9fb4bac56bc9cb392f7ad365a3cbf..275d0396dd2317aadb0786bb84473d83e62241f2 100644 GIT binary patch delta 11262 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 literal 47722 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 VYg;Q=NP1>=R*qd{WO-x7{|37fY%Tx* diff --git a/src/Client.ts b/src/Client.ts index fd79300..3e6133d 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -109,7 +109,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.MergeRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise { + ): Promise { const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index 64d75e6..8e17594 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -148,25 +148,21 @@ async function fetcherImpl(args: Fetcher.Args): Promise{ +):Promise{ const files: AssetOrPathBuffer[] = document.files ?? []; files.push({ path: "/index.html", content: document.html }); diff --git a/tests/custom.test.ts b/tests/custom.test.ts index ac48ea8..4f6e732 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -1,7 +1,7 @@ import stream from "stream"; import * as core from "../src/core"; import { FileForgeClient } from "../src"; -import { generate_from_html } from "../src/Helper"; +import { generate_from_html, ResponseStream, ResponseURL } from "../src/Helper"; import * as error from "../src/errors/index"; import fs from "fs"; import { writeFile } from "fs/promises"; @@ -52,18 +52,12 @@ describe("test", () => { { options: {} } - ); - - const chunks: any[] = []; - - for await (let chunk of pdf) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - const bufferString = buffer.toString() - - await writeFile("output.pdf", bufferString); + ) as ResponseStream; + + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('output.pdf'); + pdf.file.pipe(writeStream); + }, 10_000_000); @@ -88,11 +82,11 @@ describe("test", () => { host: true, } } - ); + ) as ResponseURL; expect(pdf.url).not.toBeNull(); - }, 10_000_000); + }, 10_000_000); it("should fail because of invalid api key", async () => { const htmlBlob = new Blob([HTML], { @@ -150,18 +144,11 @@ describe("test", () => { test:false } - ); - const chunks: any[] = []; - - for await (let chunk of pdf) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - const bufferString = buffer.toString() - - - await writeFile("output_helper.pdf", bufferString); + ) as ResponseStream; + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('output_helper.pdf'); + pdf.file.pipe(writeStream); + }, 10_000_000); it("should generate a PDF url from helper", async () => { @@ -186,7 +173,7 @@ describe("test", () => { host:true, } - ); + ) as ResponseURL; expect(pdf.url).not.toBeNull(); }, 10_000_000); @@ -215,16 +202,39 @@ describe("test", () => { } ); - const chunks: any[] = []; + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('output_merged.pdf'); + pdf.file.pipe(writeStream); + +}, 10_000_000); + +it("should generate from html snippet", async () => { + try { + + const client = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + const documentInput = { + html: HTML, + fileName: 'example', + test: false, + host: false, + expiresAt: new Date(Date.now() + 48 * 60 * 60 * 1000), + files: [ + { path: '/style.css', content: CSS }, + ], + }; - for await (let chunk of pdf) { - chunks.push(chunk); - } - - const buffer: Buffer = Buffer.concat(chunks); - const bufferString = buffer.toString() + const response = await generate_from_html(client, documentInput) as ResponseStream; + + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('outputSnippet.pdf'); + response.file.pipe(writeStream); + console.log('PDF generated successfully.'); + } catch (error) { + console.error('Error generating PDF:', error); + } - await writeFile("output_merged.pdf", bufferString); }, 10_000_000); }); From 211894151c5b721fdc58c726fea0ad36a18ed933 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 14:45:53 +0200 Subject: [PATCH 15/21] Changes method response types --- output.pdf | Bin 18819 -> 18819 bytes outputSnippet.pdf | Bin 17015 -> 17015 bytes output_helper.pdf | Bin 14201 -> 14201 bytes output_merged.pdf | Bin 26822 -> 26822 bytes src/Client.ts | 6 +++--- tests/custom.test.ts | 2 +- 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/output.pdf b/output.pdf index d08774edef464fc731f8d7dca0fd197ab59f58dc..6fd140823e5040ca23430a00768f8cb078fa4cd1 100644 GIT binary patch delta 176 zcmZpk%-B4caYMd`v$3O-k&C&jfvcITv5AR^xs$V@iJOs|fs3PyiK~;Txt)RyAtjSH nc@)PHQbdF~cCmJLT*W1cMI{wQscBq>7G}m4T&k+B{%%|Vmpv>~ delta 176 zcmZpk%-B4caYMd`v#GhEi=ly|k%57MlZml`xudCzfwP;dxtXDvsj0cSk)47KAtjSH nc@)PHQbdF~cCmJLT*W1cMI{wQscBq>7G}m4T&k+B{%%|V+%zg@ diff --git a/outputSnippet.pdf b/outputSnippet.pdf index f374fa9c27dc9b60ddefbd47d5bbc841bc6e02b7..39705e47150b638d8f7077b6efda4831f457cf94 100644 GIT binary patch delta 153 zcmey~!uY*~aYM4Bvx|j^i=(Ntp}C`}rHQ4ZqlJ@+laZr~v!St>iHV_$iJgKCAtjTS MITlmJoERr*02{g{U;qFB delta 153 zcmey~!uY*~aYM4BvzeotqqC`nk-52>n~9N|iKC;rnWM3>ftitoxuKbfnVo_SAtjTS MITlmJoERr*0RCSk-~a#s diff --git a/output_helper.pdf b/output_helper.pdf index 275d0396dd2317aadb0786bb84473d83e62241f2..59abe36862c0b1f4cbe28cc1fb2248f9ce9ffd53 100644 GIT binary patch delta 151 zcmeyF_cL!ps+qH!rGc5Ni?gAbiJ7yBqk)@+k)wf;v#Gg@tDBRXo27-Ff(;=hlUJA( KQ^lM(b7=r0VJ71M delta 151 zcmeyF_cL!ps+qI1lZmCXg@KugtBIM3iL0Z9n}wU9k%^I;p{a$Nv#Xh%f(;=hlUJA( KQ^lM(b7=ti940>i diff --git a/output_merged.pdf b/output_merged.pdf index e54fd68d3fef1b8a87431e73099ae8af8f236945..ad4387c7eab939f5a0534bc67c130721c2f01332 100644 GIT binary patch delta 958 zcmV;v13~=8(E-NM0kBVGe=!O^J_>Vma%Ev{3V59DS8Z?GI1K)-U%`(Z4z*rvS@KX6 z$VizmFf263JlFoF{P3*w`b1t2AHSD3jW>0p>_)RFMuJdpgZ+Xq3#%8>^^oqyKHuz1dNYe>q&?hdOyP7 zFUxA<+jstc9yYF?EzZYbUEVAizp9H+R`m+_jVpTLVTSR%F>2awa_1U|72|K+o>5ve z{(Dt+cZ5o%1;jC7^8dSxF<+ER4CSLjty4&nQ-jogL%oyyWhZ|~n@PrLB{Anpri@=> z$*PJ`y;^$^i0964exrwp+rIYI>aN4us!=aryH(qRkxmi=}RbvJ)CCe7=~ zgxWxfDX|ClVCoRrmcCnh1CFE9Qra!iIp7QWgc#8JkU;Xe`8+qD?|S{W`6!zHX}ga) z${uPzPbe1@a%jI_s1*2@;wzR delta 958 zcmV;v13~=8(E-NM0kBVGe=rI@J_>Vma%Ev{3V59DS8Z?GMhyObzk(lA4AH&mbW#xn z@JrMNZ3@Howqij)T&0^M)Yci2jCB8gq+~DlhO|Yn7AO!4CyGbj9Z5YTWeEZl7zG;A z1Pqv10Mgii1u0Vj8AzSrO(L}hq(X|*QiF^I@-ax0A%l-LMZE-Me`b+SK`DXC8PNn3 z9+Soj8PGx_)kIUcxL|zw*VY4{xs`7je^Zq$+|oV*=A=gC1LKpht2ZiAuD8Dm^`jo*Ta-FeM=v`Mb;tN(_p$5QWwY}nV0`RaPeR1d`w{+r zSymh0zVr9~@@C2SRb7O#s#m~oT+s^;GmPg|Fw=IEJJ*0#jK6hzMj6BS z?^W5|5h|4tpfzFg|GTWUUzAG><)cDl5{TndgVcUQvy=U0Cx6H^lZ?|!V$PLJ7{A7n zRTZOpwe}zo&z;}=Mh_FWeeJ8&U5B;RpkBUqtF{Ltoi-ka&j`SCV^TQReL)q34P_1< z9_H9*v!r&a0{ZT<>09Anh zI=^OggR{G?+qN$`zrVkaLhZ{?tlh^pD#C{MmEq*&oZ7Bb6dUYPI*Fq!&Mf9@WV1Ad zSjk9cIPnx8)DQIm<8Ng|6?Fe9RA$VR?AG7eZtA<(segP~xdEVLR)XQTnL07AM;AR&j;5a%hrQH&p1HPb7hykq+2_&DJ&vWznuGfE?kD}?Hw)?1~ z?4kDagcm{~hxYr0N`ZeVzEUbk^zDiMH|6yXsFS#7Y5_EpBWNp8%sUQ%Fbo4wyAb}+ zvT+M$xC{#tBUfbRQUxo^lVe!{kaNHS2#P=?KMPR`qrKi$Tn|sRXhbVI(TjoG; @@ -40,7 +40,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.GenerateRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise{ + ): Promise{ const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", @@ -109,7 +109,7 @@ export class FileForgeClient { files: File[] | fs.ReadStream[], request: FileForge.MergeRequest, requestOptions?: FileForgeClient.RequestOptions - ): Promise { + ): Promise { const _request = core.newFormData(); const options = await serializers.GenerateRequestOptions.jsonOrThrow(request.options, { unrecognizedObjectKeys: "passthrough", diff --git a/tests/custom.test.ts b/tests/custom.test.ts index 4f6e732..1d97fa7 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -200,7 +200,7 @@ describe("test", () => { { options: {}, } - ); + ) as ResponseStream; // Write the PDF stream to a file const writeStream = fs.createWriteStream('output_merged.pdf'); From 06e167ba21f204311af2075a6eeff2364cb7ae8a Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 14:48:33 +0200 Subject: [PATCH 16/21] Adds content of helper.ts to module exports --- src/helper.ts | 4 ++-- src/index.ts | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/helper.ts b/src/helper.ts index 6fc1613..db6759d 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -14,12 +14,12 @@ export interface Asset { path: string; content: string; } - export interface PathBuffer { +export interface PathBuffer { path: string; content: Buffer; } -type AssetOrPathBuffer = Asset | PathBuffer; +export type AssetOrPathBuffer = Asset | PathBuffer; export interface DocumentInput { diff --git a/src/index.ts b/src/index.ts index 8013178..fee57f2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,3 +2,4 @@ export * as FileForge from "./api"; export { FileForgeClient } from "./Client"; export { FileForgeEnvironment } from "./environments"; export { FileForgeError, FileForgeTimeoutError } from "./errors"; +export { generate_from_html, Asset, PathBuffer, AssetOrPathBuffer, DocumentInput, ResponseURL, ResponseStream, ResponseObject } from "./helper"; \ No newline at end of file From 8a158e5347579c0f9eb6191c26d3dd98c3bb43f8 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Mon, 27 May 2024 14:49:09 +0200 Subject: [PATCH 17/21] Fixes typo in import path --- tests/custom.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/custom.test.ts b/tests/custom.test.ts index 1d97fa7..b494257 100644 --- a/tests/custom.test.ts +++ b/tests/custom.test.ts @@ -1,7 +1,7 @@ import stream from "stream"; import * as core from "../src/core"; import { FileForgeClient } from "../src"; -import { generate_from_html, ResponseStream, ResponseURL } from "../src/Helper"; +import { generate_from_html, ResponseStream, ResponseURL } from "../src/helper"; import * as error from "../src/errors/index"; import fs from "fs"; import { writeFile } from "fs/promises"; From 39f3fa50d145bc5069f39c498a710002f5a8ed86 Mon Sep 17 00:00:00 2001 From: fern-api <115122769+fern-api[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 18:17:17 +0000 Subject: [PATCH 18/21] Release 0.0.13 --- src/Client.ts | 274 +++----------- src/api/client/requests/ConvertDocxRequest.ts | 38 -- src/api/client/requests/GenerateRequest.ts | 4 +- src/api/client/requests/MergeRequest.ts | 4 +- src/api/client/requests/index.ts | 1 - src/api/errors/BadGatewayError.ts | 6 +- src/api/errors/BadRequestError.ts | 6 +- src/api/errors/InternalServerError.ts | 2 +- src/api/errors/UnauthorizedError.ts | 6 +- src/api/types/ConvertDocxRequestOptions.ts | 33 -- src/api/types/index.ts | 1 - src/core/fetcher/Fetcher.ts | 102 +++++- src/environments.ts | 4 +- .../{FileForgeError.ts => FileforgeError.ts} | 4 +- ...meoutError.ts => FileforgeTimeoutError.ts} | 4 +- src/errors/index.ts | 4 +- src/index.ts | 8 +- .../types/ConvertDocxRequestOptions.ts | 20 - src/serialization/types/ErrorSchema.ts | 4 +- .../types/GenerateRequestOptions.ts | 4 +- .../types/MergeRequestOptions.ts | 4 +- src/serialization/types/index.ts | 1 - yarn.lock | 343 +++++++++--------- 23 files changed, 356 insertions(+), 521 deletions(-) delete mode 100644 src/api/client/requests/ConvertDocxRequest.ts delete mode 100644 src/api/types/ConvertDocxRequestOptions.ts rename src/errors/{FileForgeError.ts => FileforgeError.ts} (90%) rename src/errors/{FileForgeTimeoutError.ts => FileforgeTimeoutError.ts} (53%) delete mode 100644 src/serialization/types/ConvertDocxRequestOptions.ts diff --git a/src/Client.ts b/src/Client.ts index 8356092..e1a136f 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -4,204 +4,53 @@ import * as environments from "./environments"; import * as core from "./core"; -import urlJoin from "url-join"; -import * as errors from "./errors/index"; import * as fs from "fs"; -import * as FileForge from "./api/index"; +import * as Fileforge from "./api/index"; import * as stream from "stream"; -import { default as FormData } from "form-data"; +import urlJoin from "url-join"; +import * as errors from "./errors/index"; import * as serializers from "./serialization/index"; -export declare namespace FileForgeClient { +export declare namespace FileforgeClient { interface Options { - environment?: core.Supplier; - username?: core.Supplier; - password?: core.Supplier; + environment?: core.Supplier; + username: core.Supplier; + password: core.Supplier; apiKey: core.Supplier; } interface RequestOptions { timeoutInSeconds?: number; maxRetries?: number; + abortSignal?: AbortSignal; } } -export class FileForgeClient { - constructor(protected readonly _options: FileForgeClient.Options) {} - - /** - * @param {FileForgeClient.RequestOptions} requestOptions - Request-specific configuration. - * - * @example - * await fileForge.retrieveServerStatus() - */ - public async retrieveServerStatus(requestOptions?: FileForgeClient.RequestOptions): Promise { - const _response = await core.fetcher({ - url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, - "status/" - ), - method: "GET", - headers: { - Authorization: await this._getAuthorizationHeader(), - "X-API-Key": await core.Supplier.get(this._options.apiKey), - "X-Fern-Language": "JavaScript", - "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", - "X-Fern-Runtime": core.RUNTIME.type, - "X-Fern-Runtime-Version": core.RUNTIME.version, - }, - contentType: "application/json", - timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, - maxRetries: requestOptions?.maxRetries, - }); - if (_response.ok) { - return; - } - - if (_response.error.reason === "status-code") { - throw new errors.FileForgeError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - }); - } - - switch (_response.error.reason) { - case "non-json": - throw new errors.FileForgeError({ - statusCode: _response.error.statusCode, - body: _response.error.rawBody, - }); - case "timeout": - throw new errors.FileForgeTimeoutError(); - case "unknown": - throw new errors.FileForgeError({ - message: _response.error.errorMessage, - }); - } - } - - /** - * Converts a Microsoft Word document (.DOCX or .DOC) file to a PDF document. - * - * This service uses a LibreOffice headless server to perform the conversion, and may not support all features of the original document. - * - * **Known discrepancies** - * - * - Some fonts may not be available in the server, and may be substituted by a closest match. - * - Some complex formatting may not be preserved, such as background graphics. - * - * **Variables** - * - * Variable replacement is supported with various methods: - * - * - Templated litterals: `{{name}}` - * - Word variables, as listed in the document metadata: `{DOCVARIABLE "name"}` - * - * To enable variable replacement as Word variables for your account, please contact the FileForge support. - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} - */ - public async convertDocx( - file: File | fs.ReadStream, - request: FileForge.ConvertDocxRequest, - requestOptions?: FileForgeClient.RequestOptions - ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); - _request.append("file", file); - const _response = await core.fetcher({ - url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, - "pdf/docx/" - ), - method: "POST", - headers: { - Authorization: await this._getAuthorizationHeader(), - "X-API-Key": await core.Supplier.get(this._options.apiKey), - "X-Fern-Language": "JavaScript", - "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", - "X-Fern-Runtime": core.RUNTIME.type, - "X-Fern-Runtime-Version": core.RUNTIME.version, - }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, - responseType: "streaming", - timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, - maxRetries: requestOptions?.maxRetries, - }); - if (_response.ok) { - return _response.body; - } - - if (_response.error.reason === "status-code") { - switch (_response.error.statusCode) { - case 400: - throw new FileForge.BadRequestError( - await serializers.ErrorSchema.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 401: - throw new FileForge.UnauthorizedError( - await serializers.ErrorSchema.parseOrThrow(_response.error.body, { - unrecognizedObjectKeys: "passthrough", - allowUnrecognizedUnionMembers: true, - allowUnrecognizedEnumValues: true, - breadcrumbsPrefix: ["response"], - }) - ); - case 500: - throw new FileForge.InternalServerError(_response.error.body); - default: - throw new errors.FileForgeError({ - statusCode: _response.error.statusCode, - body: _response.error.body, - }); - } - } - - switch (_response.error.reason) { - case "non-json": - throw new errors.FileForgeError({ - statusCode: _response.error.statusCode, - body: _response.error.rawBody, - }); - case "timeout": - throw new errors.FileForgeTimeoutError(); - case "unknown": - throw new errors.FileForgeError({ - message: _response.error.errorMessage, - }); - } - } +export class FileforgeClient { + constructor(protected readonly _options: FileforgeClient.Options) {} /** * Generates a PDF document from web assets. - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} - * @throws {@link FileForge.BadGatewayError} + * @throws {@link Fileforge.BadRequestError} + * @throws {@link Fileforge.UnauthorizedError} + * @throws {@link Fileforge.InternalServerError} + * @throws {@link Fileforge.BadGatewayError} */ public async generate( files: File[] | fs.ReadStream[], - request: FileForge.GenerateRequest, - requestOptions?: FileForgeClient.RequestOptions + request: Fileforge.GenerateRequest, + requestOptions?: FileforgeClient.RequestOptions ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); + const _request = new core.FormDataWrapper(); + await _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - _request.append("files", _file); + await _request.append("files", _file); } + const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/generate/" ), method: "POST", @@ -209,16 +58,17 @@ export class FileForgeClient { Authorization: await this._getAuthorizationHeader(), "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", - "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Name": "@fileforge/client", + "X-Fern-SDK-Version": "0.0.13", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _maybeEncodedRequest.getHeaders()), }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, + body: await _maybeEncodedRequest.getBody(), responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -227,7 +77,7 @@ export class FileForgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new FileForge.BadRequestError( + throw new Fileforge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -236,7 +86,7 @@ export class FileForgeClient { }) ); case 401: - throw new FileForge.UnauthorizedError( + throw new Fileforge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -245,9 +95,9 @@ export class FileForgeClient { }) ); case 500: - throw new FileForge.InternalServerError(_response.error.body); + throw new Fileforge.InternalServerError(_response.error.body); case 502: - throw new FileForge.BadGatewayError( + throw new Fileforge.BadGatewayError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -256,7 +106,7 @@ export class FileForgeClient { }) ); default: - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -265,38 +115,39 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } } /** - * @throws {@link FileForge.BadRequestError} - * @throws {@link FileForge.UnauthorizedError} - * @throws {@link FileForge.InternalServerError} + * @throws {@link Fileforge.BadRequestError} + * @throws {@link Fileforge.UnauthorizedError} + * @throws {@link Fileforge.InternalServerError} */ public async merge( files: File[] | fs.ReadStream[], - request: FileForge.MergeRequest, - requestOptions?: FileForgeClient.RequestOptions + request: Fileforge.MergeRequest, + requestOptions?: FileforgeClient.RequestOptions ): Promise { - const _request = new FormData(); - _request.append("options", JSON.stringify(request.options)); + const _request = new core.FormDataWrapper(); + await _request.append("options", JSON.stringify(request.options)); for (const _file of files) { - _request.append("files", _file); + await _request.append("files", _file); } + const _maybeEncodedRequest = _request.getRequest(); const _response = await core.fetcher({ url: urlJoin( - (await core.Supplier.get(this._options.environment)) ?? environments.FileForgeEnvironment.Default, + (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/merge/" ), method: "POST", @@ -304,16 +155,17 @@ export class FileForgeClient { Authorization: await this._getAuthorizationHeader(), "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", - "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.10", + "X-Fern-SDK-Name": "@fileforge/client", + "X-Fern-SDK-Version": "0.0.13", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, + ...(await _maybeEncodedRequest.getHeaders()), }, - contentType: "multipart/form-data; boundary=" + _request.getBoundary(), - body: _request, + body: await _maybeEncodedRequest.getBody(), responseType: "streaming", timeoutMs: requestOptions?.timeoutInSeconds != null ? requestOptions.timeoutInSeconds * 1000 : 60000, maxRetries: requestOptions?.maxRetries, + abortSignal: requestOptions?.abortSignal, }); if (_response.ok) { return _response.body; @@ -322,7 +174,7 @@ export class FileForgeClient { if (_response.error.reason === "status-code") { switch (_response.error.statusCode) { case 400: - throw new FileForge.BadRequestError( + throw new Fileforge.BadRequestError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -331,7 +183,7 @@ export class FileForgeClient { }) ); case 401: - throw new FileForge.UnauthorizedError( + throw new Fileforge.UnauthorizedError( await serializers.ErrorSchema.parseOrThrow(_response.error.body, { unrecognizedObjectKeys: "passthrough", allowUnrecognizedUnionMembers: true, @@ -340,9 +192,9 @@ export class FileForgeClient { }) ); case 500: - throw new FileForge.InternalServerError(_response.error.body); + throw new Fileforge.InternalServerError(_response.error.body); default: - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.body, }); @@ -351,29 +203,23 @@ export class FileForgeClient { switch (_response.error.reason) { case "non-json": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ statusCode: _response.error.statusCode, body: _response.error.rawBody, }); case "timeout": - throw new errors.FileForgeTimeoutError(); + throw new errors.FileforgeTimeoutError(); case "unknown": - throw new errors.FileForgeError({ + throw new errors.FileforgeError({ message: _response.error.errorMessage, }); } } protected async _getAuthorizationHeader(): Promise { - const username = await core.Supplier.get(this._options.username); - const password = await core.Supplier.get(this._options.password); - if (username != null && password != null) { - return core.BasicAuth.toAuthorizationHeader({ - username: username, - password: password, - }); - } - - return undefined; + return core.BasicAuth.toAuthorizationHeader({ + username: await core.Supplier.get(this._options.username), + password: await core.Supplier.get(this._options.password), + }); } } diff --git a/src/api/client/requests/ConvertDocxRequest.ts b/src/api/client/requests/ConvertDocxRequest.ts deleted file mode 100644 index 80b2b21..0000000 --- a/src/api/client/requests/ConvertDocxRequest.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * This file was auto-generated by Fern from our API Definition. - */ - -import * as FileForge from "../../index"; - -/** - * @example - * {} - */ -export interface ConvertDocxRequest { - /** - * Conversion options. This field is required even if empty. - * - * **Options** - * - * * `templateLiterals`: Map of template literals to replace in the document. Template literals should be enclosed in double curly braces, e.g. `{{name}}`. Variables name can contain alphanumeric characters and hyphens. All variables are case-sensitive. The value for each variable should be a string. If a value of undefined is passed, the variable will not be removed from the document. If you need to remove a variable, pass an empty string as the value. - * - * **NB** variables should **not** have surrounding spaces, e.g. `{{ name }}`. - * - * **Example** - * - * In the Word document: `{{name}} {{nickname}}. was born on {{date}}.` - * - * ```json - * { - * "templateLiterals": { - * "name": "John Doe", - * "date": "2021-12-31", - * "nickname": "" - * } - * } - * ``` - * - * There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options. - */ - options: FileForge.ConvertDocxRequestOptions; -} diff --git a/src/api/client/requests/GenerateRequest.ts b/src/api/client/requests/GenerateRequest.ts index 1f78730..baa60ce 100644 --- a/src/api/client/requests/GenerateRequest.ts +++ b/src/api/client/requests/GenerateRequest.ts @@ -2,7 +2,7 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as FileForge from "../../index"; +import * as Fileforge from "../../index"; /** * @example @@ -10,5 +10,5 @@ import * as FileForge from "../../index"; */ export interface GenerateRequest { /** Conversion options. This field is required even if empty. */ - options: FileForge.GenerateRequestOptions; + options: Fileforge.GenerateRequestOptions; } diff --git a/src/api/client/requests/MergeRequest.ts b/src/api/client/requests/MergeRequest.ts index 726c713..e784b4c 100644 --- a/src/api/client/requests/MergeRequest.ts +++ b/src/api/client/requests/MergeRequest.ts @@ -2,12 +2,12 @@ * This file was auto-generated by Fern from our API Definition. */ -import * as FileForge from "../../index"; +import * as Fileforge from "../../index"; /** * @example * {} */ export interface MergeRequest { - options: FileForge.MergeRequestOptions; + options: Fileforge.MergeRequestOptions; } diff --git a/src/api/client/requests/index.ts b/src/api/client/requests/index.ts index b9248a7..7440dc9 100644 --- a/src/api/client/requests/index.ts +++ b/src/api/client/requests/index.ts @@ -1,3 +1,2 @@ -export { type ConvertDocxRequest } from "./ConvertDocxRequest"; export { type GenerateRequest } from "./GenerateRequest"; export { type MergeRequest } from "./MergeRequest"; diff --git a/src/api/errors/BadGatewayError.ts b/src/api/errors/BadGatewayError.ts index 953d2b5..be53669 100644 --- a/src/api/errors/BadGatewayError.ts +++ b/src/api/errors/BadGatewayError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class BadGatewayError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class BadGatewayError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "BadGatewayError", statusCode: 502, diff --git a/src/api/errors/BadRequestError.ts b/src/api/errors/BadRequestError.ts index 7fb7954..fe45848 100644 --- a/src/api/errors/BadRequestError.ts +++ b/src/api/errors/BadRequestError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class BadRequestError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class BadRequestError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "BadRequestError", statusCode: 400, diff --git a/src/api/errors/InternalServerError.ts b/src/api/errors/InternalServerError.ts index 3a3bea5..ecd25b4 100644 --- a/src/api/errors/InternalServerError.ts +++ b/src/api/errors/InternalServerError.ts @@ -4,7 +4,7 @@ import * as errors from "../../errors/index"; -export class InternalServerError extends errors.FileForgeError { +export class InternalServerError extends errors.FileforgeError { constructor(body?: unknown) { super({ message: "InternalServerError", diff --git a/src/api/errors/UnauthorizedError.ts b/src/api/errors/UnauthorizedError.ts index 10e74b0..3c21e62 100644 --- a/src/api/errors/UnauthorizedError.ts +++ b/src/api/errors/UnauthorizedError.ts @@ -3,10 +3,10 @@ */ import * as errors from "../../errors/index"; -import * as FileForge from "../index"; +import * as Fileforge from "../index"; -export class UnauthorizedError extends errors.FileForgeError { - constructor(body: FileForge.ErrorSchema) { +export class UnauthorizedError extends errors.FileforgeError { + constructor(body: Fileforge.ErrorSchema) { super({ message: "UnauthorizedError", statusCode: 401, diff --git a/src/api/types/ConvertDocxRequestOptions.ts b/src/api/types/ConvertDocxRequestOptions.ts deleted file mode 100644 index 0d60026..0000000 --- a/src/api/types/ConvertDocxRequestOptions.ts +++ /dev/null @@ -1,33 +0,0 @@ -/** - * This file was auto-generated by Fern from our API Definition. - */ - -/** - * Conversion options. This field is required even if empty. - * - * **Options** - * - * - `templateLiterals`: Map of template literals to replace in the document. Template literals should be enclosed in double curly braces, e.g. `{{name}}`. Variables name can contain alphanumeric characters and hyphens. All variables are case-sensitive. The value for each variable should be a string. If a value of undefined is passed, the variable will not be removed from the document. If you need to remove a variable, pass an empty string as the value. - * - * **NB** variables should **not** have surrounding spaces, e.g. `{{ name }}`. - * - * **Example** - * - * In the Word document: `{{name}} {{nickname}}. was born on {{date}}.` - * - * ```json - * { - * "templateLiterals": { - * "name": "John Doe", - * "date": "2021-12-31", - * "nickname": "" - * } - * } - * ``` - * - * There will not be an error if a variable is not found in the document, nor if variables found in the document are not in the options. - */ -export interface ConvertDocxRequestOptions { - /** Map of template literals to replace in the document. */ - templateLiterals?: Record; -} diff --git a/src/api/types/index.ts b/src/api/types/index.ts index 3a5aee8..76c8f0a 100644 --- a/src/api/types/index.ts +++ b/src/api/types/index.ts @@ -1,4 +1,3 @@ -export * from "./ConvertDocxRequestOptions"; export * from "./GenerateRequestOptions"; export * from "./MergeRequestOptions"; export * from "./ErrorSchema"; diff --git a/src/core/fetcher/Fetcher.ts b/src/core/fetcher/Fetcher.ts index ee40897..265126e 100644 --- a/src/core/fetcher/Fetcher.ts +++ b/src/core/fetcher/Fetcher.ts @@ -1,4 +1,3 @@ -import { default as FormData } from "form-data"; import qs from "qs"; import { RUNTIME } from "../runtime"; import { APIResponse } from "./APIResponse"; @@ -16,6 +15,7 @@ export declare namespace Fetcher { timeoutMs?: number; maxRetries?: number; withCredentials?: boolean; + abortSignal?: AbortSignal; responseType?: "json" | "blob" | "streaming" | "text"; } @@ -67,13 +67,28 @@ async function fetcherImpl(args: Fetcher.Args): Promise { + if (body instanceof Uint8Array) { + return body; + } else { + return JSON.stringify(body); + } + }; + + if (RUNTIME.type === "node") { + if (args.body instanceof (await import("formdata-node")).FormData) { + // @ts-expect-error + body = args.body; + } else { + body = maybeStringifyBody(args.body); + } } else { - body = JSON.stringify(args.body); + if (args.body instanceof (await import("form-data")).default) { + // @ts-expect-error + body = args.body; + } else { + body = maybeStringifyBody(args.body); + } } // In Node.js environments, the SDK always uses`node-fetch`. @@ -89,21 +104,33 @@ async function fetcherImpl(args: Fetcher.Args): Promise => { - const controller = new AbortController(); - let abortId = undefined; + const signals: AbortSignal[] = []; + + // Add timeout signal + let timeoutAbortId: NodeJS.Timeout | undefined = undefined; if (args.timeoutMs != null) { - abortId = setTimeout(() => controller.abort(), args.timeoutMs); + const { signal, abortId } = getTimeoutSignal(args.timeoutMs); + timeoutAbortId = abortId; + signals.push(signal); } + + // Add arbitrary signal + if (args.abortSignal != null) { + signals.push(args.abortSignal); + } + const response = await fetchFn(url, { method: args.method, headers, body, - signal: controller.signal, + signal: anySignal(signals), credentials: args.withCredentials ? "include" : undefined, }); - if (abortId != null) { - clearTimeout(abortId); + + if (timeoutAbortId != null) { + clearTimeout(timeoutAbortId); } + return response; }; @@ -167,7 +194,15 @@ async function fetcherImpl(args: Fetcher.Args): Promise(args: Fetcher.Args): Promise controller.abort(TIMEOUT), timeoutMs); + return { signal: controller.signal, abortId }; +} + +/** + * Returns an abort signal that is getting aborted when + * at least one of the specified abort signals is aborted. + * + * Requires at least node.js 18. + */ +function anySignal(...args: AbortSignal[] | [AbortSignal[]]): AbortSignal { + // Allowing signals to be passed either as array + // of signals or as multiple arguments. + const signals = (args.length === 1 && Array.isArray(args[0]) ? args[0] : args); + + const controller = new AbortController(); + + for (const signal of signals) { + if (signal.aborted) { + // Exiting early if one of the signals + // is already aborted. + controller.abort((signal as any)?.reason); + break; + } + + // Listening for signals and removing the listeners + // when at least one symbol is aborted. + signal.addEventListener("abort", () => controller.abort((signal as any)?.reason), { + signal: controller.signal, + }); + } + + return controller.signal; +} + export const fetcher: FetchFunction = fetcherImpl; diff --git a/src/environments.ts b/src/environments.ts index bf96f92..5dd3fe7 100644 --- a/src/environments.ts +++ b/src/environments.ts @@ -2,8 +2,8 @@ * This file was auto-generated by Fern from our API Definition. */ -export const FileForgeEnvironment = { +export const FileforgeEnvironment = { Default: "https://api.fileforge.com", } as const; -export type FileForgeEnvironment = typeof FileForgeEnvironment.Default; +export type FileforgeEnvironment = typeof FileforgeEnvironment.Default; diff --git a/src/errors/FileForgeError.ts b/src/errors/FileforgeError.ts similarity index 90% rename from src/errors/FileForgeError.ts rename to src/errors/FileforgeError.ts index 26a2145..8b2d5eb 100644 --- a/src/errors/FileForgeError.ts +++ b/src/errors/FileforgeError.ts @@ -2,13 +2,13 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileForgeError extends Error { +export class FileforgeError extends Error { readonly statusCode?: number; readonly body?: unknown; constructor({ message, statusCode, body }: { message?: string; statusCode?: number; body?: unknown }) { super(buildMessage({ message, statusCode, body })); - Object.setPrototypeOf(this, FileForgeError.prototype); + Object.setPrototypeOf(this, FileforgeError.prototype); if (statusCode != null) { this.statusCode = statusCode; } diff --git a/src/errors/FileForgeTimeoutError.ts b/src/errors/FileforgeTimeoutError.ts similarity index 53% rename from src/errors/FileForgeTimeoutError.ts rename to src/errors/FileforgeTimeoutError.ts index 382adca..de95282 100644 --- a/src/errors/FileForgeTimeoutError.ts +++ b/src/errors/FileforgeTimeoutError.ts @@ -2,9 +2,9 @@ * This file was auto-generated by Fern from our API Definition. */ -export class FileForgeTimeoutError extends Error { +export class FileforgeTimeoutError extends Error { constructor() { super("Timeout"); - Object.setPrototypeOf(this, FileForgeTimeoutError.prototype); + Object.setPrototypeOf(this, FileforgeTimeoutError.prototype); } } diff --git a/src/errors/index.ts b/src/errors/index.ts index cf98fef..af778a7 100644 --- a/src/errors/index.ts +++ b/src/errors/index.ts @@ -1,2 +1,2 @@ -export { FileForgeError } from "./FileForgeError"; -export { FileForgeTimeoutError } from "./FileForgeTimeoutError"; +export { FileforgeError } from "./FileforgeError"; +export { FileforgeTimeoutError } from "./FileforgeTimeoutError"; diff --git a/src/index.ts b/src/index.ts index 8013178..c93e5d4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -export * as FileForge from "./api"; -export { FileForgeClient } from "./Client"; -export { FileForgeEnvironment } from "./environments"; -export { FileForgeError, FileForgeTimeoutError } from "./errors"; +export * as Fileforge from "./api"; +export { FileforgeClient } from "./Client"; +export { FileforgeEnvironment } from "./environments"; +export { FileforgeError, FileforgeTimeoutError } from "./errors"; diff --git a/src/serialization/types/ConvertDocxRequestOptions.ts b/src/serialization/types/ConvertDocxRequestOptions.ts deleted file mode 100644 index 3ea284a..0000000 --- a/src/serialization/types/ConvertDocxRequestOptions.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * This file was auto-generated by Fern from our API Definition. - */ - -import * as serializers from "../index"; -import * as FileForge from "../../api/index"; -import * as core from "../../core"; - -export const ConvertDocxRequestOptions: core.serialization.ObjectSchema< - serializers.ConvertDocxRequestOptions.Raw, - FileForge.ConvertDocxRequestOptions -> = core.serialization.object({ - templateLiterals: core.serialization.record(core.serialization.string(), core.serialization.string()).optional(), -}); - -export declare namespace ConvertDocxRequestOptions { - interface Raw { - templateLiterals?: Record | null; - } -} diff --git a/src/serialization/types/ErrorSchema.ts b/src/serialization/types/ErrorSchema.ts index 627132b..08bea9b 100644 --- a/src/serialization/types/ErrorSchema.ts +++ b/src/serialization/types/ErrorSchema.ts @@ -3,10 +3,10 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; -export const ErrorSchema: core.serialization.ObjectSchema = +export const ErrorSchema: core.serialization.ObjectSchema = core.serialization.object({ statusCode: core.serialization.number(), code: core.serialization.string(), diff --git a/src/serialization/types/GenerateRequestOptions.ts b/src/serialization/types/GenerateRequestOptions.ts index 0392fb3..b00102e 100644 --- a/src/serialization/types/GenerateRequestOptions.ts +++ b/src/serialization/types/GenerateRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; export const GenerateRequestOptions: core.serialization.ObjectSchema< serializers.GenerateRequestOptions.Raw, - FileForge.GenerateRequestOptions + Fileforge.GenerateRequestOptions > = core.serialization.object({ test: core.serialization.boolean().optional(), host: core.serialization.boolean().optional(), diff --git a/src/serialization/types/MergeRequestOptions.ts b/src/serialization/types/MergeRequestOptions.ts index b7c01dd..d7ed099 100644 --- a/src/serialization/types/MergeRequestOptions.ts +++ b/src/serialization/types/MergeRequestOptions.ts @@ -3,12 +3,12 @@ */ import * as serializers from "../index"; -import * as FileForge from "../../api/index"; +import * as Fileforge from "../../api/index"; import * as core from "../../core"; export const MergeRequestOptions: core.serialization.ObjectSchema< serializers.MergeRequestOptions.Raw, - FileForge.MergeRequestOptions + Fileforge.MergeRequestOptions > = core.serialization.object({}); export declare namespace MergeRequestOptions { diff --git a/src/serialization/types/index.ts b/src/serialization/types/index.ts index 3a5aee8..76c8f0a 100644 --- a/src/serialization/types/index.ts +++ b/src/serialization/types/index.ts @@ -1,4 +1,3 @@ -export * from "./ConvertDocxRequestOptions"; export * from "./GenerateRequestOptions"; export * from "./MergeRequestOptions"; export * from "./ErrorSchema"; diff --git a/yarn.lock b/yarn.lock index 5f46d65..47b111e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,156 +10,155 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.6.tgz#ab88da19344445c3d8889af2216606d3329f3ef2" + integrity sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA== dependencies: - "@babel/highlight" "^7.24.2" + "@babel/highlight" "^7.24.6" picocolors "^1.0.0" -"@babel/compat-data@^7.23.5": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" - integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== +"@babel/compat-data@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.6.tgz#b3600217688cabb26e25f8e467019e66d71b7ae2" + integrity sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.6.tgz#8650e0e4b03589ebe886c4e4a60398db0a7ec787" + integrity sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-compilation-targets" "^7.24.6" + "@babel/helper-module-transforms" "^7.24.6" + "@babel/helpers" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/template" "^7.24.6" + "@babel/traverse" "^7.24.6" + "@babel/types" "^7.24.6" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" - integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== +"@babel/generator@^7.24.6", "@babel/generator@^7.7.2": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.6.tgz#dfac82a228582a9d30c959fe50ad28951d4737a7" + integrity sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg== dependencies: - "@babel/types" "^7.24.5" + "@babel/types" "^7.24.6" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" -"@babel/helper-compilation-targets@^7.23.6": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz#4d79069b16cbcf1461289eccfbbd81501ae39991" - integrity sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ== +"@babel/helper-compilation-targets@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz#4a51d681f7680043d38e212715e2a7b1ad29cb51" + integrity sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg== dependencies: - "@babel/compat-data" "^7.23.5" - "@babel/helper-validator-option" "^7.23.5" + "@babel/compat-data" "^7.24.6" + "@babel/helper-validator-option" "^7.24.6" browserslist "^4.22.2" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-module-imports@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" - integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== - dependencies: - "@babel/types" "^7.24.0" - -"@babel/helper-module-transforms@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" - integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== - dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-simple-access" "^7.24.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/helper-validator-identifier" "^7.24.5" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" - integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== - -"@babel/helper-simple-access@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" - integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-split-export-declaration@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" - integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== - dependencies: - "@babel/types" "^7.24.5" - -"@babel/helper-string-parser@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" - integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== - -"@babel/helper-validator-option@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" - integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== - -"@babel/helpers@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" - integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - -"@babel/highlight@^7.24.2": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" - integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== - dependencies: - "@babel/helper-validator-identifier" "^7.24.5" +"@babel/helper-environment-visitor@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.6.tgz#ac7ad5517821641550f6698dd5468f8cef78620d" + integrity sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g== + +"@babel/helper-function-name@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.6.tgz#cebdd063386fdb95d511d84b117e51fc68fec0c8" + integrity sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/helper-hoist-variables@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.6.tgz#8a7ece8c26756826b6ffcdd0e3cf65de275af7f9" + integrity sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-module-imports@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz#65e54ffceed6a268dc4ce11f0433b82cfff57852" + integrity sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-module-transforms@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.6.tgz#22346ed9df44ce84dee850d7433c5b73fab1fe4e" + integrity sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA== + dependencies: + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-module-imports" "^7.24.6" + "@babel/helper-simple-access" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.6", "@babel/helper-plugin-utils@^7.8.0": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.6.tgz#fa02a32410a15a6e8f8185bcbf608f10528d2a24" + integrity sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg== + +"@babel/helper-simple-access@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.6.tgz#1d6e04d468bba4fc963b4906f6dac6286cfedff1" + integrity sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-split-export-declaration@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.6.tgz#e830068f7ba8861c53b7421c284da30ae656d7a3" + integrity sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw== + dependencies: + "@babel/types" "^7.24.6" + +"@babel/helper-string-parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz#28583c28b15f2a3339cfafafeaad42f9a0e828df" + integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q== + +"@babel/helper-validator-identifier@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz#08bb6612b11bdec78f3feed3db196da682454a5e" + integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw== + +"@babel/helper-validator-option@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz#59d8e81c40b7d9109ab7e74457393442177f460a" + integrity sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ== + +"@babel/helpers@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.6.tgz#cd124245299e494bd4e00edda0e4ea3545c2c176" + integrity sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA== + dependencies: + "@babel/template" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/highlight@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.6.tgz#6d610c1ebd2c6e061cade0153bf69b0590b7b3df" + integrity sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ== + dependencies: + "@babel/helper-validator-identifier" "^7.24.6" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" - integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.6.tgz#5e030f440c3c6c78d195528c3b688b101a365328" + integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -197,11 +196,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" - integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.6.tgz#bcca2964150437f88f65e3679e3d68762287b9c8" + integrity sha512-lWfvAIFNWMlCsU0DRUun2GpFwZdGTukLaHJqRh1JRb80NdAP5Sb1HDHB5X9P9OtgZHQl089UzQkpYlBq2VTPRw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.24.6" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" @@ -253,44 +252,44 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" - integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/traverse@^7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" - integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== - dependencies: - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/types" "^7.24.5" + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.6.tgz#769daf2982d60308bc83d8936eaecb7582463c87" + integrity sha512-TzCtxGgVTEJWWwcYwQhCIQ6WaKlo80/B+Onsk4RRCcYqpYGFcG9etPW94VToGte5AAcxRrhjPUFvUS3Y2qKi4A== + dependencies: + "@babel/helper-plugin-utils" "^7.24.6" + +"@babel/template@^7.24.6", "@babel/template@^7.3.3": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.6.tgz#048c347b2787a6072b24c723664c8d02b67a44f9" + integrity sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" + +"@babel/traverse@^7.24.6": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.6.tgz#0941ec50cdeaeacad0911eb67ae227a4f8424edc" + integrity sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw== + dependencies: + "@babel/code-frame" "^7.24.6" + "@babel/generator" "^7.24.6" + "@babel/helper-environment-visitor" "^7.24.6" + "@babel/helper-function-name" "^7.24.6" + "@babel/helper-hoist-variables" "^7.24.6" + "@babel/helper-split-export-declaration" "^7.24.6" + "@babel/parser" "^7.24.6" + "@babel/types" "^7.24.6" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" - integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.6", "@babel/types@^7.3.3": + version "7.24.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.6.tgz#ba4e1f59870c10dc2fa95a274ac4feec23b21912" + integrity sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ== dependencies: - "@babel/helper-string-parser" "^7.24.1" - "@babel/helper-validator-identifier" "^7.24.5" + "@babel/helper-string-parser" "^7.24.6" + "@babel/helper-validator-identifier" "^7.24.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -907,9 +906,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001587: - version "1.0.30001621" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz#4adcb443c8b9c8303e04498318f987616b8fea2e" - integrity sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA== + version "1.0.30001623" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001623.tgz#e982099dcb229bb6ab35f5aebe2f8d79ccf6e8a8" + integrity sha512-X/XhAVKlpIxWPpgRTnlgZssJrF0m6YtRA0QDWgsBNT12uZM6LPRydR7ip405Y3t1LamD8cP2TZFEDZFBf5ApcA== chalk@^2.4.2: version "2.4.2" @@ -1105,9 +1104,9 @@ domexception@^4.0.0: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.668: - version "1.4.779" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.779.tgz#bb6f08b93092a564421adcadcc4b92c5055c7a77" - integrity sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g== + version "1.4.783" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz#933887165b8b6025a81663d2d97cf4b85cde27b2" + integrity sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ== emittery@^0.13.1: version "0.13.1" @@ -1242,6 +1241,11 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +form-data-encoder@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-4.0.2.tgz#dd286fd5f9049e8ded1d44ce427f5e29185c7c12" + integrity sha512-KQVhvhK8ZkWzxKxOr56CPulAhH3dobtuQ4+hNQ+HekH/Wp5gSOafqRAeTphQUJAIk0GBvHZgJ2ZGRWd5kphMuw== + form-data@4.0.0, form-data@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" @@ -1251,6 +1255,11 @@ form-data@4.0.0, form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +formdata-node@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/formdata-node/-/formdata-node-6.0.3.tgz#48f8e2206ae2befded82af621ef015f08168dc6d" + integrity sha512-8e1++BCiTzUno9v5IZ2J6bv4RU+3UKDmqWUQD0MIMVCd9AdhWkO1gw57oo1mNEX1dMq2EGI+FbWz4B92pscSQg== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" From eba1e0236ec37b5d6c5368b314eda917ca259edb Mon Sep 17 00:00:00 2001 From: armandobelardo Date: Mon, 27 May 2024 16:49:11 -0400 Subject: [PATCH 19/21] return typing to what it was --- src/Client.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Client.ts b/src/Client.ts index e963c01..0b9ac88 100644 --- a/src/Client.ts +++ b/src/Client.ts @@ -53,7 +53,7 @@ export class FileforgeClient { await _request.append("files", _file); } - const _response = await core.fetcher({ + const _response = await core.fetcher({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/generate/" @@ -154,7 +154,7 @@ export class FileforgeClient { await _request.append("files", _file); } - const _response = await core.fetcher({ + const _response = await core.fetcher({ url: urlJoin( (await core.Supplier.get(this._options.environment)) ?? environments.FileforgeEnvironment.Default, "pdf/merge/" @@ -164,8 +164,8 @@ export class FileforgeClient { Authorization: await core.Supplier.get(this._options.apiKey), "X-API-Key": await core.Supplier.get(this._options.apiKey), "X-Fern-Language": "JavaScript", - "X-Fern-SDK-Name": "fileforge", - "X-Fern-SDK-Version": "0.0.12", + "X-Fern-SDK-Name": "@fileforge/client", + "X-Fern-SDK-Version": "0.0.13", "X-Fern-Runtime": core.RUNTIME.type, "X-Fern-Runtime-Version": core.RUNTIME.version, ...(await _request.getHeaders()), From c22e3b9f5bc5ca3b8566b106d9b15b865e1012e4 Mon Sep 17 00:00:00 2001 From: fern-bot Date: Mon, 27 May 2024 13:10:45 +0200 Subject: [PATCH 20/21] Revert "Release 0.0.10" This reverts commit 1a23cbf827b9fa6c3b2355775126df61e82e16a5. --- .github/workflows/ci.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c348128..6b6d768 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,8 @@ jobs: - name: Set up node uses: actions/setup-node@v3 + with: + node-version: 20 - name: Compile run: yarn && yarn build @@ -25,9 +27,13 @@ jobs: - name: Set up node uses: actions/setup-node@v3 + with: + node-version: 20 - - name: Compile - run: yarn && yarn test + - name: Run tests + run: yarn && yarn test + env: + FILEFORGE_API_KEY: ${{ secrets.FILEFORGE_API_KEY }} publish: needs: [ compile, test ] @@ -40,6 +46,8 @@ jobs: - name: Set up node uses: actions/setup-node@v3 + with: + node-version: 20 - name: Install dependencies run: yarn install From 5437996ea94a11425be13c2b127addccb0ef2e25 Mon Sep 17 00:00:00 2001 From: Pierre Dorge Date: Tue, 28 May 2024 13:28:18 +0200 Subject: [PATCH 21/21] Adds a few test cases --- output.pdf | Bin 18819 -> 0 bytes outputSnippet.pdf | Bin 17015 -> 0 bytes output_helper.pdf | Bin 14201 -> 0 bytes output_merged.pdf | Bin 26822 -> 0 bytes tests/custom.test.ts | 85 ++++++++++++++++++++++++++++++++++++++++++- tests/logo-black.svg | 4 ++ 6 files changed, 88 insertions(+), 1 deletion(-) delete mode 100644 output.pdf delete mode 100644 outputSnippet.pdf delete mode 100644 output_helper.pdf delete mode 100644 output_merged.pdf create mode 100644 tests/logo-black.svg diff --git a/output.pdf b/output.pdf deleted file mode 100644 index 6fd140823e5040ca23430a00768f8cb078fa4cd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18819 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 z 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 diff --git a/output_helper.pdf b/output_helper.pdf deleted file mode 100644 index 59abe36862c0b1f4cbe28cc1fb2248f9ce9ffd53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14201 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 diff --git a/output_merged.pdf b/output_merged.pdf deleted file mode 100644 index ad4387c7eab939f5a0534bc67c130721c2f01332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26822 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 oNG}2G `; +const HTML_W_IMAGE = ` + + + My First Web Page + + + +

Hello World!

+ FileForge logo + + +`; + +const SVG_LOGO = ` + + + +` + const CSS =`body{ background-color: lightblue; } @@ -60,6 +79,69 @@ describe("test", () => { }, 10_000_000); + it("should generate a PDF buffer with image", async () => { + + const htmlBlob = new Blob([HTML_W_IMAGE], { + type: "text/html", + }); + const cssBlob = new Blob([CSS], { + type: "text/css", + }); + const svgBlob = new Blob([SVG_LOGO], { + type: "image/svg+xml", + }); + + const htmlFile = new File([htmlBlob], "index.html", { type: "text/html" }); + const cssFile = new File([cssBlob], "style.css", { type: "text/css" }); + const svgFile = new File([svgBlob], "logo-black.svg", { type: "image/svg+xml" }); + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const pdf = await ff.generate( + [htmlFile, cssFile, svgFile], + { + options: {} + } + ) as ResponseStream; + + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('output_svg.pdf'); + pdf.file.pipe(writeStream); + + }, 10_000_000); + + it("should generate a PDF buffer with image using helper", async () => { + + const ff = new FileForgeClient({ + apiKey: FILEFORGE_API_KEY + }); + + const documentInput = { + html: HTML_W_IMAGE, + fileName: 'example', + test: false, + host: false, + files: [ + { path: 'style.css', content: CSS }, + { path: 'logo-black.svg', content: SVG_LOGO } + ], + }; + + const pdf = await generate_from_html( + ff, + documentInput + ) as ResponseStream; + + // Write the PDF stream to a file + const writeStream = fs.createWriteStream('output_svg_helper.pdf'); + pdf.file.pipe(writeStream); + + }, 10_000_000); + + + it("should generate a PDF link", async () => { const htmlBlob = new Blob([HTML], { @@ -80,13 +162,14 @@ describe("test", () => { { options: { host: true, + expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1000), } } ) as ResponseURL; expect(pdf.url).not.toBeNull(); - }, 10_000_000); + }, 10_000_000); it("should fail because of invalid api key", async () => { const htmlBlob = new Blob([HTML], { diff --git a/tests/logo-black.svg b/tests/logo-black.svg new file mode 100644 index 0000000..9d1a663 --- /dev/null +++ b/tests/logo-black.svg @@ -0,0 +1,4 @@ + + + +