diff --git a/.eslintignore b/.eslintignore index 4e83076..bf97c72 100644 --- a/.eslintignore +++ b/.eslintignore @@ -8,4 +8,5 @@ release.config.js .husky/* scripts/* gatewaySdk/ -src/testMutationsAndQuery.ts +src/testing.ts +src/common/types.ts \ No newline at end of file diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index b7685e3..c01d5ef 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -26,10 +26,12 @@ jobs: run: pnpm install -D @semantic-release/changelog @semantic-release/git - name: Lint run: pnpm lint - - name: Build Graphql queries - run: pnpm generate:sdk + - name: Build REST API + run: pnpm generate - name: Format code run: pnpm format + - name: Test project + run: pnpm test - name: Build run: pnpm build - name: Release diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 543eecf..c911073 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -18,8 +18,8 @@ jobs: run: pnpm install - name: Run Eslint run: pnpm lint - - name: Build Graphql queries - run: pnpm generate:sdk + - name: Build REST API + run: pnpm generate - name: Format code run: pnpm format - name: Test project diff --git a/.gitignore b/.gitignore index aa755d4..f10241d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ dist/ *.tgz coverage/ .DS_STORE -gatewaySdk/ \ No newline at end of file +gatewaySdk/ +src/testing.ts \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg old mode 100755 new mode 100644 index 80416c7..c06ea44 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -npx --no-install commitlint --edit "$1" +npx --no-install commitlint --edit "$1" \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit old mode 100755 new mode 100644 index c3c8c90..e9a388c --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,6 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -pnpm lint-staged - - +pnpm lint-staged \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 34e1d15..86371da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,39 +1,177 @@ -# [2.0.0](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v1.1.1...v2.0.0) (2024-03-14) +# [2.1.0-develop.14](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.13...v2.1.0-develop.14) (2024-09-12) + + +### Bug Fixes + +* added enum support to script ([9fd1483](https://github.com/Gateway-DAO/gateway-js-sdk/commit/9fd148362224fdc0b31996dbf0cbea0bb9756890)) +* added types.ts to eslintignore ([acdc241](https://github.com/Gateway-DAO/gateway-js-sdk/commit/acdc241bc09193c9a49af758525f5060010d304d)) +* removed config from account class ([8c53d2f](https://github.com/Gateway-DAO/gateway-js-sdk/commit/8c53d2f0514ad47daec072f56598b567331a6916)) +* removed model prefix from types ([f18c913](https://github.com/Gateway-DAO/gateway-js-sdk/commit/f18c913145bc95edad70048cb1af7b58a54e24b5)) +* updated types as per swagger ([3f9a8bd](https://github.com/Gateway-DAO/gateway-js-sdk/commit/3f9a8bd525e1c9e417906656ff3831bf16f34cf1)) + + +### Features + +* added setup for unit test ([52f62c2](https://github.com/Gateway-DAO/gateway-js-sdk/commit/52f62c200a2c5a55dc0f56e5510567ebc7015901)) + +# [2.1.0-develop.13](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.12...v2.1.0-develop.13) (2024-09-09) + +### Bug Fixes + +- build errors ([7a7cad7](https://github.com/Gateway-DAO/gateway-js-sdk/commit/7a7cad70d4e6619354c3b4cc5fef7d10da94df92)) +- eslint errors ([17f47ab](https://github.com/Gateway-DAO/gateway-js-sdk/commit/17f47ab7fc1230a2450cfe583ae6062892e5f484)) +- eslint errors ([d9a8771](https://github.com/Gateway-DAO/gateway-js-sdk/commit/d9a87718b68a6da6f182e3aec5175563ec290859)) + +### Features + +- migrated to rest api ([8ac1db2](https://github.com/Gateway-DAO/gateway-js-sdk/commit/8ac1db26ea715a3acef039d77a10de45400d3cdf)) + +# [2.1.0-develop.12](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.11...v2.1.0-develop.12) (2024-07-11) + +### Bug Fixes + +- gatewayId => gatewayid ([e1709d4](https://github.com/Gateway-DAO/gateway-js-sdk/commit/e1709d46991bf72c6d5e5404e0e70ae0dd49bf76)) + +# [2.1.0-develop.11](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.10...v2.1.0-develop.11) (2024-07-10) + +### Features + +- made crypto service as public ([fccb672](https://github.com/Gateway-DAO/gateway-js-sdk/commit/fccb672166564bc921c5f20688a8134723318afe)) + +# [2.1.0-develop.10](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.9...v2.1.0-develop.10) (2024-07-09) + +### Bug Fixes +- removed namespace from build script ([a5d452b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a5d452b42f9dad43d6826288823f6f52af707f0d)) + +# [2.1.0-develop.9](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.8...v2.1.0-develop.9) (2024-07-08) + +### Features + +- added js docs and strict did validation ([2cddc29](https://github.com/Gateway-DAO/gateway-js-sdk/commit/2cddc294b74a3bc73da1755e4d32d9f24676c61e)) + +# [2.1.0-develop.8](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.7...v2.1.0-develop.8) (2024-07-08) ### Bug Fixes -* commitlint config for github message ([83a703b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/83a703b2eb23da09da7ddbd8c66f07846a71262c)) -* error probelm in user ([b76fdb9](https://github.com/Gateway-DAO/gateway-js-sdk/commit/b76fdb9ad350a37d954d7a70f1c1387b0750e746)) -* user stub for test ([bb7e443](https://github.com/Gateway-DAO/gateway-js-sdk/commit/bb7e4438d1b8694030a2c0105c7eda3729e9b952)) +- added only v3 urls ([7a61704](https://github.com/Gateway-DAO/gateway-js-sdk/commit/7a61704ab2cc057d590e7c0bee63208168b0d07f)) +- build time errors ([4efe340](https://github.com/Gateway-DAO/gateway-js-sdk/commit/4efe3408283e8c11cd792953f082b1f726544b65)) +- linting error ([f63f731](https://github.com/Gateway-DAO/gateway-js-sdk/commit/f63f731f3402017c45c3b89e2bc0e2419060442e)) +# [2.1.0-develop.7](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.6...v2.1.0-develop.7) (2024-07-08) -* Merge pull request #47 from Gateway-DAO/develop ([2f48413](https://github.com/Gateway-DAO/gateway-js-sdk/commit/2f4841378b75cab0009d33d4e50748589e9ec653)), closes [#47](https://github.com/Gateway-DAO/gateway-js-sdk/issues/47) -* Merge pull request #43 from Gateway-DAO/feat/remove-mesh ([0380c59](https://github.com/Gateway-DAO/gateway-js-sdk/commit/0380c59a820f2283be6c650b4aa15f734e3d16d5)), closes [#43](https://github.com/Gateway-DAO/gateway-js-sdk/issues/43) +### Bug Fixes + +- fixed build path settings ([adb7e65](https://github.com/Gateway-DAO/gateway-js-sdk/commit/adb7e654788b911c8ed6f28330280d5869e6ce79)) +# [2.1.0-develop.6](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.5...v2.1.0-develop.6) (2024-07-08) ### Features -* added encoding package ([871be32](https://github.com/Gateway-DAO/gateway-js-sdk/commit/871be321c06458d2cb2a82a62a9dce5db93251f8)) -* added graphql->sdk script ([574488a](https://github.com/Gateway-DAO/gateway-js-sdk/commit/574488ae6b4837086bbe34eaae1cbb8b2fc7c649)) -* changed commit lint config ([955e22d](https://github.com/Gateway-DAO/gateway-js-sdk/commit/955e22d54a612ecceb99c073e0c9141e5d18675d)) -* custom script to generate sdk init ([5bc97c2](https://github.com/Gateway-DAO/gateway-js-sdk/commit/5bc97c2ad4c583f2f74e124b22934e17f39addde)) -* improved generation script ([437ce6a](https://github.com/Gateway-DAO/gateway-js-sdk/commit/437ce6a15dd1f61cc543dc8bdc2517bef18493b9)) -* migrated build files from ts->js ([1113285](https://github.com/Gateway-DAO/gateway-js-sdk/commit/1113285c2551b0328bf5eb74eebfd01ac34bd4e1)) -* proofs,data models, requests testing done ([0aba14f](https://github.com/Gateway-DAO/gateway-js-sdk/commit/0aba14f5986a43d4011ad86ea76415412218639c)) -* removed changelog generation ([c4fb14b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/c4fb14b94407407c8e8e917163a05276b05077be)) -* removed husky temporary ([963d6b6](https://github.com/Gateway-DAO/gateway-js-sdk/commit/963d6b603d2f0d7c759bdb708ab8a9f3c7d929e0)) -* revered husky ([c52940f](https://github.com/Gateway-DAO/gateway-js-sdk/commit/c52940f3ef9a3429c5724ed009c3ebfe3297ea3f)) -* **test:** fix test ([773cf36](https://github.com/Gateway-DAO/gateway-js-sdk/commit/773cf3637b8291ff8e472a1519f5ff724e9c455b)) -* tests passed for pda,organization ([6378fd7](https://github.com/Gateway-DAO/gateway-js-sdk/commit/6378fd74bd4fff798b3572c947e6dcef7207b990)) -* updated docs according to v2 ([25c9413](https://github.com/Gateway-DAO/gateway-js-sdk/commit/25c94137f019607590339c66f3b1669e178231a9)) -* user test also done ([26214ab](https://github.com/Gateway-DAO/gateway-js-sdk/commit/26214aba7a0ecde83608956254a4ab5bb64f9cd4)) +- added requests test ([679811c](https://github.com/Gateway-DAO/gateway-js-sdk/commit/679811c47812701ba1da1f4551f645150071164e)) + +# [2.1.0-develop.5](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.4...v2.1.0-develop.5) (2024-07-05) + +### Features + +- added file upload as pda and tests related to it ([c88de17](https://github.com/Gateway-DAO/gateway-js-sdk/commit/c88de179e8c7935745e049be029892b5842e03a7)) + +# [2.1.0-develop.4](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.3...v2.1.0-develop.4) (2024-07-04) + +### Bug Fixes + +- fixed generate script ([ea76738](https://github.com/Gateway-DAO/gateway-js-sdk/commit/ea76738b19275ff3010b3b265ba9d1faf4498ed7)) +- solana signature generation ([a94db30](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a94db3006b405ff9f5bcba4afca3b445fec5cbdc)) + +### Features + +- Add constants for string validation length, test default timeout, and default take limit ([34a2b3b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/34a2b3b66f82090ab89c85a72547177faba3d803)) +- Add enums for sign cipher, user identifier type, PDA status, organization identifier type, organization role, auth type, and chain ([732f232](https://github.com/Gateway-DAO/gateway-js-sdk/commit/732f232c80e959c2838d7bceeb0222983c24d3e6)) +- Add error handling and try-catch blocks for method validation and protocol errors ([1688738](https://github.com/Gateway-DAO/gateway-js-sdk/commit/16887384756bc55ca61e796b8ced2eded86a4d63)) +- Add types for configuration and wallet confirmation input ([01505cd](https://github.com/Gateway-DAO/gateway-js-sdk/commit/01505cd415c3f64b0edf5094465e98470e5a2082)) +- added login user method ([ac4ce47](https://github.com/Gateway-DAO/gateway-js-sdk/commit/ac4ce4794af88ca9f12c01d6043bc615b9c12bc8)) +- added signature generation using wallet service ([88a91d2](https://github.com/Gateway-DAO/gateway-js-sdk/commit/88a91d2d98734d768ced515fc7f7c6d3bd27afec)) +- added solana and etherum services ([520fa57](https://github.com/Gateway-DAO/gateway-js-sdk/commit/520fa57585f99c2668ee0ad954dca54527d26ed1)) +- added solana wallet test cases ([8083974](https://github.com/Gateway-DAO/gateway-js-sdk/commit/80839744da4196216fb7c3f346a6fe413324ce3b)) +- added tests ([ee0e5ca](https://github.com/Gateway-DAO/gateway-js-sdk/commit/ee0e5cacb2f941db7d74d564835d4312891d41d6)) +- changed naming to camel case for all modules ([0867755](https://github.com/Gateway-DAO/gateway-js-sdk/commit/08677551ace91b42489adbf07e9b1b2d2c414001)) +- completed data model and auth tests ([a89906c](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a89906c1f82e705210b1ed33dae4a5a874929ea4)) +- Refactor GatewayV3 class and initialize modules ([b41efbf](https://github.com/Gateway-DAO/gateway-js-sdk/commit/b41efbfd80b1a2fe47771f3f6321a1706c7c9366)) + +### Reverts + +- tests files ([a690a27](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a690a274293591377e2b03b7dc10d0fce9e2512d)) + +# [2.1.0-develop.3](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.2...v2.1.0-develop.3) (2024-06-28) + +### Bug Fixes + +- pnpm lock ([093e2ad](https://github.com/Gateway-DAO/gateway-js-sdk/commit/093e2ad0d1fbb751d5bbe9947065ea0296394760)) + +# [2.1.0-develop.2](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.1.0-develop.1...v2.1.0-develop.2) (2024-06-28) + +### Bug Fixes + +- fixed all possible bugs ([6496637](https://github.com/Gateway-DAO/gateway-js-sdk/commit/64966377cd45e31e315cd671dc690db12b8aa9e3)) +- remove test cases for now ([35019d6](https://github.com/Gateway-DAO/gateway-js-sdk/commit/35019d68cb62a4d95b647d4a9dbcdad7f898e333)) +- removed test cases for now ([1550550](https://github.com/Gateway-DAO/gateway-js-sdk/commit/155055094b50b91f17a5df3d9f6f8f9bf0ac6fcb)) +- solana version fix ([ef75028](https://github.com/Gateway-DAO/gateway-js-sdk/commit/ef75028d290edb5160d7239415d7c6a3f1ae9a56)) + +### Features + +- added crypto test and upload file as pda ([1e20416](https://github.com/Gateway-DAO/gateway-js-sdk/commit/1e2041617cdea4b6eafe7701a0013198d598d2e2)) +- added signature based validations for PDA ([8ab5101](https://github.com/Gateway-DAO/gateway-js-sdk/commit/8ab510179cbc9bf2812bd9b1894ba2a86ed1604c)) +- added signature validation to orgs ([45a47da](https://github.com/Gateway-DAO/gateway-js-sdk/commit/45a47da34e5ca313ab8788d229941533d37b2bae)) +- added signatures to data model and org ([200fddd](https://github.com/Gateway-DAO/gateway-js-sdk/commit/200fddd1c4d255ce3b5a368d5906c3661618f448)) +- refactored pda class and added crypto methods ([0c471a0](https://github.com/Gateway-DAO/gateway-js-sdk/commit/0c471a06e166246e97f90f932e481185ff6cf8c8)) + +# [2.1.0-develop.1](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v2.0.0...v2.1.0-develop.1) (2024-05-13) + +### Features + +- added pda v3 class,tests,mocks,stubs ([a0e4ced](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a0e4ced1026cc3c88caf3975ab81cca4cd9d2fd3)) +- **auth:** finished auth class methods and tests ([36113fe](https://github.com/Gateway-DAO/gateway-js-sdk/commit/36113fef8de23642320216fd53b2d07583cada94)) +- changed folder structure for v2 and v3 queries and mutations ([60959be](https://github.com/Gateway-DAO/gateway-js-sdk/commit/60959be0b09d5689ae2049e966badf7a97f886ab)) +- **GatewayV3:** added gateway v3 class ([1bb6ddc](https://github.com/Gateway-DAO/gateway-js-sdk/commit/1bb6ddc620080d95ed9fe49d67bb2486b80de412)) +- **organization:** finished organization class methods and tests ([d6445ca](https://github.com/Gateway-DAO/gateway-js-sdk/commit/d6445ca4c3783e2f29d1ed042d7fa241f367463a)) +- **pda:** finished pda methods and tests ([a99497b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/a99497bc64a0f858eedb2afc03197b1099c25b0e)) +- started process of adding v3 queries and mutations ([d3338d0](https://github.com/Gateway-DAO/gateway-js-sdk/commit/d3338d03001ccebf43f331b33eeaa15bf6fca164)) +- tests for data-model class ([878b0ba](https://github.com/Gateway-DAO/gateway-js-sdk/commit/878b0ba8534a6d5258e1dfa5e3001aaa72431866)) +- **user:** finished user class methods and tests ([549e539](https://github.com/Gateway-DAO/gateway-js-sdk/commit/549e53901e33503d787cbfb4e36b1bd28aa505e6)) +- v3 datamodel class ([ce60e7b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/ce60e7ba80b6df74dc97275b9f16ffb87e60579d)) + +# [2.0.0](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v1.1.1...v2.0.0) (2024-03-14) + +### Bug Fixes + +- commitlint config for github message ([83a703b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/83a703b2eb23da09da7ddbd8c66f07846a71262c)) +- error probelm in user ([b76fdb9](https://github.com/Gateway-DAO/gateway-js-sdk/commit/b76fdb9ad350a37d954d7a70f1c1387b0750e746)) +- user stub for test ([bb7e443](https://github.com/Gateway-DAO/gateway-js-sdk/commit/bb7e4438d1b8694030a2c0105c7eda3729e9b952)) + +- Merge pull request #47 from Gateway-DAO/develop ([2f48413](https://github.com/Gateway-DAO/gateway-js-sdk/commit/2f4841378b75cab0009d33d4e50748589e9ec653)), closes [#47](https://github.com/Gateway-DAO/gateway-js-sdk/issues/47) +- Merge pull request #43 from Gateway-DAO/feat/remove-mesh ([0380c59](https://github.com/Gateway-DAO/gateway-js-sdk/commit/0380c59a820f2283be6c650b4aa15f734e3d16d5)), closes [#43](https://github.com/Gateway-DAO/gateway-js-sdk/issues/43) + +### Features +- added encoding package ([871be32](https://github.com/Gateway-DAO/gateway-js-sdk/commit/871be321c06458d2cb2a82a62a9dce5db93251f8)) +- added graphql->sdk script ([574488a](https://github.com/Gateway-DAO/gateway-js-sdk/commit/574488ae6b4837086bbe34eaae1cbb8b2fc7c649)) +- changed commit lint config ([955e22d](https://github.com/Gateway-DAO/gateway-js-sdk/commit/955e22d54a612ecceb99c073e0c9141e5d18675d)) +- custom script to generate sdk init ([5bc97c2](https://github.com/Gateway-DAO/gateway-js-sdk/commit/5bc97c2ad4c583f2f74e124b22934e17f39addde)) +- improved generation script ([437ce6a](https://github.com/Gateway-DAO/gateway-js-sdk/commit/437ce6a15dd1f61cc543dc8bdc2517bef18493b9)) +- migrated build files from ts->js ([1113285](https://github.com/Gateway-DAO/gateway-js-sdk/commit/1113285c2551b0328bf5eb74eebfd01ac34bd4e1)) +- proofs,data models, requests testing done ([0aba14f](https://github.com/Gateway-DAO/gateway-js-sdk/commit/0aba14f5986a43d4011ad86ea76415412218639c)) +- removed changelog generation ([c4fb14b](https://github.com/Gateway-DAO/gateway-js-sdk/commit/c4fb14b94407407c8e8e917163a05276b05077be)) +- removed husky temporary ([963d6b6](https://github.com/Gateway-DAO/gateway-js-sdk/commit/963d6b603d2f0d7c759bdb708ab8a9f3c7d929e0)) +- revered husky ([c52940f](https://github.com/Gateway-DAO/gateway-js-sdk/commit/c52940f3ef9a3429c5724ed009c3ebfe3297ea3f)) +- **test:** fix test ([773cf36](https://github.com/Gateway-DAO/gateway-js-sdk/commit/773cf3637b8291ff8e472a1519f5ff724e9c455b)) +- tests passed for pda,organization ([6378fd7](https://github.com/Gateway-DAO/gateway-js-sdk/commit/6378fd74bd4fff798b3572c947e6dcef7207b990)) +- updated docs according to v2 ([25c9413](https://github.com/Gateway-DAO/gateway-js-sdk/commit/25c94137f019607590339c66f3b1669e178231a9)) +- user test also done ([26214ab](https://github.com/Gateway-DAO/gateway-js-sdk/commit/26214aba7a0ecde83608956254a4ab5bb64f9cd4)) ### BREAKING CHANGES -* Removed mesh added custom script to generate sdk -* remove mesh +- Removed mesh added custom script to generate sdk +- remove mesh ## [1.1.1](https://github.com/Gateway-DAO/gateway-js-sdk/compare/v1.1.0...v1.1.1) (2024-02-23) diff --git a/README.md b/README.md index a454bdb..f83306f 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ yarn add @gateway-dao/sdk ## Gateway Client -To setup the gateway client we will authenticate with a bearer-token and a Api key as follows +To setup the gateway client we will authenticate with a bearer-token,api key and wallet private key as follows ```typescript import { Gateway } from '@gateway-dao/sdk'; @@ -52,9 +52,12 @@ const gateway = new Gateway({ apiKey: 'your-api-key', token: 'your-token', url: 'https://sandbox.protocol.mygateway.xyz/graphql', + walletPrivateKey: 'your-private-key', // store this in env file! }); ``` +**The wallet private key is not send anywhere and is just used to sign messages on behalf of developer/organization using it. This way we minimize signature errors on protocol and provide smoother developer experience** + **Make sure you add token without Bearer as we add Bearer automatically when you make request. Else it will give you Unauthorized error even if your token is correct** For example @@ -66,6 +69,7 @@ const gateway = new Gateway({ token: 'Bearer your-token', // wrong will not work just use token: 'your-token' url: 'https://sandbox.protocol.mygateway.xyz/graphql', + walletPrivateKey: 'your-private-key', // store this in env file! }); ``` @@ -84,6 +88,7 @@ const gateway = new Gateway({ apiKey: 'your-api-key', token: 'your-token', url: 'https://sandbox.protocol.mygateway.xyz/graphql', + walletPrivateKey: 'your-private-key', // store this in env file! }); async function main() { @@ -109,7 +114,7 @@ async function main() { main(); ``` -### Getting a Organization +### Creating a Organization ```typescript import { Gateway } from '@gateway-dao/sdk'; @@ -118,6 +123,7 @@ const gateway = new Gateway({ apiKey: 'your-api-key', token: 'your-token', url: 'https://sandbox.protocol.mygateway.xyz/graphql', + walletPrivateKey: 'your-private-key', // store this in env file! }); async function main() { @@ -133,50 +139,12 @@ async function main() { console.log(error); // Can log it for degugging } } - main(); ``` -### Create a Data request template - -```typescript -import { Gateway } from '@gateway-dao/sdk'; - -const gateway = new Gateway({ - apiKey: 'your-api-key', - token: 'your-token', - url: 'https://sandbox.protocol.mygateway.xyz/graphql', -}); - -async function main() { - try { - const { createDataRequestTemplate } = - await gateway.dataRequestTemplate.createDataRequestTemplate({ - title: 'Create Data Request Template Example', - description: 'Lorem ipsum dolor sit amet.', - dataModels: [ - { - id: 'uuid-here', - required: true, - claimValidations: { - type: 'object', - properties: { - gatewayUse: { - type: 'string', - }, - }, - required: ['gatewayUse'], - }, - }, - ], - }); - } catch (error) { - console.log(error); // Can log it for degugging - } -} +## More examples -main(); -``` +We have created a separate repository which have more [examples you can access it here](https://github.com/Gateway-DAO/sdk-scripts-example/) ## Error Handling @@ -185,11 +153,23 @@ Incase of any protocol errors we will throw a custom message which is a string w ## License -The Gateway Javascript SDK is licensed under the [MIT License](https://github.com/Gateway-DAO/javascript-sdk/blob/main/LICENSE.md). +The Gateway Javascript SDK is licensed under the [MIT License](LICENSE). ## Contributing -If you want to support the active development of the SDK. [Please go through our Contribution guide](https://github.com/Gateway-DAO/gateway-js-sdk/blob/main/CONTRIBUTING.md) +If you want to support the active development of the SDK. [Please go through our Contribution guide](docs/CONTRIBUTING.md) + +## Code of Conduct + +Please read our [Code of Conduct](docs/CODE_OF_CONDUCT.md) before contributing or engaging in discussions. + +## Security + +If you discover a security vulnerability within this package, please open a ticket on Discord. All security vulnerabilities will be promptly addressed. + +## Support + +We are always here to help you. Please talk to us on [Discord](https://discord.gg/tgt3KjcHGs) for any queries. [npm-image]: https://img.shields.io/npm/v/%40gateway-dao%2Fsdk.svg?style=flat [npm-url]: https://www.npmjs.com/package/@gateway-dao/sdk diff --git a/__mocks__/auth.mock.ts b/__mocks__/auth.mock.ts deleted file mode 100644 index 65f94ed..0000000 --- a/__mocks__/auth.mock.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Auth } from '../src/auth/auth'; -import { authStub } from '../test/stubs/auth.stub'; -import { pdaStub } from '../test/stubs/pda.stub'; - -export const AuthMockService = (auth: Auth) => ({ - checkUsernameAvailabilityMock: jest - .spyOn(auth.sdk, 'checkUsernameAvailability_query') - .mockResolvedValue({ - checkUsernameAvailability: true, - }), - - addEmailMock: jest.spyOn(auth.sdk, 'addEmail_mutation').mockResolvedValue({ - addEmail: authStub(), - }), - addWalletMock: jest - .spyOn(auth.sdk, 'addWallet_mutation') - .mockResolvedValue({ addWallet: authStub() }), - addEmailConfirmationtMock: jest - .spyOn(auth.sdk, 'addEmailConfirmation_mutation') - .mockResolvedValue({ addEmailConfirmation: { user: authStub() } }), - addWalletConfirmationtMock: jest - .spyOn(auth.sdk, 'addWalletConfirmation_mutation') - .mockResolvedValue({ addWalletConfirmation: authStub() }), - loginEmailMock: jest - .spyOn(auth.sdk, 'loginEmail_mutation') - .mockResolvedValue({ - loginEmail: { - user: authStub(), - refresh_token: authStub().existingRefreshToken, - protocol_id: authStub().id, - token: authStub().token, - }, - }), - loginWalletlMock: jest - .spyOn(auth.sdk, 'loginWallet_mutation') - .mockResolvedValue({ - loginWallet: { - user: authStub(), - refresh_token: authStub().existingRefreshToken, - protocol_id: authStub().id, - token: authStub().token, - }, - }), - getPDAMock: jest.spyOn(auth.sdk, 'PDA_query').mockResolvedValue({ - PDA: pdaStub(), - }), - createWalletNonceMock: jest - .spyOn(auth.sdk, 'createWalletNonce_mutation') - .mockResolvedValue({ createWalletNonce: { message: authStub().message } }), - deleteAccountMock: jest - .spyOn(auth.sdk, 'deleteAccount_mutation') - .mockResolvedValue({ deleteAccount: true }), - refreshTokenMock: jest - .spyOn(auth.sdk, 'refreshToken_mutation') - .mockResolvedValue({ - refreshToken: { - user: authStub(), - refresh_token: authStub().existingRefreshToken, - protocol_id: authStub().id, - token: authStub().token, - }, - }), - unregisterAuthMethodMock: jest - .spyOn(auth.sdk, 'unregisterAuthMethod_mutation') - .mockResolvedValue({ unregisterAuthMethod: true }), -}); diff --git a/__mocks__/dataModel.mock.ts b/__mocks__/dataModel.mock.ts deleted file mode 100644 index 268c0de..0000000 --- a/__mocks__/dataModel.mock.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { DataModel } from '../src/data-model/data-model'; -import { - dataModelStub, - dataModelMetaDataStub, - dataModelCreateStub, -} from '../test/stubs/dataModel.stub'; - -export const DataModelMockService = (dataModel: DataModel) => ({ - createDataModelMock: jest - .spyOn(dataModel.sdk, 'createDataModel_mutation') - .mockResolvedValue({ - createDataModel: dataModelStub(), - }), - - getDataModelMock: jest - .spyOn(dataModel.sdk, 'dataModel_query') - .mockResolvedValue({ - dataModel: dataModelStub(), - }), - - getDataModelsMock: jest - .spyOn(dataModel.sdk, 'dataModels_query') - .mockResolvedValue({ - dataModels: [dataModelStub()], - }), - - getDataModelsCountMock: jest - .spyOn(dataModel.sdk, 'dataModelsCount_query') - .mockResolvedValue({ - dataModelsCount: 10, - }), - - getDataModelsMetaDataMock: jest - .spyOn(dataModel.sdk, 'dataModelsMetadata_query') - .mockResolvedValue({ - dataModelsMetadata: dataModelMetaDataStub(), - }), - - getIssuersByDataModelMock: jest - .spyOn(dataModel.sdk, 'issuersByDataModel_query') - .mockResolvedValue({ - issuersByDataModel: [{ count: 10 }], - }), - - getIssuersDataModelCountMock: jest - .spyOn(dataModel.sdk, 'issuersByDataModelCount_query') - .mockResolvedValue({ - issuersByDataModelCount: 10, - }), - getTotalofIssuersByDataModelMock: jest - .spyOn(dataModel.sdk, 'getTotalofIssuersByDataModel_query') - .mockResolvedValue({ - getTotalofIssuersByDataModel: 10, - }), -}); diff --git a/__mocks__/dataRequestTemplate.mock.ts b/__mocks__/dataRequestTemplate.mock.ts deleted file mode 100644 index c09a372..0000000 --- a/__mocks__/dataRequestTemplate.mock.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { DataRequestTemplate } from '../src/dataRequestsTemplate/dataRequestsTemplate'; -import { dataRequestTemplateStub } from '../test/stubs/dataRequestTemplate.stub'; - -export const DataRequestTemplateMockService = ( - dataRequestTemplate: DataRequestTemplate, -) => ({ - createDataRequestTemplateMock: jest - .spyOn(dataRequestTemplate.sdk, 'createDataRequestTemplate_mutation') - .mockResolvedValue({ - createDataRequestTemplate: dataRequestTemplateStub(), - }), - getDataRequestTemplateMock: jest - .spyOn(dataRequestTemplate.sdk, 'dataRequestTemplate_query') - .mockResolvedValue({ - dataRequestTemplate: dataRequestTemplateStub(), - }), - getDataRequestTemplatesMock: jest - .spyOn(dataRequestTemplate.sdk, 'dataRequestTemplates_query') - .mockResolvedValue({ dataRequestTemplates: [dataRequestTemplateStub()] }), - getDataRequestsTemplateCountMock: jest - .spyOn(dataRequestTemplate.sdk, 'dataRequestTemplatesCount_query') - .mockResolvedValue({ - dataRequestTemplatesCount: 10, - }), - getDataRequestsTemplatesMetadataMock: jest - .spyOn(dataRequestTemplate.sdk, 'dataRequestTemplatesMetadata_query') - .mockResolvedValue({ - dataRequestTemplatesMetadata: { - tags: [dataRequestTemplateStub().tags[0]], - }, - }), - getVerifiersByDataRequestTemplateMock: jest - .spyOn(dataRequestTemplate.sdk, 'verifiersByDataRequestTemplate_query') - .mockResolvedValue({ - verifiersByDataRequestTemplate: [], - }), - getVerifiersByDataRequestTemplateCountMock: jest - .spyOn(dataRequestTemplate.sdk, 'verifiersByDataRequestTemplateCount_query') - .mockResolvedValue({ - verifiersByDataRequestTemplateCount: 10, - }), -}); diff --git a/__mocks__/organization.mock.ts b/__mocks__/organization.mock.ts deleted file mode 100644 index f0ebdfc..0000000 --- a/__mocks__/organization.mock.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Organization } from '../src/organization/organization'; -import { OrganizationRole } from '../src/types'; -import { - memberOrganizationStub, - organizationStub, -} from '../test/stubs/organization.stub'; -import { userStub } from '../test/stubs/user.stub'; - -export const OrganizationMockService = (organization: Organization) => ({ - createOrganizationMock: jest - .spyOn(organization.sdk, 'createOrganization_mutation') - .mockResolvedValue({ - createOrganization: organizationStub(), - }), - getOrganizationMock: jest - .spyOn(organization.sdk, 'organization_query') - .mockResolvedValue({ - organization: organizationStub(), - }), - updateOrganizationMock: jest - .spyOn(organization.sdk, 'updateOrganization_mutation') - .mockResolvedValue({ - updateOrganization: organizationStub({ - description: 'updated description', - }), - }), - getOrganizationsMock: jest - .spyOn(organization.sdk, 'organizations_query') - .mockResolvedValue({ - organizations: [organizationStub()], - }), - addMemberToOrganizationMock: jest - .spyOn(organization.sdk, 'addMemberToOrganization_mutation') - .mockResolvedValue({ - addMemberToOrganization: memberOrganizationStub(), - }), - changeMemberRoleMock: jest - .spyOn(organization.sdk, 'changeMemberRole_mutation') - .mockResolvedValue({ - changeMemberRole: memberOrganizationStub({ - role: OrganizationRole.Admin, - }), - }), - removeMemberFromOrganizationMock: jest - .spyOn(organization.sdk, 'removeMemberFromOrganization_mutation') - .mockResolvedValue({ - removeMemberFromOrganization: true, - }), -}); diff --git a/__mocks__/pda.mock.ts b/__mocks__/pda.mock.ts deleted file mode 100644 index 08e8259..0000000 --- a/__mocks__/pda.mock.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { PDA } from '../src/pda/pda'; -import { pdaStub } from '../test/stubs/pda.stub'; - -export const PDAMockService = (pda: PDA) => ({ - createPDAMock: jest.spyOn(pda.sdk, 'createPDA_mutation').mockResolvedValue({ - createPDA: pdaStub(), - }), - changePDAStatusMock: jest - .spyOn(pda.sdk, 'changePDAStatus_mutation') - .mockResolvedValue({ - changePDAStatus: pdaStub({ status: 'Suspended' }), - }), - pdaCountMock: jest - .spyOn(pda.sdk, 'PDACount_query') - .mockResolvedValue({ PDACount: 10 }), - getPDAMock: jest.spyOn(pda.sdk, 'PDA_query').mockResolvedValue({ - PDA: pdaStub(), - }), - pdasMock: jest - .spyOn(pda.sdk, 'PDAs_query') - .mockResolvedValue({ PDAs: [pdaStub()] }), - issuedCountPDAMock: jest - .spyOn(pda.sdk, 'issuedPDAsCount_query') - .mockResolvedValue({ issuedPDAsCount: 10 }), - issuedPDAMock: jest - .spyOn(pda.sdk, 'issuedPDAs_query') - .mockResolvedValue({ issuedPDAs: [pdaStub()] }), - updatePDAMock: jest - .spyOn(pda.sdk, 'updatePDA_mutation') - .mockResolvedValue({ updatePDA: pdaStub() }), -}); diff --git a/__mocks__/proof.mock.ts b/__mocks__/proof.mock.ts deleted file mode 100644 index f5bb2b3..0000000 --- a/__mocks__/proof.mock.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { Proof } from '../src/proof/proof'; -import { proofStub, createProofMessage } from '../test/stubs/proof.stub'; - -export const ProofMockService = (proof: Proof) => ({ - getProofMock: jest.spyOn(proof.sdk, 'proof_query').mockResolvedValue({ - proof: proofStub(), - }), - - createProofMock: jest - .spyOn(proof.sdk, 'createProof_mutation') - .mockResolvedValue({ - createProof: proofStub(), - }), - - createProofMessageMock: jest - .spyOn(proof.sdk, 'createProofMessage_mutation') - .mockResolvedValue({ - createProofMessage: createProofMessage, - }), - - getProofsMock: jest.spyOn(proof.sdk, 'proofs_query').mockResolvedValue({ - proofs: [proofStub()], - }), - - getProofsByPDAIdsMock: jest - .spyOn(proof.sdk, 'proofsByPDAIds_query') - .mockResolvedValue({ - proofsByPDAIds: [proofStub()], - }), - - getReceivedProofsMock: jest - .spyOn(proof.sdk, 'receivedProofs_query') - .mockResolvedValue({ - receivedProofs: [proofStub()], - }), - - getReceivedProofsCountMock: jest - .spyOn(proof.sdk, 'receivedProofsCount_query') - .mockResolvedValue({ - receivedProofsCount: 10, - }), - - getSentProofsMock: jest - .spyOn(proof.sdk, 'sentProofs_query') - .mockResolvedValue({ - sentProofs: [proofStub()], - }), - - getSentProofsCountMock: jest - .spyOn(proof.sdk, 'sentProofsCount_query') - .mockResolvedValue({ - sentProofsCount: 10, - }), -}); diff --git a/__mocks__/request.mock.ts b/__mocks__/request.mock.ts deleted file mode 100644 index 8e7b764..0000000 --- a/__mocks__/request.mock.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Request } from '../src/request/request'; -import { requestStub } from '../test/stubs/request.stub'; - -export const RequestMockService = (request: Request) => ({ - createDataRequestMock: jest - .spyOn(request.sdk, 'createDataRequest_mutation') - .mockResolvedValue({ - createDataRequest: requestStub(), - }), - - getDataRequestMock: jest - .spyOn(request.sdk, 'dataRequest_query') - .mockResolvedValue({ - dataRequest: requestStub(), - }), - - getDataRequestCountMock: jest - .spyOn(request.sdk, 'dataRequestCount_query') - .mockResolvedValue({ - dataRequestCount: 10, - }), - - getDataRequestStatusMock: jest - .spyOn(request.sdk, 'dataRequestStatus_query') - .mockResolvedValue({ - dataRequestStatus: requestStub().status, - }), - - getDataRequestsMock: jest - .spyOn(request.sdk, 'dataRequests_query') - .mockResolvedValue({ - dataRequests: [requestStub()], - }), - - getRequestsReceivedMock: jest - .spyOn(request.sdk, 'requestsReceived_query') - .mockResolvedValue({ - requestsReceived: [requestStub()], - }), - - getRequestReceivedCountMock: jest - .spyOn(request.sdk, 'requestsReceivedCount_query') - .mockResolvedValue({ - requestsReceivedCount: 10, - }), - - getRequestsSentMock: jest - .spyOn(request.sdk, 'requestsSent_query') - .mockResolvedValue({ - requestsSent: [requestStub()], - }), - - getRequestsSentCountMock: jest - .spyOn(request.sdk, 'requestsSentCount_query') - .mockResolvedValue({ requestsSentCount: 10 }), -}); diff --git a/__mocks__/transaction.mock.ts b/__mocks__/transaction.mock.ts deleted file mode 100644 index ee2a8d4..0000000 --- a/__mocks__/transaction.mock.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Transaction } from '../src/transaction/transaction'; -import { transactionStub } from '../test/stubs/transaction.stub'; - -export const TransactionMockService = (transaction: Transaction) => ({ - getTransactionCountMock: jest - .spyOn(transaction.sdk, 'transactionsCount_query') - .mockResolvedValue({ - transactionsCount: 10, - }), - - getTransactionMock: jest - .spyOn(transaction.sdk, 'transaction_query') - .mockResolvedValue({ - transaction: transactionStub(), - }), - - getTransactionsMock: jest - .spyOn(transaction.sdk, 'transactions_query') - .mockResolvedValue({ - transactions: [transactionStub()], - }), -}); diff --git a/__mocks__/user.mock.ts b/__mocks__/user.mock.ts deleted file mode 100644 index 386d026..0000000 --- a/__mocks__/user.mock.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { User } from '../src/user/user'; -import { transactionStub } from '../test/stubs/transaction.stub'; -import { - financialTransactionsStub, - userStub, - walletStub, -} from '../test/stubs/user.stub'; - -export const UserMockService = (user: User) => ({ - meMock: jest.spyOn(user.sdk, 'me_query').mockResolvedValue({ - me: userStub(), - }), - getSingleUserMock: jest.spyOn(user.sdk, 'user_query').mockResolvedValue({ - user: userStub(), - }), - myPDACountMock: jest.spyOn(user.sdk, 'myPDACount_query').mockResolvedValue({ - myPDACount: 10, - }), - myPDAsMock: jest.spyOn(user.sdk, 'myPDAs_query').mockResolvedValue({ - myPDAs: userStub().issuedPDAs, - }), - myDataModelsCountMock: jest - .spyOn(user.sdk, 'dataModelsCount_query') - .mockResolvedValue({ - dataModelsCount: 10, - }), - myDataRequestTemplatesCountMock: jest - .spyOn(user.sdk, 'myDataRequestTemplatesCount_query') - .mockResolvedValue({ - myDataRequestTemplatesCount: 10, - }), - updateUserMock: jest - .spyOn(user.sdk, 'updateUser_mutation') - .mockResolvedValue({ - updateUser: userStub({ displayName: 'testuser02' }), - }), - updateMyProfilePictureMock: jest - .spyOn(user.sdk, 'updateMyProfilePicture_mutation') - .mockResolvedValue({ - updateMyProfilePicture: userStub({ - profilePicture: userStub().profilePicture, - }).profilePicture, - }), - myFinancialTransactionsCountMock: jest - .spyOn(user.sdk, 'myFinancialTransactionsCount_query') - .mockResolvedValue({ - myFinancialTransactionsCount: 10, - }), - myTransactionsMock: jest - .spyOn(user.sdk, 'myTransactions_query') - .mockResolvedValue({ myTransactions: [transactionStub()] }), - mywalletMock: jest.spyOn(user.sdk, 'myWallet_query').mockResolvedValue({ - myWallet: walletStub(), - }), - updateUserDisplayNameMock: jest - .spyOn(user.sdk, 'updateMyDisplayName_mutation') - .mockResolvedValue({ - updateMyDisplayName: userStub().displayName, - }), - updateUserGatewayIdMock: jest - .spyOn(user.sdk, 'updateMyGatewayId_mutation') - .mockResolvedValue({ - updateMyGatewayId: userStub(), - }), - updateUserNotificationEmaailMock: jest - .spyOn(user.sdk, 'updateNotificationEmail_mutation') - .mockResolvedValue({ - updateNotificationEmail: { user: userStub() }, - }), - myFinancialTransactionsMock: jest - .spyOn(user.sdk, 'myFinancialTransactions_query') - .mockResolvedValue({ - myFinancialTransactions: financialTransactionsStub(), - }), -}); diff --git a/api.yml b/api.yml new file mode 100644 index 0000000..9c12760 --- /dev/null +++ b/api.yml @@ -0,0 +1,866 @@ +openapi: 3.0.1 +info: + title: Gateway API + description: + This is Gateway API to upload files and create a easy way to integrate + with Gateway Protocol. + contact: {} + version: 3.0.0-beta +servers: + - url: https://dev.api.gateway.tech/ + - url: http://dev.api.gateway.tech/ +paths: + /accounts: + post: + tags: + - Accounts + summary: Create account + description: Create a new account + requestBody: + description: Account data + content: + application/json: + schema: + $ref: '#/components/schemas/model.AccountCreateRequest' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/model.TokenResponse' + x-codegen-request-body-name: account + /accounts/me: + get: + tags: + - Accounts + summary: Get my account + description: Get my account + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.MyAccountResponse' + security: + - BearerAuth: [] + /auth: + post: + tags: + - Auth + summary: Authenticate account + description: Authenticate account + requestBody: + description: model.AuthRequest + content: + application/json: + schema: + $ref: '#/components/schemas/model.AuthRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.TokenResponse' + x-codegen-request-body-name: authRequest + /auth/message: + get: + tags: + - Auth + summary: Generate sign message + description: Generate sign message + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.MessageResponse' + /auth/refresh-token: + get: + tags: + - Auth + summary: Refresh token + description: Refresh token + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.TokenResponse' + security: + - BearerAuth: [] + /data-assets: + post: + tags: + - Data assets + summary: Create a new data asset + description: + "Create a new data asset. For structured data submission, use application/json.\ + \ For file uploads, use multipart/form-data. Note: All date fields must be\ + \ in RFC 3339 format (e.g., 2025-09-02T14:31:00Z)." + requestBody: + content: + application/json: + schema: + type: object + properties: + data: + type: string + description: File to be uploaded when using multipart/form-data + format: binary + acl: + type: string + description: + "Access control list (ACL) for the data asset (e.g.,\ + \ 'public-read')" + expiration_date: + type: string + description: Expiration date for the data asset (in RFC 3339 format) + ' multipart/form-data': + schema: + type: object + properties: + data: + type: string + description: File to be uploaded when using multipart/form-data + format: binary + acl: + type: string + description: + "Access control list (ACL) for the data asset (e.g.,\ + \ 'public-read')" + expiration_date: + type: string + description: Expiration date for the data asset (in RFC 3339 format) + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataAssetIDRequestAndResponse' + security: + - BearerAuth: [] + x-codegen-request-body-name: data + /data-assets/me: + get: + tags: + - Data assets + summary: Get my data assets + description: Get all data assets that belong to the authenticated user + parameters: + - name: page + in: query + description: Page number + schema: + type: integer + - name: page_size + in: query + description: Page size + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/helper.PaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/model.PublicDataAsset' + security: + - BearerAuth: [] + /data-assets/{id}: + get: + tags: + - Data assets + summary: Get data asset by ID + description: Get data asset by ID + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.PublicDataAsset' + security: + - BearerAuth: [] + put: + tags: + - Data assets + summary: Update data asset by ID + description: + "Update data asset by ID. For structured data submission, use application/json.\ + \ For file uploads, use multipart/form-data. Note: All date fields must be\ + \ in RFC 3339 format (e.g., 2025-09-02T14:31:00Z)." + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + requestBody: + content: + application/json: + schema: + type: object + properties: + data: + type: string + description: File to be uploaded when using multipart/form-data + format: binary + acl: + type: string + description: + "Access control list (ACL) for the data asset (e.g.,\ + \ 'public-read')" + expiration_date: + type: string + description: Expiration date for the data asset (in RFC 3339 format) + ' multipart/form-data': + schema: + type: object + properties: + data: + type: string + description: File to be uploaded when using multipart/form-data + format: binary + acl: + type: string + description: + "Access control list (ACL) for the data asset (e.g.,\ + \ 'public-read')" + expiration_date: + type: string + description: Expiration date for the data asset (in RFC 3339 format) + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.PublicDataAsset' + security: + - BearerAuth: [] + x-codegen-request-body-name: data + delete: + tags: + - Data assets + summary: Delete data asset by ID + description: Delete data asset by ID + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/responses.MessageResponse' + security: + - BearerAuth: [] + /data-assets/{id}/acl: + put: + tags: + - Data assets + summary: Update ACL items to data asset + description: Update ACL items to data asset + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + requestBody: + description: Update ACL Items Request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.ACLRequest' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.PublicACL' + security: + - BearerAuth: [] + x-codegen-request-body-name: body + post: + tags: + - Data assets + summary: Assign ACL items to data asset + description: Assign ACL items to data asset + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + requestBody: + description: Assign ACL Items Request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.ACLRequest' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.PublicACL' + security: + - BearerAuth: [] + x-codegen-request-body-name: body + delete: + tags: + - Data assets + summary: Delete assigned role by ACL + description: Delete assigned role by ACL + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + requestBody: + description: Delete Assigned ACL Items Request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.ACLRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/responses.MessageResponse' + security: + - BearerAuth: [] + x-codegen-request-body-name: body + /data-assets/{id}/download: + get: + tags: + - Data assets + summary: Download data asset by ID + description: Download data asset by ID + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + type: integer + security: + - BearerAuth: [] + /data-assets/{id}/share: + post: + tags: + - Data assets + summary: Share data asset by ID + description: Share data asset by ID. To share you need to have a sharing role. + parameters: + - name: id + in: path + description: Data Asset ID + required: true + schema: + type: integer + requestBody: + description: Share Data Asset Request + content: + application/json: + schema: + $ref: '#/components/schemas/model.ShareDataAssetRequest' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/model.PublicACL' + security: + - BearerAuth: [] + x-codegen-request-body-name: data + /data-models: + get: + tags: + - Data models + summary: Get data models + description: Get all data models + parameters: + - name: page + in: query + description: Page number + schema: + type: integer + default: 1 + - name: page_size + in: query + description: Page size + schema: + type: integer + default: 10 + responses: + '200': + description: OK + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/helper.PaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/model.DataModel' + post: + tags: + - Data models + summary: Create data model + description: Create a new data model + requestBody: + description: Data Model + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataModelRequest' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataModel' + security: + - BearerAuth: [] + x-codegen-request-body-name: data_model + /data-models/me: + get: + tags: + - Data models + summary: Get data models by user + description: Get all data models created by a user + parameters: + - name: page + in: query + description: Page number + schema: + type: integer + default: 1 + - name: page_size + in: query + description: Page size + schema: + type: integer + default: 10 + responses: + '200': + description: OK + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/helper.PaginatedResponse' + - type: object + properties: + data: + type: array + items: + $ref: '#/components/schemas/model.DataModel' + security: + - BearerAuth: [] + /data-models/{id}: + get: + tags: + - Data models + summary: Get data model by ID + description: Get a data model by its ID + parameters: + - name: id + in: path + description: Data Model ID + required: true + schema: + type: integer + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataModel' + put: + tags: + - Data models + summary: Update data model + description: Update a data model + parameters: + - name: id + in: path + description: Data Model ID + required: true + schema: + type: integer + requestBody: + description: Data Model + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataModel' + required: true + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/model.DataModel' + security: + - BearerAuth: [] + x-codegen-request-body-name: data_model +components: + schemas: + helper.Links: + required: + - first + - last + - next + - previous + type: object + properties: + first: + type: string + last: + type: string + next: + type: string + previous: + type: string + helper.Meta: + required: + - current_page + - items_per_page + - total_items + - total_pages + type: object + properties: + current_page: + type: integer + items_per_page: + type: integer + total_items: + type: integer + total_pages: + type: integer + helper.PaginatedResponse: + required: + - data + - links + - meta + type: object + properties: + data: + type: object + links: + $ref: '#/components/schemas/helper.Links' + meta: + $ref: '#/components/schemas/helper.Meta' + model.ACLRequest: + required: + - address + - roles + type: object + properties: + address: + type: string + roles: + type: array + items: + $ref: '#/components/schemas/model.AccessLevel' + model.AccessLevel: + type: string + enum: + - view + - update + - delete + - share + x-enum-varnames: + - RoleView + - RoleUpdate + - RoleDelete + - RoleShare + model.AccountCreateRequest: + required: + - message + - signature + - username + - wallet_address + type: object + properties: + message: + type: string + signature: + type: string + username: + type: string + wallet_address: + type: string + model.AuthRequest: + required: + - message + - signature + - wallet_address + type: object + properties: + message: + type: string + signature: + type: string + wallet_address: + type: string + model.CreateDataAssetRequest: + required: + - name + type: object + properties: + acl: + type: array + items: + $ref: '#/components/schemas/model.ACLRequest' + claim: + type: object + properties: {} + data_model_id: + type: integer + expiration_date: + type: string + name: + type: string + tags: + type: array + items: + type: string + model.DataAssetIDRequestAndResponse: + required: + - id + type: object + properties: + id: + type: integer + model.DataModel: + type: object + properties: + created_at: + type: string + created_by: + type: string + deleted_at: + type: string + description: + type: string + id: + type: integer + schema: + type: object + properties: {} + tags: + type: array + items: + type: string + title: + type: string + updated_at: + type: string + model.DataModelRequest: + required: + - description + - schema + - title + type: object + properties: + description: + type: string + schema: + type: object + properties: {} + tags: + type: array + items: + type: string + title: + type: string + model.MessageResponse: + required: + - message + type: object + properties: + message: + type: string + model.MyAccountResponse: + type: object + properties: + created_at: + type: string + did: + type: string + profile_picture: + type: string + updated_at: + type: string + username: + type: string + wallet_address: + type: string + model.PublicACL: + type: object + properties: + address: + type: string + created_at: + type: string + data_asset_id: + type: integer + roles: + type: array + items: + type: string + solana_address: + type: string + updated_at: + type: string + model.PublicDataAsset: + required: + - created_by + - fid + - id + - name + - size + - tags + - transaction_id + - type + type: object + properties: + acl: + type: array + items: + $ref: '#/components/schemas/model.PublicACL' + created_at: + type: string + created_by: + type: string + data_model_id: + type: integer + expiration_date: + type: string + fid: + type: string + id: + type: integer + name: + type: string + size: + type: integer + tags: + type: array + items: + type: string + transaction_id: + type: string + type: + type: string + updated_at: + type: string + model.ShareDataAssetRequest: + type: object + properties: + addresses: + type: array + items: + type: string + model.TokenResponse: + required: + - token + type: object + properties: + token: + type: string + model.UpdateDataAssetRequest: + type: object + properties: + claim: + type: object + properties: {} + expiration_date: + type: string + name: + type: string + responses.MessageResponse: + type: object + properties: + message: + type: string + securitySchemes: + BearerAuth: + type: apiKey + description: Type "Bearer" followed by a space and the JWT token. + name: Authorization + in: header +x-original-swagger-version: '2.0' diff --git a/CODE_BASE_OVERVIEW.md b/docs/CODE_BASE_OVERVIEW.md similarity index 54% rename from CODE_BASE_OVERVIEW.md rename to docs/CODE_BASE_OVERVIEW.md index eb5da91..74d8722 100644 --- a/CODE_BASE_OVERVIEW.md +++ b/docs/CODE_BASE_OVERVIEW.md @@ -2,11 +2,11 @@ This section will give you an overview of the SDK codebase. We will also discuss in short the tools we use and the implementation. -- If you want to contribute to the SDK make sure you read this document and the [Contributing Guildelines](https://github.com/Gateway-DAO/javascript-sdk/blob/main/CONTRIBUTING.md) before proceeding. +- If you want to contribute to the SDK make sure you read this document and the [Contributing Guildelines](CONTRIBUTING.md) before proceeding. ### Custom Script to generate sdk from graphql end point -- We don't use graphql mesh anymore instead we have a [custom in-house script](https://github.com/Gateway-DAO/gateway-js-sdk/blob/develop/scripts/generateSDK/generate.js)(heavily inspired from graphql mesh team) which generates a complete type-safe SDK using our graphql Schema. +- We don't use graphql mesh anymore instead we have a [custom in-house script](../scripts/generateSDK/generate.js)(heavily inspired from graphql mesh team) which generates a complete type-safe SDK using our graphql Schema. - Using this script we are able to auto generate all of queries and mutations and also providing autocomplete feature for developing applications. ### Top Level Folder Structure @@ -15,15 +15,14 @@ This section will give you an overview of the SDK codebase. We will also discuss 1. Auth Class:- Handles all Authentication related methods. 2. Data Model:- Handles all Data Models related methods. -3. Data Request Templates:- Handles all Data Request Template related methods. -4. Organization:- Handles all Organization related methods. -5. PDA:- Handles all PDA related methods. -6. Proof:- Handles all Proof related methods. -7. Request:- Handles all Requests related methods. -8. User:- Handles all User related methods. -9. Transactions:- Handles all User related methods. - -- The utils folder has basic utilities functions like validations to validate all user input. +3. Organization:- Handles all Organization related methods. +4. PDA:- Handles all PDA related methods. +5. Proof:- Handles all Proof related methods. +6. Request:- Handles all Requests related methods. +7. User:- Handles all User related methods. +8. Transactions:- Handles all User related methods. + +- The services folder has all functions related to crypto,wallets, and validation related functions. - The tests folder has all the unit test for the above classes. We are using mocking to mock the SDK. diff --git a/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to docs/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 89% rename from CONTRIBUTING.md rename to docs/CONTRIBUTING.md index cdcd12f..c26a286 100644 --- a/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -10,7 +10,7 @@ - When we make breaking changes, we also introduce deprecation warnings in a minor version so that our users learn about the upcoming changes and migrate their code in advance. -- Every significant change is documented in the [changelog file](https://github.com/Gateway-DAO/javascript-sdk/blob/main/CHANGELOG.md). +- Every significant change is documented in the [changelog file](../CHANGELOG.md). ### Branch Organization @@ -22,7 +22,7 @@ ### Bugs -- **Do not open up a GitHub issue if the bug is a security vulnerability**, and instead refer our [security policy](https://github.com/Gateway-DAO/javascript-sdk/blob/main/SECURITY.md). +- **Do not open up a GitHub issue if the bug is a security vulnerability**, and instead refer our [security policy](SECURITY.md). - **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/Gateway-dao/javascript-sdk/issues). @@ -44,7 +44,7 @@ - You have Node.js installed at LTS with version 18+ and using pnpm as package manager. - You have knowldge of git. -- Read the [code base overview](https://github.com/Gateway-DAO/javascript-sdk/blob/main/CODE_BASE_OVERVIEW.md) to have a short introduction about how we manage/write code. +- Read the [code base overview](CODE_BASE_OVERVIEW.md) to have a short introduction about how we manage/write code. ### Development Workflow diff --git a/FRONTEND_DOCS.md b/docs/FRONTEND_DOCS.md similarity index 100% rename from FRONTEND_DOCS.md rename to docs/FRONTEND_DOCS.md diff --git a/SECURITY.md b/docs/SECURITY.md similarity index 100% rename from SECURITY.md rename to docs/SECURITY.md diff --git a/package.json b/package.json index e023109..8fade01 100644 --- a/package.json +++ b/package.json @@ -2,16 +2,17 @@ "name": "@gateway-dao/sdk", "version": "0.0.0-semantic-release", "description": "A Typescript SDK for the Gateway API", - "main": "dist/src/Gateway.js", - "types": "dist/src/Gateway.d.ts", + "main": "dist/src/index.js", + "types": "dist/src/index.d.ts", "scripts": { + "dev": "ts-node-dev src/testing.ts", + "generate": "npx openapi-typescript ./api.yml --output ./src/api.d.ts && pnpm generate-types && pnpm format", + "generate-types": "ts-node-dev ./scripts/generate-types.ts", "test": "jest --coverage", + "build": "rm -rf dist && tsc", "lint": "eslint .", "lint:fix": "eslint . --fix", - "format": "prettier --write .", - "prepare": "husky install", - "build": "rm -rf dist && tsc && scripts/compress.sh && node scripts/compress.js", - "generate:sdk": "node scripts/generateSDK/generate.js" + "format": "prettier --write ." }, "engines": { "node": ">=18.0.0" @@ -32,28 +33,19 @@ ], "license": "MIT", "dependencies": { - "@graphql-typed-document-node/core": "^3.2.0", - "@solana/web3.js": "^1.87.6", - "encoding": "^0.1.13", + "@solana/web3.js": "^1.95.3", "ethers": "^5.7.2", - "graphql": "^16.8.1", - "graphql-request": "^6.1.0" + "mime-types": "^2.1.35", + "openapi-fetch": "^0.10.2", + "openapi-typescript-helpers": "^0.0.11", + "tweetnacl": "^1.0.3" }, "devDependencies": { - "@commitlint/cli": "^18.4.4", - "@commitlint/config-conventional": "^18.4.4", - "@graphql-codegen/core": "^4.0.2", - "@graphql-codegen/typed-document-node": "^5.0.6", - "@graphql-codegen/typescript": "^4.0.6", - "@graphql-codegen/typescript-graphql-request": "^6.2.0", - "@graphql-codegen/typescript-operations": "^4.2.0", - "@graphql-codegen/typescript-resolvers": "^4.0.6", - "@graphql-tools/utils": "^10.1.0", - "@types/jest": "^29.5.11", - "@types/node": "^20.10.4", + "@types/jest": "^29.5.12", + "@types/jsonwebtoken": "^9.0.6", + "@types/mime-types": "^2.1.4", + "@types/node": "^22.0.0", "@typescript-eslint/eslint-plugin": "^6.13.2", - "change-case": "^5.4.3", - "dts-minify": "^0.3.2", "eslint": "^8.55.0", "eslint-config-prettier": "^9.1.0", "eslint-config-standard-with-typescript": "^39.1.1", @@ -63,12 +55,11 @@ "eslint-plugin-promise": "^6.1.1", "husky": "^8.0.3", "jest": "^29.7.0", - "json5": "^2.2.3", - "lint-staged": "^15.2.0", - "minimatch": "^9.0.3", - "prettier": "^3.1.1", + "openapi-typescript": "^7.1.0", + "prettier": "^3.3.3", "ts-jest": "^29.1.1", - "typescript": "^5.3.3" + "ts-node-dev": "^2.0.0", + "typescript": "^5.5.4" }, "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab16cfe..d1cf06a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,1291 +1,2852 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: - autoInstallPeers: false + autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@graphql-typed-document-node/core': - specifier: ^3.2.0 - version: 3.2.0(graphql@16.8.1) - '@solana/web3.js': - specifier: ^1.87.6 - version: 1.91.0(encoding@0.1.13) - encoding: - specifier: ^0.1.13 - version: 0.1.13 - ethers: - specifier: ^5.7.2 - version: 5.7.2 - graphql: - specifier: ^16.8.1 - version: 16.8.1 - graphql-request: - specifier: ^6.1.0 - version: 6.1.0(encoding@0.1.13)(graphql@16.8.1) - -devDependencies: - '@commitlint/cli': - specifier: ^18.4.4 - version: 18.6.1(@types/node@20.11.26)(typescript@5.4.2) - '@commitlint/config-conventional': - specifier: ^18.4.4 - version: 18.6.3 - '@graphql-codegen/core': - specifier: ^4.0.2 - version: 4.0.2(graphql@16.8.1) - '@graphql-codegen/typed-document-node': - specifier: ^5.0.6 - version: 5.0.6(encoding@0.1.13)(graphql@16.8.1) - '@graphql-codegen/typescript': - specifier: ^4.0.6 - version: 4.0.6(encoding@0.1.13)(graphql@16.8.1) - '@graphql-codegen/typescript-graphql-request': - specifier: ^6.2.0 - version: 6.2.0(encoding@0.1.13)(graphql-request@6.1.0)(graphql-tag@2.12.6)(graphql@16.8.1) - '@graphql-codegen/typescript-operations': - specifier: ^4.2.0 - version: 4.2.0(encoding@0.1.13)(graphql@16.8.1) - '@graphql-codegen/typescript-resolvers': - specifier: ^4.0.6 - version: 4.0.6(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': - specifier: ^10.1.0 - version: 10.1.2(graphql@16.8.1) - '@types/jest': - specifier: ^29.5.11 - version: 29.5.12 - '@types/node': - specifier: ^20.10.4 - version: 20.11.26 - '@typescript-eslint/eslint-plugin': - specifier: ^6.13.2 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) - change-case: - specifier: ^5.4.3 - version: 5.4.3 - dts-minify: - specifier: ^0.3.2 - version: 0.3.2 - eslint: - specifier: ^8.55.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-config-standard-with-typescript: - specifier: ^39.1.1 - version: 39.1.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0)(typescript@5.4.2) - eslint-plugin-import: - specifier: ^2.29.0 - version: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) - eslint-plugin-n: - specifier: ^16.3.1 - version: 16.6.2(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^5.0.1 - version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) - eslint-plugin-promise: - specifier: ^6.1.1 - version: 6.1.1(eslint@8.57.0) - husky: - specifier: ^8.0.3 - version: 8.0.3 - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.11.26) - json5: - specifier: ^2.2.3 - version: 2.2.3 - lint-staged: - specifier: ^15.2.0 - version: 15.2.2 - minimatch: - specifier: ^9.0.3 - version: 9.0.3 - prettier: - specifier: ^3.1.1 - version: 3.2.5 - ts-jest: - specifier: ^29.1.1 - version: 29.1.2(@babel/core@7.24.0)(jest@29.7.0)(typescript@5.4.2) - typescript: - specifier: ^5.3.3 - version: 5.4.2 +importers: + + .: + dependencies: + '@solana/web3.js': + specifier: ^1.95.3 + version: 1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ethers: + specifier: ^5.7.2 + version: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + mime-types: + specifier: ^2.1.35 + version: 2.1.35 + openapi-fetch: + specifier: ^0.10.2 + version: 0.10.6 + openapi-typescript-helpers: + specifier: ^0.0.11 + version: 0.0.11 + tweetnacl: + specifier: ^1.0.3 + version: 1.0.3 + devDependencies: + '@types/jest': + specifier: ^29.5.12 + version: 29.5.12 + '@types/jsonwebtoken': + specifier: ^9.0.6 + version: 9.0.6 + '@types/mime-types': + specifier: ^2.1.4 + version: 2.1.4 + '@types/node': + specifier: ^22.0.0 + version: 22.5.4 + '@typescript-eslint/eslint-plugin': + specifier: ^6.13.2 + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + eslint: + specifier: ^8.55.0 + version: 8.57.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.0) + eslint-config-standard-with-typescript: + specifier: ^39.1.1 + version: 39.1.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4) + eslint-plugin-import: + specifier: ^2.29.0 + version: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + eslint-plugin-n: + specifier: ^16.3.1 + version: 16.6.2(eslint@8.57.0) + eslint-plugin-prettier: + specifier: ^5.0.1 + version: 5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) + eslint-plugin-promise: + specifier: ^6.1.1 + version: 6.6.0(eslint@8.57.0) + husky: + specifier: ^8.0.3 + version: 8.0.3 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) + openapi-typescript: + specifier: ^7.1.0 + version: 7.4.0(typescript@5.5.4) + prettier: + specifier: ^3.3.3 + version: 3.3.3 + ts-jest: + specifier: ^29.1.1 + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)))(typescript@5.5.4) + ts-node-dev: + specifier: ^2.0.0 + version: 2.0.0(@types/node@22.5.4)(typescript@5.5.4) + typescript: + specifier: ^5.5.4 + version: 5.5.4 packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: - { - integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==, - } - engines: { node: '>=0.10.0' } - dev: true - - /@ampproject/remapping@2.3.0: - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: '>=6.0.0' } - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - dev: true - /@ardatan/relay-compiler@12.0.0(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==, - } + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} hasBin: true + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: - graphql: '*' - dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/parser': 7.24.0 - '@babel/runtime': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 - babel-preset-fbjs: 3.4.0(@babel/core@7.24.0) - chalk: 4.1.2 - fb-watchman: 2.0.2 - fbjs: 3.0.5(encoding@0.1.13) - glob: 7.2.3 - graphql: 16.8.1 - immutable: 3.7.6 - invariant: 2.2.4 - nullthrows: 1.1.1 - relay-runtime: 12.0.0(encoding@0.1.13) - signedsource: 1.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.25.6': + resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.4': + resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + 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 + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + 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 + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@noble/curves@1.6.0': + resolution: {integrity: sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@redocly/ajv@8.11.0': + resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} + + '@redocly/config@0.10.1': + resolution: {integrity: sha512-H3LnKVGzOaxskwJu8pmJYwBOWjP61qOK7TuTrbafqArDVckE06fhA6l0nO4KvBbjLPjy1Al7UnlxOu23V4Nl0w==} + + '@redocly/openapi-core@1.22.1': + resolution: {integrity: sha512-pjr456gJzrbwPvBjFKlWOd9nZEcr/dp6XSH0c8ijWGWv5K+V0vpUUy2zaTAVsFAoCydx1miEoOcbLhWQ9WC2nw==} + engines: {node: '>=14.19.0', npm: '>=7.0.0'} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@solana/buffer-layout@4.0.1': + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + + '@solana/web3.js@1.95.3': + resolution: {integrity: sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/jsonwebtoken@9.0.6': + resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} + + '@types/mime-types@2.1.4': + resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@22.5.4': + resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/strip-bom@3.0.0': + resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} + + '@types/strip-json-comments@0.0.30': + resolution: {integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.3: + resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@5.1.0: + resolution: {integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001658: + resolution: {integrity: sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cjs-module-lexer@1.4.0: + resolution: {integrity: sha512-N1NGmowPlGBLsOZLPvm48StN04V4YvQRL0i6b7ctrVY3epjP/ct7hFLOItz6pDIvRjwpfPxi52a2UWV2ziir8g==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dynamic-dedupe@0.3.0: + resolution: {integrity: sha512-ssuANeD+z97meYOqd50e04Ze5qp4bPqo8cCkI4TRjZkzAUgIDTrXV1R8QCdINpiI+hw14+rYazvTRdQrz0/rFQ==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.16: + resolution: {integrity: sha512-2gQpi2WYobXmz2q23FrOBYTLcI1O/P4heW3eqX+ldmPVDQELRqhiebV380EhlGG12NtnX1qbK/FHpN0ba+7bLA==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-standard-with-typescript@39.1.1: + resolution: {integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==} + deprecated: Please use eslint-config-love, instead. + peerDependencies: + '@typescript-eslint/eslint-plugin': ^6.4.0 + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + typescript: '*' + + eslint-config-standard@17.1.0: + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.11.0: + resolution: {integrity: sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-import@2.30.0: + resolution: {integrity: sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-n@16.6.2: + resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-promise@6.6.0: + resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jayson@4.1.2: + resolution: {integrity: sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA==} + engines: {node: '>=8'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + 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 + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + openapi-fetch@0.10.6: + resolution: {integrity: sha512-6xXfvIEL/POtLGOaFPsp3O+pDe+J3DZYxbD9BrsQHXOTeNK8z/gsWHT6adUy1KcpQOhmkerMzlQrJM6DbN55dQ==} + + openapi-typescript-helpers@0.0.11: + resolution: {integrity: sha512-xofUHlVFq+BMquf3nh9I8N2guHckW6mrDO/F3kaFgrL7MGbjldDnQ9TIT+rkH/+H0LiuO+RuZLnNmsJwsjwUKg==} + + openapi-typescript@7.4.0: + resolution: {integrity: sha512-u4iVuTGkzKG4rHFUMA/IFXTks9tYVQzkowZsScMOdzJSvIF10qSNySWHTwnN2fD+MEeWFAM8i1f3IUBlgS92eQ==} + hasBin: true + peerDependencies: + typescript: ^5.x + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + engines: {node: '>=14'} + hasBin: true + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rpc-websockets@9.0.2: + resolution: {integrity: sha512-YzggvfItxMY3Lwuax5rC18inhbjJv9Py7JXRHxTIi94JOLrqBsSsUUc5bbl5W6c11tXhdfpDPK0KzBhoGe8jjw==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + synckit@0.9.1: + resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + engines: {node: ^14.18.0 || >=16.0.0} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-jest@29.2.5: + resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-node-dev@2.0.0: + resolution: {integrity: sha512-ywMrhCfH6M75yftYvrvNarLEY+SUXtUvU8/0Z6llrHQVBx12GiFk5sStF8UdfE/yfzk9IAq7O5EEbTQsxlBI8w==} + engines: {node: '>=0.8.0'} + hasBin: true + peerDependencies: + node-notifier: '*' + typescript: '*' + peerDependenciesMeta: + node-notifier: + optional: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig@7.0.0: + resolution: {integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@4.26.0: + resolution: {integrity: sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==} + engines: {node: '>=16'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + 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 + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} - /@babel/code-frame@7.23.5: - resolution: - { - integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==, - } - engines: { node: '>=6.9.0' } + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': dependencies: - '@babel/highlight': 7.23.4 - chalk: 2.4.2 - dev: true - - /@babel/compat-data@7.23.5: - resolution: - { - integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/core@7.24.0: - resolution: - { - integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==, - } - engines: { node: '>=6.9.0' } + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helpers': 7.24.0 - '@babel/parser': 7.24.0 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/generator@7.23.6: - resolution: - { - integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==, - } - engines: { node: '>=6.9.0' } + '@babel/generator@7.25.6': dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.6 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: true - - /@babel/helper-annotate-as-pure@7.22.5: - resolution: - { - integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-compilation-targets@7.23.6: - resolution: - { - integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.24.0): - resolution: - { - integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 + + '@babel/helper-compilation-targets@7.25.2': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: - { - integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: - { - integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: - { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: - { - integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-module-imports@7.22.15: - resolution: - { - integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-optimise-call-expression@7.22.5: - resolution: - { - integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-plugin-utils@7.24.0: - resolution: - { - integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/helper-replace-supers@7.22.20(@babel/core@7.24.0): - resolution: - { - integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 + + '@babel/helper-module-imports@7.24.7': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.23.0 - '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: - { - integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: - { - integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: - { - integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@babel/helper-string-parser@7.23.4: - resolution: - { - integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/helper-validator-identifier@7.22.20: - resolution: - { - integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/helper-validator-option@7.23.5: - resolution: - { - integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==, - } - engines: { node: '>=6.9.0' } - dev: true - - /@babel/helpers@7.24.0: - resolution: - { - integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.0 - '@babel/types': 7.24.0 + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 transitivePeerDependencies: - supports-color - dev: true - /@babel/highlight@7.23.4: - resolution: - { - integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.24.0: - resolution: - { - integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==, - } - engines: { node: '>=6.0.0' } - hasBin: true + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: - '@babel/types': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.0): - resolution: - { - integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, - } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - dev: true - - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.0): - resolution: - { - integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==, - } - engines: { node: '>=6.9.0' } - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.23.5 - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/helper-plugin-utils@7.24.8': {} - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helper-simple-access@7.24.7': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.0): - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/helper-string-parser@7.24.8': {} - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/helper-validator-identifier@7.24.7': {} - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/helper-validator-option@7.24.8': {} - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/helpers@7.25.6': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/highlight@7.24.7': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/parser@7.25.6': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/types': 7.25.6 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.0): - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-classes@7.23.8(@babel/core@7.24.0): - resolution: - { - integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - '@babel/helper-split-export-declaration': 7.22.6 - globals: 11.12.0 - dev: true - - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/template': 7.24.0 - dev: true - - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - dev: true - - /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.24.0): - resolution: - { - integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true - - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true - - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-simple-access': 7.22.5 - dev: true - - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.24.0) - dev: true - - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.0): - resolution: - { - integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.0 - dev: true - - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/runtime@7.25.6': dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true - - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.0 - '@babel/helper-plugin-utils': 7.24.0 - dev: true + regenerator-runtime: 0.14.1 - /@babel/runtime@7.24.0: - resolution: - { - integrity: sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==, - } - engines: { node: '>=6.9.0' } + '@babel/template@7.25.0': dependencies: - regenerator-runtime: 0.14.1 + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 - /@babel/template@7.24.0: - resolution: - { - integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - dev: true - - /@babel/traverse@7.24.0: - resolution: - { - integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==, - } - engines: { node: '>=6.9.0' } - dependencies: - '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.6 - '@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.22.6 - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - debug: 4.3.4 + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: true - /@babel/types@7.24.0: - resolution: - { - integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==, - } - engines: { node: '>=6.9.0' } + '@babel/types@7.25.6': dependencies: - '@babel/helper-string-parser': 7.23.4 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - dev: true - - /@bcoe/v8-coverage@0.2.3: - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - dev: true - - /@commitlint/cli@18.6.1(@types/node@20.11.26)(typescript@5.4.2): - resolution: - { - integrity: sha512-5IDE0a+lWGdkOvKH892HHAZgbAjcj1mT5QrfA/SVbLJV/BbBMGyKN0W5mhgjekPJJwEQdVNvhl9PwUacY58Usw==, - } - engines: { node: '>=v18' } - hasBin: true - dependencies: - '@commitlint/format': 18.6.1 - '@commitlint/lint': 18.6.1 - '@commitlint/load': 18.6.1(@types/node@20.11.26)(typescript@5.4.2) - '@commitlint/read': 18.6.1 - '@commitlint/types': 18.6.1 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - typescript - dev: true - - /@commitlint/config-conventional@18.6.3: - resolution: - { - integrity: sha512-8ZrRHqF6je+TRaFoJVwszwnOXb/VeYrPmTwPhf0WxpzpGTcYy1p0SPyZ2eRn/sRi/obnWAcobtDAq6+gJQQNhQ==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - conventional-changelog-conventionalcommits: 7.0.2 - dev: true - - /@commitlint/config-validator@18.6.1: - resolution: - { - integrity: sha512-05uiToBVfPhepcQWE1ZQBR/Io3+tb3gEotZjnI4tTzzPk16NffN6YABgwFQCLmzZefbDcmwWqJWc2XT47q7Znw==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - ajv: 8.12.0 - dev: true - - /@commitlint/ensure@18.6.1: - resolution: - { - integrity: sha512-BPm6+SspyxQ7ZTsZwXc7TRQL5kh5YWt3euKmEIBZnocMFkJevqs3fbLRb8+8I/cfbVcAo4mxRlpTPfz8zX7SnQ==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - dev: true - - /@commitlint/execute-rule@18.6.1: - resolution: - { - integrity: sha512-7s37a+iWyJiGUeMFF6qBlyZciUkF8odSAnHijbD36YDctLhGKoYltdvuJ/AFfRm6cBLRtRk9cCVPdsEFtt/2rg==, - } - engines: { node: '>=v18' } - dev: true - - /@commitlint/format@18.6.1: - resolution: - { - integrity: sha512-K8mNcfU/JEFCharj2xVjxGSF+My+FbUHoqR+4GqPGrHNqXOGNio47ziiR4HQUPKtiNs05o8/WyLBoIpMVOP7wg==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - chalk: 4.1.2 - dev: true - - /@commitlint/is-ignored@18.6.1: - resolution: - { - integrity: sha512-MOfJjkEJj/wOaPBw5jFjTtfnx72RGwqYIROABudOtJKW7isVjFe9j0t8xhceA02QebtYf4P/zea4HIwnXg8rvA==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - semver: 7.6.0 - dev: true - - /@commitlint/lint@18.6.1: - resolution: - { - integrity: sha512-8WwIFo3jAuU+h1PkYe5SfnIOzp+TtBHpFr4S8oJWhu44IWKuVx6GOPux3+9H1iHOan/rGBaiacicZkMZuluhfQ==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/is-ignored': 18.6.1 - '@commitlint/parse': 18.6.1 - '@commitlint/rules': 18.6.1 - '@commitlint/types': 18.6.1 - dev: true - - /@commitlint/load@18.6.1(@types/node@20.11.26)(typescript@5.4.2): - resolution: - { - integrity: sha512-p26x8734tSXUHoAw0ERIiHyW4RaI4Bj99D8YgUlVV9SedLf8hlWAfyIFhHRIhfPngLlCe0QYOdRKYFt8gy56TA==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/config-validator': 18.6.1 - '@commitlint/execute-rule': 18.6.1 - '@commitlint/resolve-extends': 18.6.1 - '@commitlint/types': 18.6.1 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.4.2) - cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.26)(cosmiconfig@8.3.6)(typescript@5.4.2) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - resolve-from: 5.0.0 - transitivePeerDependencies: - - '@types/node' - - typescript - dev: true - - /@commitlint/message@18.6.1: - resolution: - { - integrity: sha512-VKC10UTMLcpVjMIaHHsY1KwhuTQtdIKPkIdVEwWV+YuzKkzhlI3aNy6oo1eAN6b/D2LTtZkJe2enHmX0corYRw==, - } - engines: { node: '>=v18' } - dev: true - - /@commitlint/parse@18.6.1: - resolution: - { - integrity: sha512-eS/3GREtvVJqGZrwAGRwR9Gdno3YcZ6Xvuaa+vUF8j++wsmxrA2En3n0ccfVO2qVOLJC41ni7jSZhQiJpMPGOQ==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/types': 18.6.1 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - dev: true - - /@commitlint/read@18.6.1: - resolution: - { - integrity: sha512-ia6ODaQFzXrVul07ffSgbZGFajpe8xhnDeLIprLeyfz3ivQU1dIoHp7yz0QIorZ6yuf4nlzg4ZUkluDrGN/J/w==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/top-level': 18.6.1 - '@commitlint/types': 18.6.1 - git-raw-commits: 2.0.11 - minimist: 1.2.8 - dev: true - /@commitlint/resolve-extends@18.6.1: - resolution: - { - integrity: sha512-ifRAQtHwK+Gj3Bxj/5chhc4L2LIc3s30lpsyW67yyjsETR6ctHAHRu1FSpt0KqahK5xESqoJ92v6XxoDRtjwEQ==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/config-validator': 18.6.1 - '@commitlint/types': 18.6.1 - import-fresh: 3.3.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - resolve-global: 1.0.0 - dev: true - - /@commitlint/rules@18.6.1: - resolution: - { - integrity: sha512-kguM6HxZDtz60v/zQYOe0voAtTdGybWXefA1iidjWYmyUUspO1zBPQEmJZ05/plIAqCVyNUTAiRPWIBKLCrGew==, - } - engines: { node: '>=v18' } - dependencies: - '@commitlint/ensure': 18.6.1 - '@commitlint/message': 18.6.1 - '@commitlint/to-lines': 18.6.1 - '@commitlint/types': 18.6.1 - execa: 5.1.1 - dev: true - - /@commitlint/to-lines@18.6.1: - resolution: - { - integrity: sha512-Gl+orGBxYSNphx1+83GYeNy5N0dQsHBQ9PJMriaLQDB51UQHCVLBT/HBdOx5VaYksivSf5Os55TLePbRLlW50Q==, - } - engines: { node: '>=v18' } - dev: true - - /@commitlint/top-level@18.6.1: - resolution: - { - integrity: sha512-HyiHQZUTf0+r0goTCDs/bbVv/LiiQ7AVtz6KIar+8ZrseB9+YJAIo8HQ2IC2QT1y3N1lbW6OqVEsTHjbT6hGSw==, - } - engines: { node: '>=v18' } - dependencies: - find-up: 5.0.0 - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@commitlint/types@18.6.1: - resolution: - { - integrity: sha512-gwRLBLra/Dozj2OywopeuHj2ac26gjGkz2cZ+86cTJOdtWfiRRr4+e77ZDAGc6MDWxaWheI+mAV5TLWWRwqrFg==, - } - engines: { node: '>=v18' } + '@cspotcode/source-map-support@0.8.1': dependencies: - chalk: 4.1.2 - dev: true - - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@jridgewell/trace-mapping': 0.3.9 + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/regexpp@4.10.0: - resolution: - { - integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - dev: true - - /@eslint/eslintrc@2.1.4: - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) espree: 9.6.1 globals: 13.24.0 - ignore: 5.3.1 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - - /@eslint/js@8.57.0: - resolution: - { - integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /@ethersproject/abi@5.7.0: - resolution: - { - integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==, - } + + '@eslint/js@8.57.0': {} + + '@ethersproject/abi@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -1296,13 +2857,8 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false - /@ethersproject/abstract-provider@5.7.0: - resolution: - { - integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==, - } + '@ethersproject/abstract-provider@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -1311,87 +2867,47 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 - dev: false - /@ethersproject/abstract-signer@5.7.0: - resolution: - { - integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==, - } + '@ethersproject/abstract-signer@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false - /@ethersproject/address@5.7.0: - resolution: - { - integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==, - } + '@ethersproject/address@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/rlp': 5.7.0 - dev: false - /@ethersproject/base64@5.7.0: - resolution: - { - integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==, - } + '@ethersproject/base64@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 - dev: false - /@ethersproject/basex@5.7.0: - resolution: - { - integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==, - } + '@ethersproject/basex@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/properties': 5.7.0 - dev: false - /@ethersproject/bignumber@5.7.0: - resolution: - { - integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==, - } + '@ethersproject/bignumber@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 bn.js: 5.2.1 - dev: false - /@ethersproject/bytes@5.7.0: - resolution: - { - integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==, - } + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/constants@5.7.0: - resolution: - { - integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==, - } + '@ethersproject/constants@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 - dev: false - /@ethersproject/contracts@5.7.0: - resolution: - { - integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==, - } + '@ethersproject/contracts@5.7.0': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -1403,13 +2919,8 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/transactions': 5.7.0 - dev: false - /@ethersproject/hash@5.7.0: - resolution: - { - integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==, - } + '@ethersproject/hash@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -1420,13 +2931,8 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false - /@ethersproject/hdnode@5.7.0: - resolution: - { - integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==, - } + '@ethersproject/hdnode@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/basex': 5.7.0 @@ -1440,13 +2946,8 @@ packages: '@ethersproject/strings': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false - /@ethersproject/json-wallets@5.7.0: - resolution: - { - integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==, - } + '@ethersproject/json-wallets@5.7.0': dependencies: '@ethersproject/abstract-signer': 5.7.0 '@ethersproject/address': 5.7.0 @@ -1461,58 +2962,28 @@ packages: '@ethersproject/transactions': 5.7.0 aes-js: 3.0.0 scrypt-js: 3.0.1 - dev: false - /@ethersproject/keccak256@5.7.0: - resolution: - { - integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==, - } + '@ethersproject/keccak256@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 js-sha3: 0.8.0 - dev: false - /@ethersproject/logger@5.7.0: - resolution: - { - integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==, - } - dev: false + '@ethersproject/logger@5.7.0': {} - /@ethersproject/networks@5.7.1: - resolution: - { - integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==, - } + '@ethersproject/networks@5.7.1': dependencies: '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/pbkdf2@5.7.0: - resolution: - { - integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==, - } + '@ethersproject/pbkdf2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/sha2': 5.7.0 - dev: false - /@ethersproject/properties@5.7.0: - resolution: - { - integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==, - } + '@ethersproject/properties@5.7.0': dependencies: '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/providers@5.7.2: - resolution: - { - integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==, - } + '@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -1533,48 +3004,28 @@ packages: '@ethersproject/transactions': 5.7.0 '@ethersproject/web': 5.7.1 bech32: 1.1.4 - ws: 7.4.6 + ws: 7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /@ethersproject/random@5.7.0: - resolution: - { - integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==, - } + '@ethersproject/random@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/rlp@5.7.0: - resolution: - { - integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==, - } + '@ethersproject/rlp@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/sha2@5.7.0: - resolution: - { - integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==, - } + '@ethersproject/sha2@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 hash.js: 1.1.7 - dev: false - /@ethersproject/signing-key@5.7.0: - resolution: - { - integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==, - } + '@ethersproject/signing-key@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 @@ -1582,13 +3033,8 @@ packages: bn.js: 5.2.1 elliptic: 6.5.4 hash.js: 1.1.7 - dev: false - /@ethersproject/solidity@5.7.0: - resolution: - { - integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==, - } + '@ethersproject/solidity@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -1596,24 +3042,14 @@ packages: '@ethersproject/logger': 5.7.0 '@ethersproject/sha2': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false - /@ethersproject/strings@5.7.0: - resolution: - { - integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==, - } + '@ethersproject/strings@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/transactions@5.7.0: - resolution: - { - integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==, - } + '@ethersproject/transactions@5.7.0': dependencies: '@ethersproject/address': 5.7.0 '@ethersproject/bignumber': 5.7.0 @@ -1624,24 +3060,14 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/signing-key': 5.7.0 - dev: false - /@ethersproject/units@5.7.0: - resolution: - { - integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==, - } + '@ethersproject/units@5.7.0': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/constants': 5.7.0 '@ethersproject/logger': 5.7.0 - dev: false - /@ethersproject/wallet@5.7.0: - resolution: - { - integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==, - } + '@ethersproject/wallet@5.7.0': dependencies: '@ethersproject/abstract-provider': 5.7.0 '@ethersproject/abstract-signer': 5.7.0 @@ -1658,494 +3084,69 @@ packages: '@ethersproject/signing-key': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wordlists': 5.7.0 - dev: false - /@ethersproject/web@5.7.1: - resolution: - { - integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==, - } + '@ethersproject/web@5.7.1': dependencies: '@ethersproject/base64': 5.7.0 '@ethersproject/bytes': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false - /@ethersproject/wordlists@5.7.0: - resolution: - { - integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==, - } + '@ethersproject/wordlists@5.7.0': dependencies: '@ethersproject/bytes': 5.7.0 '@ethersproject/hash': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - dev: false - - /@graphql-codegen/core@4.0.2(graphql@16.8.1): - resolution: - { - integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-tools/schema': 10.0.3(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-codegen/plugin-helpers@2.7.2(graphql@16.8.1): - resolution: - { - integrity: sha512-kln2AZ12uii6U59OQXdjLk5nOlh1pHis1R98cDZGFnfaiAbX9V3fxcZ1MMJkB7qFUymTALzyjZoXXdyVmPMfRg==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-tools/utils': 8.13.1(graphql@16.8.1) - change-case-all: 1.0.14 - common-tags: 1.8.2 - graphql: 16.8.1 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 - dev: true - - /@graphql-codegen/plugin-helpers@3.1.2(graphql@16.8.1): - resolution: - { - integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - change-case-all: 1.0.15 - common-tags: 1.8.2 - graphql: 16.8.1 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.4.1 - dev: true - - /@graphql-codegen/plugin-helpers@5.0.3(graphql@16.8.1): - resolution: - { - integrity: sha512-yZ1rpULIWKBZqCDlvGIJRSyj1B2utkEdGmXZTBT/GVayP4hyRYlkd36AJV/LfEsVD8dnsKL5rLz2VTYmRNlJ5Q==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - change-case-all: 1.0.15 - common-tags: 1.8.2 - graphql: 16.8.1 - import-from: 4.0.0 - lodash: 4.17.21 - tslib: 2.6.2 - dev: true - - /@graphql-codegen/schema-ast@4.0.2(graphql@16.8.1): - resolution: - { - integrity: sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-codegen/typed-document-node@5.0.6(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-US0J95hOE2/W/h42w4oiY+DFKG7IetEN1mQMgXXeat1w6FAR5PlIz4JrRrEkiVfVetZ1g7K78SOwBD8/IJnDiA==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 5.1.0(encoding@0.1.13)(graphql@16.8.1) - auto-bind: 4.0.0 - change-case-all: 1.0.15 - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/typescript-graphql-request@6.2.0(encoding@0.1.13)(graphql-request@6.1.0)(graphql-tag@2.12.6)(graphql@16.8.1): - resolution: - { - integrity: sha512-nkp5tr4PrC/+2QkQqi+IB+bc7AavUnUvXPW8MC93HZRvwfMGy6m2Oo7b9JCPZ3vhNpqT2VDWOn/zIZXKz6zJAw==, - } - engines: { node: '>= 16.0.0' } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - graphql-request: ^6.0.0 - graphql-tag: ^2.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 2.13.1(encoding@0.1.13)(graphql@16.8.1) - auto-bind: 4.0.0 - graphql: 16.8.1 - graphql-request: 6.1.0(encoding@0.1.13)(graphql@16.8.1) - graphql-tag: 2.12.6(graphql@16.8.1) - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/typescript-operations@4.2.0(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-lmuwYb03XC7LNRS8oo9M4/vlOrq/wOKmTLBHlltK2YJ1BO/4K/Q9Jdv/jDmJpNydHVR1fmeF4wAfsIp1f9JibA==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.6(encoding@0.1.13)(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 5.1.0(encoding@0.1.13)(graphql@16.8.1) - auto-bind: 4.0.0 - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/typescript-resolvers@4.0.6(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-7OBFzZ2xSkYgMgcc1A3xNqbBHHSQXBesLrG86Sh+Jj0PQQB3Om8j1HSFs64PD/l5Kri2dXgm3oim/89l3Rl3lw==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-codegen/typescript': 4.0.6(encoding@0.1.13)(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 5.1.0(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - auto-bind: 4.0.0 - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/typescript@4.0.6(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-IBG4N+Blv7KAL27bseruIoLTjORFCT3r+QYyMC3g11uY3/9TPpaUyjSdF70yBe5GIQ6dAgDU+ENUC1v7EPi0rw==, - } - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-codegen/schema-ast': 4.0.2(graphql@16.8.1) - '@graphql-codegen/visitor-plugin-common': 5.1.0(encoding@0.1.13)(graphql@16.8.1) - auto-bind: 4.0.0 - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/visitor-plugin-common@2.13.1(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-mD9ufZhDGhyrSaWQGrU1Q1c5f01TeWtSWy/cDwXYjJcHIj1Y/DG2x0tOflEfCvh5WcnmHNIw4lzDsg1W7iFJEg==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 2.7.2(graphql@16.8.1) - '@graphql-tools/optimize': 1.4.0(graphql@16.8.1) - '@graphql-tools/relay-operation-optimizer': 6.5.18(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': 8.13.1(graphql@16.8.1) - auto-bind: 4.0.0 - change-case-all: 1.0.14 - dependency-graph: 0.11.0 - graphql: 16.8.1 - graphql-tag: 2.12.6(graphql@16.8.1) - parse-filepath: 1.0.2 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-codegen/visitor-plugin-common@5.1.0(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-eamQxtA9bjJqI2lU5eYoA1GbdMIRT2X8m8vhWYsVQVWD3qM7sx/IqJU0kx0J3Vd4/CSd36BzL6RKwksibytDIg==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.8.1) - '@graphql-tools/optimize': 2.0.0(graphql@16.8.1) - '@graphql-tools/relay-operation-optimizer': 7.0.1(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - auto-bind: 4.0.0 - change-case-all: 1.0.15 - dependency-graph: 0.11.0 - graphql: 16.8.1 - graphql-tag: 2.12.6(graphql@16.8.1) - parse-filepath: 1.0.2 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-tools/merge@9.0.3(graphql@16.8.1): - resolution: - { - integrity: sha512-FeKv9lKLMwqDu0pQjPpF59GY3HReUkWXKsMIuMuJQOKh9BETu7zPEFUELvcw8w+lwZkl4ileJsHXC9+AnsT2Lw==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/optimize@1.4.0(graphql@16.8.1): - resolution: - { - integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==, - } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/optimize@2.0.0(graphql@16.8.1): - resolution: - { - integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - /@graphql-tools/relay-operation-optimizer@6.5.18(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==, - } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@humanwhocodes/config-array@0.11.14': dependencies: - '@ardatan/relay-compiler': 12.0.0(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': 9.2.1(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - - /@graphql-tools/relay-operation-optimizer@7.0.1(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-y0ZrQ/iyqWZlsS/xrJfSir3TbVYJTYmMOu4TaSz6F4FRDTQ3ie43BlKkhf04rC28pnUOS4BO9pDcAo1D30l5+A==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@ardatan/relay-compiler': 12.0.0(encoding@0.1.13)(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7(supports-color@9.4.0) + minimatch: 3.1.2 transitivePeerDependencies: - - encoding - supports-color - dev: true - - /@graphql-tools/schema@10.0.3(graphql@16.8.1): - resolution: - { - integrity: sha512-p28Oh9EcOna6i0yLaCFOnkcBDQECVf3SCexT6ktb86QNj9idnkhI+tCxnwZDh58Qvjd2nURdkbevvoZkvxzCog==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-tools/merge': 9.0.3(graphql@16.8.1) - '@graphql-tools/utils': 10.1.2(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - value-or-promise: 1.0.12 - dev: true - - /@graphql-tools/utils@10.1.2(graphql@16.8.1): - resolution: - { - integrity: sha512-fX13CYsDnX4yifIyNdiN0cVygz/muvkreWWem6BBw130+ODbRRgfiVveL0NizCEnKXkpvdeTy9Bxvo9LIKlhrw==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - cross-inspect: 1.0.0 - dset: 3.1.3 - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-tools/utils@8.13.1(graphql@16.8.1): - resolution: - { - integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==, - } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - /@graphql-tools/utils@9.2.1(graphql@16.8.1): - resolution: - { - integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==, - } - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /@graphql-typed-document-node/core@3.2.0(graphql@16.8.1): - resolution: - { - integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==, - } - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - dependencies: - graphql: 16.8.1 + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/config-array@0.11.14: - resolution: - { - integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==, - } - engines: { node: '>=10.10.0' } - dependencies: - '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: '>=12.22' } - dev: true - - /@humanwhocodes/object-schema@2.0.2: - resolution: - { - integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==, - } - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: '>=8' } + '@humanwhocodes/object-schema@2.0.3': {} + + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: '>=8' } - dev: true - - /@jest/console@29.7.0: - resolution: - { - integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - dev: true - - /@jest/core@29.7.0: - resolution: - { - integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==, - } - 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 + + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4))': 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': 20.11.26 + '@types/node': 22.5.4 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.11.26) + jest-config: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2157,7 +3158,7 @@ packages: jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 @@ -2165,65 +3166,35 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /@jest/environment@29.7.0: - resolution: - { - integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 jest-mock: 29.7.0 - dev: true - /@jest/expect-utils@29.7.0: - resolution: - { - integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - dev: true - /@jest/expect@29.7.0: - resolution: - { - integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@29.7.0: - resolution: - { - integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.11.26 + '@types/node': 22.5.4 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: true - /@jest/globals@29.7.0: - resolution: - { - integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -2231,19 +3202,8 @@ packages: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - - /@jest/reporters@29.7.0: - resolution: - { - integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==, - } - 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 + + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -2251,14 +3211,14 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.2 + istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.7 @@ -2268,67 +3228,37 @@ packages: slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.2.0 + v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@29.6.3: - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - dev: true - /@jest/source-map@29.6.3: - resolution: - { - integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 - dev: true - /@jest/test-result@29.7.0: - resolution: - { - integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - dev: true - /@jest/test-sequencer@29.7.0: - resolution: - { - integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 - dev: true - /@jest/transform@29.7.0: - resolution: - { - integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.25.2 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -2339,173 +3269,111 @@ packages: jest-haste-map: 29.7.0 jest-regex-util: 29.6.3 jest-util: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@29.6.3: - resolution: - { - integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.11.26 - '@types/yargs': 17.0.32 + '@types/node': 22.5.4 + '@types/yargs': 17.0.33 chalk: 4.1.2 - dev: true - /@jridgewell/gen-mapping@0.3.5: - resolution: - { - integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, - } - engines: { node: '>=6.0.0' } + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - dev: true - - /@jridgewell/resolve-uri@3.1.2: - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: '>=6.0.0' } - dev: true - - /@jridgewell/set-array@1.2.1: - resolution: - { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: '>=6.0.0' } - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - dev: true - - /@jridgewell/trace-mapping@0.3.25: - resolution: - { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, - } + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - - /@noble/curves@1.3.0: - resolution: - { - integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==, - } - dependencies: - '@noble/hashes': 1.3.3 - dev: false - - /@noble/hashes@1.3.3: - resolution: - { - integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==, - } - engines: { node: '>= 16' } - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: '>= 8' } + '@jridgewell/sourcemap-codec': 1.5.0 + + '@noble/curves@1.6.0': + dependencies: + '@noble/hashes': 1.5.0 + + '@noble/hashes@1.5.0': {} + + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true - - /@nodelib/fs.stat@2.0.5: - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: '>= 8' } - dev: true - - /@nodelib/fs.walk@1.2.8: - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: '>= 8' } + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - dev: true - - /@pkgr/core@0.1.1: - resolution: - { - integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - dev: true - - /@sinclair/typebox@0.27.8: - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - dev: true - - /@sinonjs/commons@3.0.1: - resolution: - { - integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==, - } + + '@pkgr/core@0.1.1': {} + + '@redocly/ajv@8.11.0': + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + + '@redocly/config@0.10.1': {} + + '@redocly/openapi-core@1.22.1(supports-color@9.4.0)': + dependencies: + '@redocly/ajv': 8.11.0 + '@redocly/config': 0.10.1 + colorette: 1.4.0 + https-proxy-agent: 7.0.5(supports-color@9.4.0) + js-levenshtein: 1.1.6 + js-yaml: 4.1.0 + lodash.isequal: 4.5.0 + minimatch: 5.1.6 + node-fetch: 2.7.0 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - encoding + - supports-color + + '@rtsao/scc@1.1.0': {} + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - dev: true - /@sinonjs/fake-timers@10.3.0: - resolution: - { - integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==, - } + '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 - dev: true - /@solana/buffer-layout@4.0.1: - resolution: - { - integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==, - } - engines: { node: '>=5.10' } + '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 - dev: false - /@solana/web3.js@1.91.0(encoding@0.1.13): - resolution: - { - integrity: sha512-iqOL9RjNra0TM9BbQWxBRUcZUiNmCJJO+vXLp0GiELUJhbNAoE/K6OV6s+gNEsC13dslvKtfA4mmzRnZNWXtIQ==, - } + '@solana/web3.js@1.95.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.24.0 - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 + '@babel/runtime': 7.25.6 + '@noble/curves': 1.6.0 + '@noble/hashes': 1.5.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.5.0 bigint-buffer: 1.1.5 @@ -2514,1434 +3382,541 @@ packages: bs58: 4.0.1 buffer: 6.0.3 fast-stable-stringify: 1.0.0 - jayson: 4.1.0 - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 7.9.0 - superstruct: 0.14.2 + jayson: 4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.0.2 + superstruct: 2.0.2 transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - dev: false - /@types/babel__core@7.20.5: - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.7.0 + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.5 - dev: true - - /@types/babel__generator@7.6.8: - resolution: - { - integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==, - } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@types/babel__template@7.4.4: - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - dependencies: - '@babel/parser': 7.24.0 - '@babel/types': 7.24.0 - dev: true - - /@types/babel__traverse@7.20.5: - resolution: - { - integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==, - } - dependencies: - '@babel/types': 7.24.0 - dev: true - - /@types/connect@3.4.38: - resolution: - { - integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, - } - dependencies: - '@types/node': 20.11.26 - dev: false - - /@types/graceful-fs@4.1.9: - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, - } - dependencies: - '@types/node': 20.11.26 - dev: true - - /@types/istanbul-lib-coverage@2.0.6: - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } - dev: true - - /@types/istanbul-lib-report@3.0.3: - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.25.6 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.25.6 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.5.4 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.5.4 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - dev: true - /@types/istanbul-reports@3.0.4: - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } + '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - dev: true - /@types/jest@29.5.12: - resolution: - { - integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==, - } + '@types/jest@29.5.12': dependencies: expect: 29.7.0 pretty-format: 29.7.0 - dev: true - - /@types/json-schema@7.0.15: - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - dev: true - - /@types/json5@0.0.29: - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - dev: true - - /@types/minimist@1.2.5: - resolution: - { - integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==, - } - dev: true - - /@types/node@12.20.55: - resolution: - { - integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==, - } - dev: false - - /@types/node@20.11.26: - resolution: - { - integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==, - } - dependencies: - undici-types: 5.26.5 - - /@types/normalize-package-data@2.4.4: - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - dev: true - - /@types/semver@7.5.8: - resolution: - { - integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, - } - dev: true - - /@types/stack-utils@2.0.3: - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - dev: true - - /@types/ws@7.4.7: - resolution: - { - integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==, - } - dependencies: - '@types/node': 20.11.26 - dev: false - - /@types/yargs-parser@21.0.3: - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - dev: true - - /@types/yargs@17.0.32: - resolution: - { - integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==, - } + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/jsonwebtoken@9.0.6': + dependencies: + '@types/node': 22.5.4 + + '@types/mime-types@2.1.4': {} + + '@types/node@12.20.55': {} + + '@types/node@22.5.4': + dependencies: + undici-types: 6.19.8 + + '@types/semver@7.5.8': {} + + '@types/stack-utils@2.0.3': {} + + '@types/strip-bom@3.0.0': {} + + '@types/strip-json-comments@0.0.30': {} + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 22.5.4 + + '@types/ws@8.5.12': + dependencies: + '@types/node': 22.5.4 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': dependencies: '@types/yargs-parser': 21.0.3 - dev: true - - /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.0 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 transitivePeerDependencies: - supports-color - dev: true - - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + + '@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.0 - typescript: 5.4.2 + optionalDependencies: + typescript: 5.5.4 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: - { - integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } + '@typescript-eslint/scope-manager@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - dev: true - - /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) - '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.4.2) - debug: 4.3.4 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.7(supports-color@9.4.0) eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 transitivePeerDependencies: - supports-color - dev: true - - /@typescript-eslint/types@6.21.0: - resolution: - { - integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - dev: true - - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.2): - resolution: - { - integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + + '@typescript-eslint/types@6.21.0': {} + + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.0 - ts-api-utils: 1.3.0(typescript@5.4.2) - typescript: 5.4.2 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 transitivePeerDependencies: - supports-color - dev: true - - /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==, - } - engines: { node: ^16.0.0 || >=18.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.5.4) eslint: 8.57.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: - { - integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==, - } - engines: { node: ^16.0.0 || >=18.0.0 } + '@typescript-eslint/visitor-keys@6.21.0': dependencies: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 - dev: true - - /@ungap/structured-clone@1.2.0: - resolution: - { - integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, - } - dev: true - - /JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true + + '@ungap/structured-clone@1.2.0': {} + + JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 through: 2.3.8 - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.3 - dev: true + acorn: 8.12.1 - /acorn@8.11.3: - resolution: - { - integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==, - } - engines: { node: '>=0.4.0' } - hasBin: true - dev: true - - /aes-js@3.0.0: - resolution: - { - integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==, - } - dev: false - - /agentkeepalive@4.5.0: - resolution: - { - integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==, - } - engines: { node: '>= 8.0.0' } + acorn-walk@8.3.3: + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + aes-js@3.0.0: {} + + agent-base@7.1.1(supports-color@9.4.0): + dependencies: + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: dependencies: humanize-ms: 1.2.1 - dev: false - /ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /ajv@8.12.0: - resolution: - { - integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==, - } - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: '>=8' } + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - dev: true - - /ansi-escapes@6.2.0: - resolution: - { - integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==, - } - engines: { node: '>=14.16' } - dependencies: - type-fest: 3.13.1 - dev: true - - /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: '>=8' } - dev: true - - /ansi-regex@6.0.1: - resolution: - { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, - } - engines: { node: '>=12' } - dev: true - - /ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: '>=4' } + + ansi-regex@5.0.1: {} + + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: '>=8' } + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - dev: true - - /ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: '>=10' } - dev: true - - /ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: '>=12' } - dev: true - - /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: '>= 8' } + + ansi-styles@5.2.0: {} + + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true - /argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } + arg@4.1.3: {} + + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - dev: true - - /argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - dev: true - - /array-buffer-byte-length@1.0.1: - resolution: - { - integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==, - } - engines: { node: '>= 0.4' } + + argparse@2.0.1: {} + + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - - /array-ify@1.0.0: - resolution: - { - integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, - } - dev: true - - /array-includes@3.1.7: - resolution: - { - integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==, - } - engines: { node: '>= 0.4' } + + array-includes@3.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - - /array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: '>=8' } - dev: true - - /array.prototype.filter@1.0.3: - resolution: - { - integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==, - } - engines: { node: '>= 0.4' } - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.22.5 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: true - /array.prototype.findlastindex@1.2.4: - resolution: - { - integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==, - } - engines: { node: '>= 0.4' } + array-union@2.1.0: {} + + array.prototype.findlastindex@1.2.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: - { - integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==, - } - engines: { node: '>= 0.4' } + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: - { - integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==, - } - engines: { node: '>= 0.4' } + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: - { - integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==, - } - engines: { node: '>= 0.4' } + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - - /arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: '>=0.10.0' } - dev: true - - /asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } - dev: true - - /auto-bind@4.0.0: - resolution: - { - integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==, - } - engines: { node: '>=8' } - dev: true - - /available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: '>= 0.4' } + + async@3.2.6: {} + + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - dev: true - - /babel-jest@29.7.0(@babel/core@7.24.0): - resolution: - { - integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - '@babel/core': ^7.8.0 + + babel-jest@29.7.0(@babel/core@7.25.2): dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.25.2 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.0) + babel-preset-jest: 29.6.3(@babel/core@7.25.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: '>=8' } + babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@29.6.3: - resolution: - { - integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + babel-plugin-jest-hoist@29.6.3: dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.5 - dev: true - - /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: - resolution: - { - integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==, - } - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.0): - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, - } - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.0) - dev: true - - /babel-preset-fbjs@3.4.0(@babel/core@7.24.0): - resolution: - { - integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==, - } - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.0) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.0) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.24.0) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.24.0) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.0) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.24.0) - babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.24.0): - resolution: - { - integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.24.0 + '@types/babel__traverse': 7.20.6 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + + babel-preset-jest@29.6.3(@babel/core@7.25.2): + dependencies: + '@babel/core': 7.25.2 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) - dev: true - - /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - dev: true - - /base-x@3.0.9: - resolution: - { - integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==, - } + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) + + balanced-match@1.0.2: {} + + base-x@3.0.10: dependencies: safe-buffer: 5.2.1 - dev: false - - /base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - dev: false - - /bech32@1.1.4: - resolution: - { - integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==, - } - dev: false - - /bigint-buffer@1.1.5: - resolution: - { - integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==, - } - engines: { node: '>= 10.0.0' } - requiresBuild: true + + base64-js@1.5.1: {} + + bech32@1.1.4: {} + + bigint-buffer@1.1.5: dependencies: bindings: 1.5.0 - dev: false - /bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } + binary-extensions@2.3.0: {} + + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 - dev: false - - /bn.js@4.12.0: - resolution: - { - integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==, - } - dev: false - - /bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - dev: false - - /borsh@0.7.0: - resolution: - { - integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==, - } + + bn.js@4.12.0: {} + + bn.js@5.2.1: {} + + borsh@0.7.0: dependencies: bn.js: 5.2.1 bs58: 4.0.1 text-encoding-utf-8: 1.0.2 - dev: false - /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true - /brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - dev: true - - /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: '>=8' } - dependencies: - fill-range: 7.0.1 - dev: true - - /brorand@1.1.0: - resolution: - { - integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, - } - dev: false - - /browserslist@4.23.0: - resolution: - { - integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browserslist@4.23.3: dependencies: - caniuse-lite: 1.0.30001597 - electron-to-chromium: 1.4.702 - node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) - dev: true + caniuse-lite: 1.0.30001658 + electron-to-chromium: 1.5.16 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) - /bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: '>= 6' } + bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 - dev: true - /bs58@4.0.1: - resolution: - { - integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==, - } + bs58@4.0.1: dependencies: - base-x: 3.0.9 - dev: false + base-x: 3.0.10 - /bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } + bser@2.1.1: dependencies: node-int64: 0.4.0 - dev: true - /buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - dev: true + buffer-from@1.1.2: {} - /buffer@6.0.3: - resolution: - { - integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==, - } + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - - /bufferutil@4.0.8: - resolution: - { - integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==, - } - engines: { node: '>=6.14.2' } - requiresBuild: true - dependencies: - node-gyp-build: 4.8.0 - dev: false - - /builtin-modules@3.3.0: - resolution: - { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, - } - engines: { node: '>=6' } - dev: true - - /builtins@5.0.1: - resolution: - { - integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==, - } - dependencies: - semver: 7.6.0 - dev: true - - /call-bind@1.0.7: - resolution: - { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, - } - engines: { node: '>= 0.4' } + + bufferutil@4.0.8: + dependencies: + node-gyp-build: 4.8.2 + optional: true + + builtin-modules@3.3.0: {} + + builtins@5.1.0: + dependencies: + semver: 7.6.3 + + call-bind@1.0.7: 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.2 - dev: true - - /callsites@3.1.0: - resolution: - { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, - } - engines: { node: '>=6' } - dev: true - - /camel-case@4.1.2: - resolution: - { - integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, - } - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - dev: true - - /camelcase-keys@6.2.2: - resolution: - { - integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, - } - engines: { node: '>=8' } - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - dev: true - - /camelcase@5.3.1: - resolution: - { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, - } - engines: { node: '>=6' } - dev: true - - /camelcase@6.3.0: - resolution: - { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, - } - engines: { node: '>=10' } - dev: true - - /caniuse-lite@1.0.30001597: - resolution: - { - integrity: sha512-7LjJvmQU6Sj7bL0j5b5WY/3n7utXUJvAe1lxhsHDbLmwX9mdL86Yjtr+5SRCyf8qME4M7pU2hswj0FpyBVCv9w==, - } - dev: true - - /capital-case@1.0.4: - resolution: - { - integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 - dev: true - - /chalk@2.4.2: - resolution: - { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, - } - engines: { node: '>=4' } + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001658: {} + + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - dev: true - /chalk@4.1.2: - resolution: - { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, - } - engines: { node: '>=10' } + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - - /chalk@5.3.0: - resolution: - { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, - } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - dev: true - - /change-case-all@1.0.14: - resolution: - { - integrity: sha512-CWVm2uT7dmSHdO/z1CXT/n47mWonyypzBbuCy5tN7uMg22BsfkhwT6oHmFCAk+gL1LOOxhdbB9SZz3J1KTY3gA==, - } - dependencies: - change-case: 4.1.2 - is-lower-case: 2.0.2 - is-upper-case: 2.0.2 - lower-case: 2.0.2 - lower-case-first: 2.0.2 - sponge-case: 1.0.1 - swap-case: 2.0.2 - title-case: 3.0.3 - upper-case: 2.0.2 - upper-case-first: 2.0.2 - dev: true - - /change-case-all@1.0.15: - resolution: - { - integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==, - } - dependencies: - change-case: 4.1.2 - is-lower-case: 2.0.2 - is-upper-case: 2.0.2 - lower-case: 2.0.2 - lower-case-first: 2.0.2 - sponge-case: 1.0.1 - swap-case: 2.0.2 - title-case: 3.0.3 - upper-case: 2.0.2 - upper-case-first: 2.0.2 - dev: true - - /change-case@4.1.2: - resolution: - { - integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==, - } - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /change-case@5.4.3: - resolution: - { - integrity: sha512-4cdyvorTy/lViZlVzw2O8/hHCLUuHqp4KpSSP3DlauhFCf3LdnfF+p5s0EAhjKsU7bqrMzu7iQArYfoPiHO2nw==, - } - dev: true - - /char-regex@1.0.2: - resolution: - { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, - } - engines: { node: '>=10' } - dev: true - - /ci-info@3.9.0: - resolution: - { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, - } - engines: { node: '>=8' } - dev: true - - /cjs-module-lexer@1.2.3: - resolution: - { - integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==, - } - dev: true - - /cli-cursor@4.0.0: - resolution: - { - integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - restore-cursor: 4.0.0 - dev: true - - /cli-truncate@4.0.0: - resolution: - { - integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==, - } - engines: { node: '>=18' } - dependencies: - slice-ansi: 5.0.0 - string-width: 7.1.0 - dev: true - - /cliui@6.0.0: - resolution: - { - integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, - } + + change-case@5.4.4: {} + + char-regex@1.0.2: {} + + chokidar@3.6.0: dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - dev: true + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@3.9.0: {} - /cliui@8.0.1: - resolution: - { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, - } - engines: { node: '>=12' } + cjs-module-lexer@1.4.0: {} + + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true - - /co@4.6.0: - resolution: - { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, - } - engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } - dev: true - - /collect-v8-coverage@1.0.2: - resolution: - { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, - } - dev: true - - /color-convert@1.9.3: - resolution: - { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, - } + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + color-convert@1.9.3: dependencies: color-name: 1.1.3 - dev: true - /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: '>=7.0.0' } + color-convert@2.0.1: dependencies: color-name: 1.1.4 - dev: true - - /color-name@1.1.3: - resolution: - { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, - } - dev: true - - /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - dev: true - - /colorette@2.0.20: - resolution: - { - integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, - } - dev: true - - /commander@11.1.0: - resolution: - { - integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==, - } - engines: { node: '>=16' } - dev: true - - /commander@2.20.3: - resolution: - { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, - } - dev: false - - /common-tags@1.8.2: - resolution: - { - integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==, - } - engines: { node: '>=4.0.0' } - dev: true - - /compare-func@2.0.0: - resolution: - { - integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, - } - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - dev: true - - /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - dev: true - - /constant-case@3.0.4: - resolution: - { - integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case: 2.0.2 - dev: true - - /conventional-changelog-angular@7.0.0: - resolution: - { - integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==, - } - engines: { node: '>=16' } - dependencies: - compare-func: 2.0.0 - dev: true - - /conventional-changelog-conventionalcommits@7.0.2: - resolution: - { - integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==, - } - engines: { node: '>=16' } - dependencies: - compare-func: 2.0.0 - dev: true - - /conventional-commits-parser@5.0.0: - resolution: - { - integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==, - } - engines: { node: '>=16' } - hasBin: true - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 - dev: true - - /convert-source-map@2.0.0: - resolution: - { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, - } - dev: true - - /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.26)(cosmiconfig@8.3.6)(typescript@5.4.2): - resolution: - { - integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==, - } - engines: { node: '>=v16' } - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=8.2' - typescript: '>=4' - dependencies: - '@types/node': 20.11.26 - cosmiconfig: 8.3.6(typescript@5.4.2) - jiti: 1.21.0 - typescript: 5.4.2 - dev: true - - /cosmiconfig@8.3.6(typescript@5.4.2): - resolution: - { - integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==, - } - engines: { node: '>=14' } - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - typescript: 5.4.2 - dev: true - - /create-jest@29.7.0(@types/node@20.11.26): - resolution: - { - integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@1.4.0: {} + + commander@2.20.3: {} + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + create-jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.11.26) + jest-config: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -3949,256 +3924,92 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /cross-fetch@3.1.8(encoding@0.1.13): - resolution: - { - integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==, - } - dependencies: - node-fetch: 2.7.0(encoding@0.1.13) - transitivePeerDependencies: - - encoding - - /cross-inspect@1.0.0: - resolution: - { - integrity: sha512-4PFfn4b5ZN6FMNGSZlyb7wUhuN8wvj8t/VQHZdM4JsDcruGJ8L2kf9zao98QIrBPFCpdk27qst/AGTl7pL3ypQ==, - } - engines: { node: '>=16.0.0' } - dependencies: - tslib: 2.6.2 - dev: true + create-require@1.1.1: {} - /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: '>= 8' } + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true - - /dargs@7.0.0: - resolution: - { - integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==, - } - engines: { node: '>=8' } - dev: true - - /debug@3.2.7: - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + debug@3.2.7: dependencies: ms: 2.1.3 - dev: true - - /debug@4.3.4: - resolution: - { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, - } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + + debug@4.3.7(supports-color@9.4.0): dependencies: - ms: 2.1.2 - dev: true - - /decamelize-keys@1.1.1: - resolution: - { - integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, - } - engines: { node: '>=0.10.0' } - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - dev: true - - /decamelize@1.2.0: - resolution: - { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, - } - engines: { node: '>=0.10.0' } - dev: true - - /dedent@1.5.1: - resolution: - { - integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==, - } - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dev: true - - /deep-is@0.1.4: - resolution: - { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, - } - dev: true - - /deepmerge@4.3.1: - resolution: - { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, - } - engines: { node: '>=0.10.0' } - dev: true - - /define-data-property@1.1.4: - resolution: - { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, - } - engines: { node: '>= 0.4' } + ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 + + dedent@1.5.3: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - dev: true - /define-properties@1.2.1: - resolution: - { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, - } - engines: { node: '>= 0.4' } + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - - /delay@5.0.0: - resolution: - { - integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==, - } - engines: { node: '>=10' } - dev: false - - /dependency-graph@0.11.0: - resolution: - { - integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==, - } - engines: { node: '>= 0.6.0' } - dev: true - - /detect-newline@3.1.0: - resolution: - { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, - } - engines: { node: '>=8' } - dev: true - - /diff-sequences@29.6.3: - resolution: - { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /dir-glob@3.0.1: - resolution: - { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, - } - engines: { node: '>=8' } + + delay@5.0.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /doctrine@2.1.0: - resolution: - { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, - } - engines: { node: '>=0.10.0' } + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: - { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, - } - engines: { node: '>=6.0.0' } + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - - /dot-case@3.0.4: - resolution: - { - integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /dot-prop@5.3.0: - resolution: - { - integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, - } - engines: { node: '>=8' } - dependencies: - is-obj: 2.0.0 - dev: true - - /dset@3.1.3: - resolution: - { - integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==, - } - engines: { node: '>=4' } - dev: true - - /dts-minify@0.3.2: - resolution: - { - integrity: sha512-X7SlplQ8TjJMNWwbPfD6Q0s+y2EZqImsrQDEvZcFc3QYy9vdwdUpZi+jos0BBT6c8EJn33F+uePHuofwkRCToA==, - } - dev: true - - /electron-to-chromium@1.4.702: - resolution: - { - integrity: sha512-LYLXyEUsZ3nNSwiOWjI88N1PJUAMU2QphQSgGLVkFnb3FxZxNui2Vzi2PaKPgPWbsWbZstZnh6BMf/VQJamjiQ==, - } - dev: true - - /elliptic@6.5.4: - resolution: - { - integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==, - } + + dynamic-dedupe@0.3.0: + dependencies: + xtend: 4.0.2 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.16: {} + + elliptic@6.5.4: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -4207,66 +4018,33 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - - /emittery@0.13.1: - resolution: - { - integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==, - } - engines: { node: '>=12' } - dev: true - - /emoji-regex@10.3.0: - resolution: - { - integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==, - } - dev: true - - /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - dev: true - - /encoding@0.1.13: - resolution: - { - integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, - } - dependencies: - iconv-lite: 0.6.3 - - /error-ex@1.3.2: - resolution: - { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, - } + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - dev: true - /es-abstract@1.22.5: - resolution: - { - integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==, - } - engines: { node: '>= 0.4' } + es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 available-typed-arrays: 1.0.7 call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 es-define-property: 1.0.0 es-errors: 1.3.0 + es-object-atoms: 1.0.0 es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -4275,388 +4053,190 @@ packages: internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 + is-data-view: 1.0.1 is-negative-zero: 2.0.3 is-regex: 1.1.4 is-shared-array-buffer: 1.0.3 is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 safe-array-concat: 1.1.2 safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - - /es-array-method-boxes-properly@1.0.0: - resolution: - { - integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==, - } - dev: true - - /es-define-property@1.0.0: - resolution: - { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, - } - engines: { node: '>= 0.4' } + + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: - { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, - } - engines: { node: '>= 0.4' } - dev: true - - /es-set-tostringtag@2.0.3: - resolution: - { - integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==, - } - engines: { node: '>= 0.4' } + + es-errors@1.3.0: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: - { - integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==, - } + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: - { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, - } - engines: { node: '>= 0.4' } + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /es6-promise@4.2.8: - resolution: - { - integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==, - } - dev: false + es6-promise@4.2.8: {} - /es6-promisify@5.0.0: - resolution: - { - integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, - } + es6-promisify@5.0.0: dependencies: es6-promise: 4.2.8 - dev: false - - /escalade@3.1.2: - resolution: - { - integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==, - } - engines: { node: '>=6' } - dev: true - - /escape-string-regexp@1.0.5: - resolution: - { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, - } - engines: { node: '>=0.8.0' } - dev: true - - /escape-string-regexp@2.0.0: - resolution: - { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, - } - engines: { node: '>=8' } - dev: true - - /escape-string-regexp@4.0.0: - resolution: - { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, - } - engines: { node: '>=10' } - dev: true - - /eslint-compat-utils@0.1.2(eslint@8.57.0): - resolution: - { - integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==, - } - engines: { node: '>=12' } - peerDependencies: - eslint: '>=6.0.0' + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-compat-utils@0.5.1(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true + semver: 7.6.3 - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: - { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, - } - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.1.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.21.0)(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-t6B5Ep8E4I18uuoYeYxINyqcXb2UbC0SOOTxRtBSt2JUs+EzeXbfe2oaiPs71AIdnoWhXDO2fYOHz8df3kV84A==, - } - peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.4.0 - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 - typescript: '*' + eslint-config-standard-with-typescript@39.1.1(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4))(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4): dependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.4.2) - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - typescript: 5.4.2 + eslint-plugin-promise: 6.6.0(eslint@8.57.0) + typescript: 5.5.4 transitivePeerDependencies: - supports-color - dev: true - - /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): - resolution: - { - integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - eslint: ^8.0.1 - eslint-plugin-import: ^2.25.2 - eslint-plugin-n: '^15.0.0 || ^16.0.0 ' - eslint-plugin-promise: ^6.0.0 + + eslint-config-standard@17.1.0(eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.6.0(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) - eslint-plugin-promise: 6.1.1(eslint@8.57.0) - dev: true + eslint-plugin-promise: 6.6.0(eslint@8.57.0) - /eslint-import-resolver-node@0.3.9: - resolution: - { - integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, - } + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 + is-core-module: 2.15.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: - { - integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==, - } - engines: { node: '>=4' } - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + + eslint-module-utils@2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - - /eslint-plugin-es-x@7.5.0(eslint@8.57.0): - resolution: - { - integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==, - } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - eslint: '>=8' + + eslint-plugin-es-x@7.8.0(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 eslint: 8.57.0 - eslint-compat-utils: 0.1.2(eslint@8.57.0) - dev: true - - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): - resolution: - { - integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==, - } - engines: { node: '>=4' } - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-compat-utils: 0.5.1(eslint@8.57.0) + + eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.2) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.4 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.11.0(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.15.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.2 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: - { - integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==, - } - engines: { node: '>=16.0.0' } - peerDependencies: - eslint: '>=7.0.0' + + eslint-plugin-n@16.6.2(eslint@8.57.0): dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.0.1 + builtins: 5.1.0 eslint: 8.57.0 - eslint-plugin-es-x: 7.5.0(eslint@8.57.0) - get-tsconfig: 4.7.3 + eslint-plugin-es-x: 7.8.0(eslint@8.57.0) + get-tsconfig: 4.8.0 globals: 13.24.0 - ignore: 5.3.1 + ignore: 5.3.2 is-builtin-module: 3.2.1 - is-core-module: 2.13.1 + is-core-module: 2.15.1 minimatch: 3.1.2 resolve: 1.22.8 - semver: 7.6.0 - dev: true - - /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): - resolution: - { - integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==, - } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + semver: 7.6.3 + + eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): dependencies: eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - prettier: 3.2.5 + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.8 - dev: true - - /eslint-plugin-promise@6.1.1(eslint@8.57.0): - resolution: - { - integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + synckit: 0.9.1 + optionalDependencies: + eslint-config-prettier: 9.1.0(eslint@8.57.0) + + eslint-plugin-promise@6.6.0(eslint@8.57.0): dependencies: eslint: 8.57.0 - dev: true - /eslint-scope@7.2.2: - resolution: - { - integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - - /eslint-visitor-keys@3.4.3: - resolution: - { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - dev: true - - /eslint@8.57.0: - resolution: - { - integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -4666,13 +4246,13 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -4680,7 +4260,7 @@ packages: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -4690,75 +4270,33 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: - { - integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 - dev: true - - /esprima@4.0.1: - resolution: - { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, - } - engines: { node: '>=4' } - hasBin: true - dev: true - /esquery@1.5.0: - resolution: - { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, - } - engines: { node: '>=0.10' } + esprima@4.0.1: {} + + esquery@1.6.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: - { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, - } - engines: { node: '>=4.0' } + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - - /estraverse@5.3.0: - resolution: - { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, - } - engines: { node: '>=4.0' } - dev: true - - /esutils@2.0.3: - resolution: - { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, - } - engines: { node: '>=0.10.0' } - dev: true - - /ethers@5.7.2: - resolution: - { - integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==, - } + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/abstract-provider': 5.7.0 @@ -4778,7 +4316,7 @@ packages: '@ethersproject/networks': 5.7.1 '@ethersproject/pbkdf2': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/random': 5.7.0 '@ethersproject/rlp': 5.7.0 '@ethersproject/sha2': 5.7.0 @@ -4793,28 +4331,10 @@ packages: transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - - /eventemitter3@4.0.7: - resolution: - { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, - } - dev: false - - /eventemitter3@5.0.1: - resolution: - { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, - } - dev: true - - /execa@5.1.1: - resolution: - { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, - } - engines: { node: '>=10' } + + eventemitter3@5.0.1: {} + + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -4825,392 +4345,132 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /execa@8.0.1: - resolution: - { - integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, - } - engines: { node: '>=16.17' } - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - - /exit@0.1.2: - resolution: - { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, - } - engines: { node: '>= 0.8.0' } - dev: true - - /expect@29.7.0: - resolution: - { - integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + exit@0.1.2: {} + + expect@29.7.0: 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 - dev: true - - /eyes@0.1.8: - resolution: - { - integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==, - } - engines: { node: '> 0.1.90' } - dev: false - - /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - dev: true - - /fast-diff@1.3.0: - resolution: - { - integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, - } - dev: true - - /fast-glob@3.3.2: - resolution: - { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, - } - engines: { node: '>=8.6.0' } + + eyes@0.1.8: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 - dev: true - - /fast-json-stable-stringify@2.1.0: - resolution: - { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, - } - dev: true - - /fast-levenshtein@2.0.6: - resolution: - { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, - } - dev: true - - /fast-stable-stringify@1.0.0: - resolution: - { - integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==, - } - dev: false - - /fastq@1.17.1: - resolution: - { - integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, - } + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-stable-stringify@1.0.0: {} + + fastq@1.17.1: dependencies: reusify: 1.0.4 - dev: true - /fb-watchman@2.0.2: - resolution: - { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, - } + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - dev: true - - /fbjs-css-vars@1.0.2: - resolution: - { - integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==, - } - dev: true - - /fbjs@3.0.5(encoding@0.1.13): - resolution: - { - integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==, - } - dependencies: - cross-fetch: 3.1.8(encoding@0.1.13) - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.37 - transitivePeerDependencies: - - encoding - dev: true - /file-entry-cache@6.0.1: - resolution: - { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, - } - engines: { node: ^10.12.0 || >=12.0.0 } + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - - /file-uri-to-path@1.0.0: - resolution: - { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, - } - dev: false - - /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: '>=8' } + + file-uri-to-path@1.0.0: {} + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - dev: true - /find-up@4.1.0: - resolution: - { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, - } - engines: { node: '>=8' } + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - dev: true - /find-up@5.0.0: - resolution: - { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, - } - engines: { node: '>=10' } + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true - /flat-cache@3.2.0: - resolution: - { - integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, - } - engines: { node: ^10.12.0 || >=12.0.0 } + flat-cache@3.2.0: dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flatted@3.3.1: - resolution: - { - integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==, - } - dev: true + flatted@3.3.1: {} - /for-each@0.3.3: - resolution: - { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, - } + for-each@0.3.3: dependencies: is-callable: 1.2.7 - dev: true - - /fs.realpath@1.0.0: - resolution: - { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, - } - dev: true - - /fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - requiresBuild: true - dev: true + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: - { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, - } - dev: true + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: - { - integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, - } - engines: { node: '>= 0.4' } + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 + es-abstract: 1.23.3 functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: - { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, - } - dev: true - - /gensync@1.0.0-beta.2: - resolution: - { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, - } - engines: { node: '>=6.9.0' } - dev: true - - /get-caller-file@2.0.5: - resolution: - { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, - } - engines: { node: 6.* || 8.* || >= 10.* } - dev: true - - /get-east-asian-width@1.2.0: - resolution: - { - integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==, - } - engines: { node: '>=18' } - dev: true - - /get-intrinsic@1.2.4: - resolution: - { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, - } - engines: { node: '>= 0.4' } + + functions-have-names@1.2.3: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 hasown: 2.0.2 - dev: true - - /get-package-type@0.1.0: - resolution: - { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, - } - engines: { node: '>=8.0.0' } - dev: true - - /get-stream@6.0.1: - resolution: - { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, - } - engines: { node: '>=10' } - dev: true - - /get-stream@8.0.1: - resolution: - { - integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, - } - engines: { node: '>=16' } - dev: true - - /get-symbol-description@1.0.2: - resolution: - { - integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==, - } - engines: { node: '>= 0.4' } + + get-package-type@0.1.0: {} + + get-stream@6.0.1: {} + + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /get-tsconfig@4.7.3: - resolution: - { - integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==, - } + get-tsconfig@4.8.0: dependencies: resolve-pkg-maps: 1.0.0 - dev: true - - /git-raw-commits@2.0.11: - resolution: - { - integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==, - } - engines: { node: '>=10' } - hasBin: true - dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 - dev: true - /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: '>= 6' } + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - dev: true - /glob-parent@6.0.2: - resolution: - { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, - } - engines: { node: '>=10.13.0' } + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob@7.2.3: - resolution: - { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, - } + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -5218,835 +4478,258 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true - - /global-dirs@0.1.1: - resolution: - { - integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==, - } - engines: { node: '>=4' } - dependencies: - ini: 1.3.8 - dev: true - - /globals@11.12.0: - resolution: - { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, - } - engines: { node: '>=4' } - dev: true - - /globals@13.24.0: - resolution: - { - integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, - } - engines: { node: '>=8' } + + globals@11.12.0: {} + + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: - { - integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, - } - engines: { node: '>= 0.4' } + globalthis@1.0.4: dependencies: define-properties: 1.2.1 - dev: true + gopd: 1.0.1 - /globby@11.1.0: - resolution: - { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, - } - engines: { node: '>=10' } + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.3.2 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 - dev: true - /gopd@1.0.1: - resolution: - { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, - } + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - dev: true - - /graceful-fs@4.2.11: - resolution: - { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, - } - dev: true - - /graphemer@1.4.0: - resolution: - { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, - } - dev: true - - /graphql-request@6.1.0(encoding@0.1.13)(graphql@16.8.1): - resolution: - { - integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==, - } - peerDependencies: - graphql: 14 - 16 - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) - cross-fetch: 3.1.8(encoding@0.1.13) - graphql: 16.8.1 - transitivePeerDependencies: - - encoding - /graphql-tag@2.12.6(graphql@16.8.1): - resolution: - { - integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==, - } - engines: { node: '>=10' } - peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: - graphql: 16.8.1 - tslib: 2.6.2 - dev: true - - /graphql@16.8.1: - resolution: - { - integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==, - } - engines: { node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0 } - - /hard-rejection@2.1.0: - resolution: - { - integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, - } - engines: { node: '>=6' } - dev: true - - /has-bigints@1.0.2: - resolution: - { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, - } - dev: true - - /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: '>=4' } - dev: true - - /has-flag@4.0.0: - resolution: - { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, - } - engines: { node: '>=8' } - dev: true - - /has-property-descriptors@1.0.2: - resolution: - { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, - } + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - dev: true - - /has-proto@1.0.3: - resolution: - { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, - } - engines: { node: '>= 0.4' } - dev: true - - /has-symbols@1.0.3: - resolution: - { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, - } - engines: { node: '>= 0.4' } - dev: true - - /has-tostringtag@1.0.2: - resolution: - { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, - } - engines: { node: '>= 0.4' } + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - dev: true - /hash.js@1.1.7: - resolution: - { - integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, - } + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false - /hasown@2.0.2: - resolution: - { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, - } - engines: { node: '>= 0.4' } + hasown@2.0.2: dependencies: function-bind: 1.1.2 - dev: true - - /header-case@2.0.4: - resolution: - { - integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==, - } - dependencies: - capital-case: 1.0.4 - tslib: 2.6.2 - dev: true - /hmac-drbg@1.0.1: - resolution: - { - integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, - } + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - - /hosted-git-info@2.8.9: - resolution: - { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, - } - dev: true - - /hosted-git-info@4.1.0: - resolution: - { - integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, - } - engines: { node: '>=10' } - dependencies: - lru-cache: 6.0.0 - dev: true - - /html-escaper@2.0.2: - resolution: - { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, - } - dev: true - - /human-signals@2.1.0: - resolution: - { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, - } - engines: { node: '>=10.17.0' } - dev: true - - /human-signals@5.0.0: - resolution: - { - integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, - } - engines: { node: '>=16.17.0' } - dev: true - - /humanize-ms@1.2.1: - resolution: - { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, - } + + html-escaper@2.0.2: {} + + https-proxy-agent@7.0.5(supports-color@9.4.0): + dependencies: + agent-base: 7.1.1(supports-color@9.4.0) + debug: 4.3.7(supports-color@9.4.0) + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + humanize-ms@1.2.1: dependencies: ms: 2.1.3 - dev: false - - /husky@8.0.3: - resolution: - { - integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==, - } - engines: { node: '>=14' } - hasBin: true - dev: true - - /iconv-lite@0.6.3: - resolution: - { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, - } - engines: { node: '>=0.10.0' } - dependencies: - safer-buffer: 2.1.2 - - /ieee754@1.2.1: - resolution: - { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, - } - dev: false - - /ignore@5.3.1: - resolution: - { - integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==, - } - engines: { node: '>= 4' } - dev: true - - /immutable@3.7.6: - resolution: - { - integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==, - } - engines: { node: '>=0.8.0' } - dev: true - - /import-fresh@3.3.0: - resolution: - { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, - } - engines: { node: '>=6' } + + husky@8.0.3: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true - - /import-from@4.0.0: - resolution: - { - integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==, - } - engines: { node: '>=12.2' } - dev: true - - /import-local@3.1.0: - resolution: - { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, - } - engines: { node: '>=8' } - hasBin: true + + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - - /imurmurhash@0.1.4: - resolution: - { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, - } - engines: { node: '>=0.8.19' } - dev: true - - /indent-string@4.0.0: - resolution: - { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, - } - engines: { node: '>=8' } - dev: true - - /inflight@1.0.6: - resolution: - { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, - } + + imurmurhash@0.1.4: {} + + index-to-position@0.1.2: {} + + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true - - /inherits@2.0.4: - resolution: - { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, - } - - /ini@1.3.8: - resolution: - { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, - } - dev: true - - /internal-slot@1.0.7: - resolution: - { - integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==, - } - engines: { node: '>= 0.4' } + + inherits@2.0.4: {} + + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - - /invariant@2.2.4: - resolution: - { - integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, - } - dependencies: - loose-envify: 1.4.0 - dev: true - - /is-absolute@1.0.0: - resolution: - { - integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==, - } - engines: { node: '>=0.10.0' } - dependencies: - is-relative: 1.0.0 - is-windows: 1.0.2 - dev: true - - /is-array-buffer@3.0.4: - resolution: - { - integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==, - } - engines: { node: '>= 0.4' } + + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: - { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, - } - dev: true + is-arrayish@0.2.1: {} - /is-bigint@1.0.4: - resolution: - { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, - } + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-boolean-object@1.1.2: - resolution: - { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, - } - engines: { node: '>= 0.4' } + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-builtin-module@3.2.1: - resolution: - { - integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, - } - engines: { node: '>=6' } + is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 - dev: true - - /is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: '>= 0.4' } - dev: true - - /is-core-module@2.13.1: - resolution: - { - integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==, - } + + is-callable@1.2.7: {} + + is-core-module@2.15.1: dependencies: hasown: 2.0.2 - dev: true - /is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, - } - engines: { node: '>= 0.4' } + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - - /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: '>=0.10.0' } - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: '>=8' } - dev: true - - /is-fullwidth-code-point@4.0.0: - resolution: - { - integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, - } - engines: { node: '>=12' } - dev: true - - /is-fullwidth-code-point@5.0.0: - resolution: - { - integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==, - } - engines: { node: '>=18' } - dependencies: - get-east-asian-width: 1.2.0 - dev: true - - /is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: '>=6' } - dev: true - - /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: '>=0.10.0' } + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - dev: true - - /is-lower-case@2.0.2: - resolution: - { - integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==, - } - dependencies: - tslib: 2.6.2 - dev: true - - /is-negative-zero@2.0.3: - resolution: - { - integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, - } - engines: { node: '>= 0.4' } - dev: true - - /is-number-object@1.0.7: - resolution: - { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, - } - engines: { node: '>= 0.4' } + + is-negative-zero@2.0.3: {} + + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - - /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: '>=0.12.0' } - dev: true - - /is-obj@2.0.0: - resolution: - { - integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, - } - engines: { node: '>=8' } - dev: true - - /is-path-inside@3.0.3: - resolution: - { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, - } - engines: { node: '>=8' } - dev: true - - /is-plain-obj@1.1.0: - resolution: - { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /is-regex@1.1.4: - resolution: - { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, - } - engines: { node: '>= 0.4' } + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - - /is-relative@1.0.0: - resolution: - { - integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==, - } - engines: { node: '>=0.10.0' } - dependencies: - is-unc-path: 1.0.0 - dev: true - /is-shared-array-buffer@1.0.3: - resolution: - { - integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==, - } - engines: { node: '>= 0.4' } + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - - /is-stream@2.0.1: - resolution: - { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, - } - engines: { node: '>=8' } - dev: true - - /is-stream@3.0.0: - resolution: - { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dev: true - - /is-string@1.0.7: - resolution: - { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, - } - engines: { node: '>= 0.4' } + + is-stream@2.0.1: {} + + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.0.4: - resolution: - { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, - } - engines: { node: '>= 0.4' } + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - - /is-text-path@2.0.0: - resolution: - { - integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==, - } - engines: { node: '>=8' } - dependencies: - text-extensions: 2.4.0 - dev: true - /is-typed-array@1.1.13: - resolution: - { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, - } - engines: { node: '>= 0.4' } + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - dev: true - /is-unc-path@1.0.0: - resolution: - { - integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==, - } - engines: { node: '>=0.10.0' } + is-weakref@1.0.2: dependencies: - unc-path-regex: 0.1.2 - dev: true + call-bind: 1.0.7 - /is-upper-case@2.0.2: - resolution: - { - integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==, - } - dependencies: - tslib: 2.6.2 - dev: true + isarray@2.0.5: {} + + isexe@2.0.0: {} - /is-weakref@1.0.2: - resolution: - { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, - } + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: - call-bind: 1.0.7 - dev: true - - /is-windows@1.0.2: - resolution: - { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, - } - engines: { node: '>=0.10.0' } - dev: true - - /isarray@2.0.5: - resolution: - { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, - } - dev: true - - /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - dev: true - - /isomorphic-ws@4.0.1(ws@7.5.9): - resolution: - { - integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==, - } - peerDependencies: - ws: '*' + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: dependencies: - ws: 7.5.9 - dev: false - - /istanbul-lib-coverage@3.2.2: - resolution: - { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, - } - engines: { node: '>=8' } - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: - { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, - } - engines: { node: '>=8' } - dependencies: - '@babel/core': 7.24.0 - '@babel/parser': 7.24.0 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-instrument@6.0.2: - resolution: - { - integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==, - } - engines: { node: '>=10' } + istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.24.0 - '@babel/parser': 7.24.0 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.6 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.1: - resolution: - { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, - } - engines: { node: '>=10' } + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: - { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, - } - engines: { node: '>=10' } + istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4 + debug: 4.3.7(supports-color@9.4.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.7: - resolution: - { - integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==, - } - engines: { node: '>=8' } + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - - /jayson@4.1.0: - resolution: - { - integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==, - } - engines: { node: '>=8' } - hasBin: true + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jayson@4.1.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@types/connect': 3.4.38 '@types/node': 12.20.55 @@ -6056,42 +4739,30 @@ packages: delay: 5.0.0 es6-promisify: 5.0.0 eyes: 0.1.8 - isomorphic-ws: 4.0.1(ws@7.5.9) + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)) json-stringify-safe: 5.0.1 uuid: 8.3.2 - ws: 7.5.9 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /jest-changed-files@29.7.0: - resolution: - { - integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 - dev: true - /jest-circus@29.7.0: - resolution: - { - integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-circus@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.1 + dedent: 1.5.3 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -6101,35 +4772,23 @@ packages: jest-util: 29.7.0 p-limit: 3.1.0 pretty-format: 29.7.0 - pure-rand: 6.0.4 + pure-rand: 6.1.0 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - - /jest-cli@29.7.0(@types/node@20.11.26): - resolution: - { - integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + + jest-cli@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.11.26) + create-jest: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.11.26) + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -6138,28 +4797,13 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - - /jest-config@29.7.0(@types/node@20.11.26): - resolution: - { - integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==, - } - 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 + + jest-config@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): dependencies: - '@babel/core': 7.24.0 + '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 - babel-jest: 29.7.0(@babel/core@7.24.0) + babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -6173,194 +4817,108 @@ packages: jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 parse-json: 5.2.0 pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.5.4 + ts-node: 10.9.2(@types/node@22.5.4)(typescript@5.5.4) transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - /jest-diff@29.7.0: - resolution: - { - integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-diff@29.7.0: dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-docblock@29.7.0: - resolution: - { - integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@29.7.0: - resolution: - { - integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 pretty-format: 29.7.0 - dev: true - /jest-environment-node@29.7.0: - resolution: - { - integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 jest-mock: 29.7.0 jest-util: 29.7.0 - dev: true - - /jest-get-type@29.6.3: - resolution: - { - integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-haste-map@29.7.0: - resolution: - { - integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.11.26 + '@types/node': 22.5.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 jest-regex-util: 29.6.3 jest-util: 29.7.0 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - dev: true - /jest-leak-detector@29.7.0: - resolution: - { - integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-matcher-utils@29.7.0: - resolution: - { - integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-message-util@29.7.0: - resolution: - { - integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.23.5 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.8 pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 - dev: true - /jest-mock@29.7.0: - resolution: - { - integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 jest-util: 29.7.0 - dev: true - - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: - { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, - } - engines: { node: '>=6' } - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: jest-resolve: 29.7.0 - dev: true - - /jest-regex-util@29.6.3: - resolution: - { - integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dev: true - - /jest-resolve-dependencies@29.7.0: - resolution: - { - integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@29.7.0: - resolution: - { - integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -6371,21 +4929,15 @@ packages: resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@29.7.0: - resolution: - { - integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-runner@29.7.0: 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': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -6403,14 +4955,8 @@ packages: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - /jest-runtime@29.7.0: - resolution: - { - integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -6419,9 +4965,9 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 - cjs-module-lexer: 1.2.3 + cjs-module-lexer: 1.4.0 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -6436,24 +4982,18 @@ packages: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - - /jest-snapshot@29.7.0: - resolution: - { - integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - dependencies: - '@babel/core': 7.24.0 - '@babel/generator': 7.23.6 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.24.0) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.24.0) - '@babel/types': 7.24.0 + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.25.2 + '@babel/generator': 7.25.6 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + '@babel/types': 7.25.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.0) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -6464,32 +5004,20 @@ packages: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color - dev: true - /jest-util@29.7.0: - resolution: - { - integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - dev: true - /jest-validate@29.7.0: - resolution: - { - integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -6497,1513 +5025,410 @@ packages: jest-get-type: 29.6.3 leven: 3.1.0 pretty-format: 29.7.0 - dev: true - /jest-watcher@29.7.0: - resolution: - { - integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.11.26 + '@types/node': 22.5.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-worker@29.7.0: - resolution: - { - integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + jest-worker@29.7.0: dependencies: - '@types/node': 20.11.26 + '@types/node': 22.5.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - dev: true - - /jest@29.7.0(@types/node@20.11.26): - resolution: - { - integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + + jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): dependencies: - '@jest/core': 29.7.0 + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.11.26) + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - dev: true - /jiti@1.21.0: - resolution: - { - integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, - } - hasBin: true - dev: true - - /js-sha3@0.8.0: - resolution: - { - integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==, - } - dev: false - - /js-tokens@4.0.0: - resolution: - { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, - } - dev: true - - /js-yaml@3.14.1: - resolution: - { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, - } - hasBin: true + js-levenshtein@1.1.6: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: true - /js-yaml@4.1.0: - resolution: - { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, - } - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - dev: true - - /jsesc@2.5.2: - resolution: - { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, - } - engines: { node: '>=4' } - hasBin: true - dev: true - - /json-buffer@3.0.1: - resolution: - { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, - } - dev: true - - /json-parse-even-better-errors@2.3.1: - resolution: - { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, - } - dev: true - - /json-schema-traverse@0.4.1: - resolution: - { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, - } - dev: true - - /json-schema-traverse@1.0.0: - resolution: - { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, - } - dev: true - - /json-stable-stringify-without-jsonify@1.0.1: - resolution: - { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, - } - dev: true - - /json-stringify-safe@5.0.1: - resolution: - { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, - } - dev: false - - /json5@1.0.2: - resolution: - { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, - } - hasBin: true + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - - /json5@2.2.3: - resolution: - { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, - } - engines: { node: '>=6' } - hasBin: true - dev: true - /jsonparse@1.3.1: - resolution: - { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, - } - engines: { '0': node >= 0.2.0 } + json5@2.2.3: {} - /keyv@4.5.4: - resolution: - { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, - } + jsonparse@1.3.1: {} + + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - - /kind-of@6.0.3: - resolution: - { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, - } - engines: { node: '>=0.10.0' } - dev: true - - /kleur@3.0.3: - resolution: - { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, - } - engines: { node: '>=6' } - dev: true - - /leven@3.1.0: - resolution: - { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, - } - engines: { node: '>=6' } - dev: true - - /levn@0.4.1: - resolution: - { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, - } - engines: { node: '>= 0.8.0' } + + kleur@3.0.3: {} + + leven@3.1.0: {} + + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - - /lilconfig@3.0.0: - resolution: - { - integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==, - } - engines: { node: '>=14' } - dev: true - - /lines-and-columns@1.2.4: - resolution: - { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, - } - dev: true - - /lint-staged@15.2.2: - resolution: - { - integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==, - } - engines: { node: '>=18.12.0' } - hasBin: true - dependencies: - chalk: 5.3.0 - commander: 11.1.0 - debug: 4.3.4 - execa: 8.0.1 - lilconfig: 3.0.0 - listr2: 8.0.1 - micromatch: 4.0.5 - pidtree: 0.6.0 - string-argv: 0.3.2 - yaml: 2.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /listr2@8.0.1: - resolution: - { - integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==, - } - engines: { node: '>=18.0.0' } - dependencies: - cli-truncate: 4.0.0 - colorette: 2.0.20 - eventemitter3: 5.0.1 - log-update: 6.0.0 - rfdc: 1.3.1 - wrap-ansi: 9.0.0 - dev: true - - /locate-path@5.0.0: - resolution: - { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, - } - engines: { node: '>=8' } + lines-and-columns@1.2.4: {} + + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - dev: true - /locate-path@6.0.0: - resolution: - { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, - } - engines: { node: '>=10' } + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - dev: true - - /lodash.camelcase@4.3.0: - resolution: - { - integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, - } - dev: true - - /lodash.isfunction@3.0.9: - resolution: - { - integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==, - } - dev: true - - /lodash.isplainobject@4.0.6: - resolution: - { - integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, - } - dev: true - - /lodash.kebabcase@4.1.1: - resolution: - { - integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==, - } - dev: true - - /lodash.memoize@4.1.2: - resolution: - { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, - } - dev: true - - /lodash.merge@4.6.2: - resolution: - { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, - } - dev: true - - /lodash.mergewith@4.6.2: - resolution: - { - integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==, - } - dev: true - - /lodash.snakecase@4.1.1: - resolution: - { - integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==, - } - dev: true - - /lodash.startcase@4.4.0: - resolution: - { - integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==, - } - dev: true - - /lodash.uniq@4.5.0: - resolution: - { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, - } - dev: true - - /lodash.upperfirst@4.3.1: - resolution: - { - integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==, - } - dev: true - - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - dev: true - - /log-update@6.0.0: - resolution: - { - integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==, - } - engines: { node: '>=18' } - dependencies: - ansi-escapes: 6.2.0 - cli-cursor: 4.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - dev: true - - /loose-envify@1.4.0: - resolution: - { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, - } - hasBin: true + + lodash.isequal@4.5.0: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lru-cache@5.1.1: dependencies: - js-tokens: 4.0.0 - dev: true + yallist: 3.1.1 - /lower-case-first@2.0.2: - resolution: - { - integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==, - } + make-dir@4.0.0: dependencies: - tslib: 2.6.2 - dev: true + semver: 7.6.3 - /lower-case@2.0.2: - resolution: - { - integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, - } - dependencies: - tslib: 2.6.2 - dev: true + make-error@1.3.6: {} - /lru-cache@5.1.1: - resolution: - { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, - } - dependencies: - yallist: 3.1.1 - dev: true - - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: '>=10' } - dependencies: - yallist: 4.0.0 - dev: true - - /make-dir@4.0.0: - resolution: - { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, - } - engines: { node: '>=10' } - dependencies: - semver: 7.6.0 - dev: true - - /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - dev: true - - /makeerror@1.0.12: - resolution: - { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, - } + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - dev: true - - /map-cache@0.2.2: - resolution: - { - integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /map-obj@1.0.1: - resolution: - { - integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /map-obj@4.3.0: - resolution: - { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, - } - engines: { node: '>=8' } - dev: true - - /meow@12.1.1: - resolution: - { - integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==, - } - engines: { node: '>=16.10' } - dev: true - - /meow@8.1.2: - resolution: - { - integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, - } - engines: { node: '>=10' } - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 - dev: true - - /merge-stream@2.0.0: - resolution: - { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, - } - dev: true - - /merge2@1.4.1: - resolution: - { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, - } - engines: { node: '>= 8' } - dev: true - - /micromatch@4.0.5: - resolution: - { - integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, - } - engines: { node: '>=8.6' } - dependencies: - braces: 3.0.2 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 picomatch: 2.3.1 - dev: true - - /mimic-fn@2.1.0: - resolution: - { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, - } - engines: { node: '>=6' } - dev: true - - /mimic-fn@4.0.0: - resolution: - { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, - } - engines: { node: '>=12' } - dev: true - - /min-indent@1.0.1: - resolution: - { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, - } - engines: { node: '>=4' } - dev: true - - /minimalistic-assert@1.0.1: - resolution: - { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, - } - dev: false - - /minimalistic-crypto-utils@1.0.1: - resolution: - { - integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, - } - dev: false - - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - dev: true - /minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, - } - engines: { node: '>=16 || 14 >=14.17' } + minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - dev: true - - /minimist-options@4.1.0: - resolution: - { - integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, - } - engines: { node: '>= 6' } - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - dev: true - - /minimist@1.2.8: - resolution: - { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, - } - dev: true - - /ms@2.1.2: - resolution: - { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, - } - dev: true - - /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - - /natural-compare@1.4.0: - resolution: - { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, - } - dev: true - - /no-case@3.0.4: - resolution: - { - integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, - } - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - dev: true - - /node-fetch@2.7.0(encoding@0.1.13): - resolution: - { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, - } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + + minimatch@9.0.3: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + mkdirp@1.0.4: {} + + ms@2.1.3: {} + + natural-compare@1.4.0: {} + + node-fetch@2.7.0: dependencies: - encoding: 0.1.13 whatwg-url: 5.0.0 - /node-gyp-build@4.8.0: - resolution: - { - integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==, - } - hasBin: true - requiresBuild: true - dev: false - - /node-int64@0.4.0: - resolution: - { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, - } - dev: true - - /node-releases@2.0.14: - resolution: - { - integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==, - } - dev: true - - /normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-package-data@3.0.3: - resolution: - { - integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, - } - engines: { node: '>=10' } - dependencies: - hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.0 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: '>=0.10.0' } - dev: true - - /npm-run-path@4.0.1: - resolution: - { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, - } - engines: { node: '>=8' } + node-gyp-build@4.8.2: + optional: true + + node-int64@0.4.0: {} + + node-releases@2.0.18: {} + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - dev: true - - /npm-run-path@5.3.0: - resolution: - { - integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - dependencies: - path-key: 4.0.0 - dev: true - - /nullthrows@1.1.1: - resolution: - { - integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==, - } - dev: true - - /object-assign@4.1.1: - resolution: - { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /object-inspect@1.13.1: - resolution: - { - integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==, - } - dev: true - - /object-keys@1.1.1: - resolution: - { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, - } - engines: { node: '>= 0.4' } - dev: true - - /object.assign@4.1.5: - resolution: - { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, - } - engines: { node: '>= 0.4' } + + object-inspect@1.13.2: {} + + object-keys@1.1.1: {} + + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.fromentries@2.0.7: - resolution: - { - integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==, - } - engines: { node: '>= 0.4' } + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - dev: true + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - /object.groupby@1.0.2: - resolution: - { - integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==, - } + object.groupby@1.0.3: dependencies: - array.prototype.filter: 1.0.3 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - es-errors: 1.3.0 - dev: true + es-abstract: 1.23.3 - /object.values@1.1.7: - resolution: - { - integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==, - } - engines: { node: '>= 0.4' } + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - dev: true + es-object-atoms: 1.0.0 - /once@1.4.0: - resolution: - { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, - } + once@1.4.0: dependencies: wrappy: 1.0.2 - dev: true - /onetime@5.1.2: - resolution: - { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, - } - engines: { node: '>=6' } + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - dev: true - - /onetime@6.0.0: - resolution: - { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, - } - engines: { node: '>=12' } - dependencies: - mimic-fn: 4.0.0 - dev: true - - /optionator@0.9.3: - resolution: - { - integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==, - } - engines: { node: '>= 0.8.0' } - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 + + openapi-fetch@0.10.6: + dependencies: + openapi-typescript-helpers: 0.0.11 + + openapi-typescript-helpers@0.0.11: {} + + openapi-typescript@7.4.0(typescript@5.5.4): + dependencies: + '@redocly/openapi-core': 1.22.1(supports-color@9.4.0) + ansi-colors: 4.1.3 + change-case: 5.4.4 + parse-json: 8.1.0 + supports-color: 9.4.0 + typescript: 5.5.4 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + + optionator@0.9.4: + dependencies: deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true + word-wrap: 1.2.5 - /p-limit@2.3.0: - resolution: - { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, - } - engines: { node: '>=6' } + p-limit@2.3.0: dependencies: p-try: 2.2.0 - dev: true - /p-limit@3.1.0: - resolution: - { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, - } - engines: { node: '>=10' } + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - dev: true - /p-locate@4.1.0: - resolution: - { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, - } - engines: { node: '>=8' } + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - dev: true - /p-locate@5.0.0: - resolution: - { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, - } - engines: { node: '>=10' } + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - dev: true - - /p-try@2.2.0: - resolution: - { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, - } - engines: { node: '>=6' } - dev: true - - /param-case@3.0.4: - resolution: - { - integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, - } - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /parent-module@1.0.1: - resolution: - { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, - } - engines: { node: '>=6' } + + p-try@2.2.0: {} + + parent-module@1.0.1: dependencies: callsites: 3.1.0 - dev: true - - /parse-filepath@1.0.2: - resolution: - { - integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==, - } - engines: { node: '>=0.8' } - dependencies: - is-absolute: 1.0.0 - map-cache: 0.2.2 - path-root: 0.1.1 - dev: true - - /parse-json@5.2.0: - resolution: - { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, - } - engines: { node: '>=8' } - dependencies: - '@babel/code-frame': 7.23.5 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - dev: true - - /pascal-case@3.1.2: - resolution: - { - integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /path-case@3.0.4: - resolution: - { - integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==, - } - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /path-exists@4.0.0: - resolution: - { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, - } - engines: { node: '>=8' } - dev: true - - /path-is-absolute@1.0.1: - resolution: - { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: '>=8' } - dev: true - - /path-key@4.0.0: - resolution: - { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, - } - engines: { node: '>=12' } - dev: true - - /path-parse@1.0.7: - resolution: - { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, - } - dev: true - - /path-root-regex@0.1.2: - resolution: - { - integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==, - } - engines: { node: '>=0.10.0' } - dev: true - - /path-root@0.1.1: - resolution: - { - integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==, - } - engines: { node: '>=0.10.0' } - dependencies: - path-root-regex: 0.1.2 - dev: true - - /path-type@4.0.0: - resolution: - { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, - } - engines: { node: '>=8' } - dev: true - - /picocolors@1.0.0: - resolution: - { - integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, - } - dev: true - - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: '>=8.6' } - dev: true - - /pidtree@0.6.0: - resolution: - { - integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, - } - engines: { node: '>=0.10' } - hasBin: true - dev: true - - /pirates@4.0.6: - resolution: - { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, - } - engines: { node: '>= 6' } - dev: true - - /pkg-dir@4.2.0: - resolution: - { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, - } - engines: { node: '>=8' } + + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.24.7 + index-to-position: 0.1.2 + type-fest: 4.26.0 + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-type@4.0.0: {} + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + pirates@4.0.6: {} + + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - - /possible-typed-array-names@1.0.0: - resolution: - { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, - } - engines: { node: '>= 0.4' } - dev: true - - /prelude-ls@1.2.1: - resolution: - { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, - } - engines: { node: '>= 0.8.0' } - dev: true - - /prettier-linter-helpers@1.0.0: - resolution: - { - integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, - } - engines: { node: '>=6.0.0' } + + pluralize@8.0.0: {} + + possible-typed-array-names@1.0.0: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - - /prettier@3.2.5: - resolution: - { - integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==, - } - engines: { node: '>=14' } - hasBin: true - dev: true - /pretty-format@29.7.0: - resolution: - { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + prettier@3.3.3: {} + + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 - dev: true - - /promise@7.3.1: - resolution: - { - integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==, - } - dependencies: - asap: 2.0.6 - dev: true + react-is: 18.3.1 - /prompts@2.4.2: - resolution: - { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, - } - engines: { node: '>= 6' } + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - dev: true - - /punycode@2.3.1: - resolution: - { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, - } - engines: { node: '>=6' } - dev: true - - /pure-rand@6.0.4: - resolution: - { - integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==, - } - dev: true - - /queue-microtask@1.2.3: - resolution: - { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, - } - dev: true - - /quick-lru@4.0.1: - resolution: - { - integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, - } - engines: { node: '>=8' } - dev: true - - /react-is@18.2.0: - resolution: - { - integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==, - } - dev: true - - /read-pkg-up@7.0.1: - resolution: - { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, - } - engines: { node: '>=8' } - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg@5.2.0: - resolution: - { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, - } - engines: { node: '>=8' } - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - dev: true - /readable-stream@3.6.2: - resolution: - { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, - } - engines: { node: '>= 6' } + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + queue-microtask@1.2.3: {} + + react-is@18.3.1: {} + + readdirp@3.6.0: dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /redent@3.0.0: - resolution: - { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, - } - engines: { node: '>=8' } - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - dev: true - - /regenerator-runtime@0.14.1: - resolution: - { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, - } - - /regexp.prototype.flags@1.5.2: - resolution: - { - integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==, - } - engines: { node: '>= 0.4' } + picomatch: 2.3.1 + + regenerator-runtime@0.14.1: {} + + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /relay-runtime@12.0.0(encoding@0.1.13): - resolution: - { - integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==, - } - dependencies: - '@babel/runtime': 7.24.0 - fbjs: 3.0.5(encoding@0.1.13) - invariant: 2.2.4 - transitivePeerDependencies: - - encoding - dev: true - - /require-directory@2.1.1: - resolution: - { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, - } - engines: { node: '>=0.10.0' } - dev: true - - /require-from-string@2.0.2: - resolution: - { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, - } - engines: { node: '>=0.10.0' } - dev: true - - /require-main-filename@2.0.0: - resolution: - { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, - } - dev: true - - /resolve-cwd@3.0.0: - resolution: - { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, - } - engines: { node: '>=8' } + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - - /resolve-from@4.0.0: - resolution: - { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, - } - engines: { node: '>=4' } - dev: true - - /resolve-from@5.0.0: - resolution: - { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, - } - engines: { node: '>=8' } - dev: true - - /resolve-global@1.0.0: - resolution: - { - integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==, - } - engines: { node: '>=8' } - dependencies: - global-dirs: 0.1.1 - dev: true - - /resolve-pkg-maps@1.0.0: - resolution: - { - integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, - } - dev: true - - /resolve.exports@2.0.2: - resolution: - { - integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==, - } - engines: { node: '>=10' } - dev: true - - /resolve@1.22.8: - resolution: - { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, - } - hasBin: true + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve.exports@2.0.2: {} + + resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@4.0.0: - resolution: - { - integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==, - } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + reusify@1.0.4: {} + + rimraf@2.7.1: dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - dev: true - - /reusify@1.0.4: - resolution: - { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, - } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - dev: true - - /rfdc@1.3.1: - resolution: - { - integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==, - } - dev: true - - /rimraf@3.0.2: - resolution: - { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, - } - hasBin: true + glob: 7.2.3 + + rimraf@3.0.2: dependencies: glob: 7.2.3 - dev: true - /rpc-websockets@7.9.0: - resolution: - { - integrity: sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==, - } + rpc-websockets@9.0.2: dependencies: - '@babel/runtime': 7.24.0 - eventemitter3: 4.0.7 + '@swc/helpers': 0.5.13 + '@types/uuid': 8.3.4 + '@types/ws': 8.5.12 + buffer: 6.0.3 + eventemitter3: 5.0.1 uuid: 8.3.2 - ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - dev: false - /run-parallel@1.2.0: - resolution: - { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, - } + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - dev: true - /safe-array-concat@1.1.2: - resolution: - { - integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==, - } - engines: { node: '>=0.4' } + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.2.1: - resolution: - { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, - } + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: - { - integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==, - } - engines: { node: '>= 0.4' } + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - - /safer-buffer@2.1.2: - resolution: - { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, - } - - /scrypt-js@3.0.1: - resolution: - { - integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==, - } - dev: false - - /semver@5.7.2: - resolution: - { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, - } - hasBin: true - dev: true - /semver@6.3.1: - resolution: - { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, - } - hasBin: true - dev: true - - /semver@7.6.0: - resolution: - { - integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==, - } - engines: { node: '>=10' } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /sentence-case@3.0.4: - resolution: - { - integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==, - } - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - upper-case-first: 2.0.2 - dev: true - - /set-blocking@2.0.0: - resolution: - { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, - } - dev: true - - /set-function-length@1.2.2: - resolution: - { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, - } - engines: { node: '>= 0.4' } + scrypt-js@3.0.1: {} + + semver@6.3.1: {} + + semver@7.6.3: {} + + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -8011,714 +5436,241 @@ packages: get-intrinsic: 1.2.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 - dev: true - /set-function-name@2.0.2: - resolution: - { - integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, - } - engines: { node: '>= 0.4' } + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - - /setimmediate@1.0.5: - resolution: - { - integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, - } - dev: true - - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: '>=8' } + + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - dev: true - - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: '>=8' } - dev: true - - /side-channel@1.0.6: - resolution: - { - integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, - } - engines: { node: '>= 0.4' } + + shebang-regex@3.0.0: {} + + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: true - - /signal-exit@3.0.7: - resolution: - { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, - } - dev: true - - /signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: '>=14' } - dev: true - - /signedsource@1.0.0: - resolution: - { - integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==, - } - dev: true - - /sisteransi@1.0.5: - resolution: - { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, - } - dev: true - - /slash@3.0.0: - resolution: - { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, - } - engines: { node: '>=8' } - dev: true - - /slice-ansi@5.0.0: - resolution: - { - integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, - } - engines: { node: '>=12' } - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 4.0.0 - dev: true - - /slice-ansi@7.1.0: - resolution: - { - integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==, - } - engines: { node: '>=18' } - dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 - dev: true - - /snake-case@3.0.4: - resolution: - { - integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==, - } - dependencies: - dot-case: 3.0.4 - tslib: 2.6.2 - dev: true - - /source-map-support@0.5.13: - resolution: - { - integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==, - } + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: - { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, - } - engines: { node: '>=0.10.0' } - dev: true - - /spdx-correct@3.2.0: - resolution: - { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, - } - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 - dev: true - - /spdx-exceptions@2.5.0: - resolution: - { - integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, - } - dev: true - - /spdx-expression-parse@3.0.1: - resolution: - { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, - } - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 - dev: true - - /spdx-license-ids@3.0.17: - resolution: - { - integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==, - } - dev: true - - /split2@3.2.2: - resolution: - { - integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, - } - dependencies: - readable-stream: 3.6.2 - dev: true - - /split2@4.2.0: - resolution: - { - integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==, - } - engines: { node: '>= 10.x' } - dev: true - - /sponge-case@1.0.1: - resolution: - { - integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==, - } - dependencies: - tslib: 2.6.2 - dev: true - - /sprintf-js@1.0.3: - resolution: - { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, - } - dev: true - - /stack-utils@2.0.6: - resolution: - { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, - } - engines: { node: '>=10' } + + source-map@0.6.1: {} + + sprintf-js@1.0.3: {} + + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - dev: true - - /string-argv@0.3.2: - resolution: - { - integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, - } - engines: { node: '>=0.6.19' } - dev: true - - /string-length@4.0.2: - resolution: - { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, - } - engines: { node: '>=10' } + + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: '>=8' } + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true - - /string-width@7.1.0: - resolution: - { - integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==, - } - engines: { node: '>=18' } - dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - dev: true - - /string.prototype.trim@1.2.8: - resolution: - { - integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==, - } - engines: { node: '>= 0.4' } + + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - dev: true + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 - /string.prototype.trimend@1.0.7: - resolution: - { - integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==, - } + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - dev: true + es-object-atoms: 1.0.0 - /string.prototype.trimstart@1.0.7: - resolution: - { - integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==, - } + string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.5 - dev: true - - /string_decoder@1.3.0: - resolution: - { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, - } - dependencies: - safe-buffer: 5.2.1 - dev: true + es-object-atoms: 1.0.0 - /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: '>=8' } + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - dev: true - - /strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: '>=12' } - dependencies: - ansi-regex: 6.0.1 - dev: true - - /strip-bom@3.0.0: - resolution: - { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, - } - engines: { node: '>=4' } - dev: true - - /strip-bom@4.0.0: - resolution: - { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, - } - engines: { node: '>=8' } - dev: true - - /strip-final-newline@2.0.0: - resolution: - { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, - } - engines: { node: '>=6' } - dev: true - - /strip-final-newline@3.0.0: - resolution: - { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, - } - engines: { node: '>=12' } - dev: true - - /strip-indent@3.0.0: - resolution: - { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, - } - engines: { node: '>=8' } - dependencies: - min-indent: 1.0.1 - dev: true - - /strip-json-comments@3.1.1: - resolution: - { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, - } - engines: { node: '>=8' } - dev: true - - /superstruct@0.14.2: - resolution: - { - integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==, - } - dev: false - - /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: '>=4' } + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + superstruct@2.0.2: {} + + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: - resolution: - { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, - } - engines: { node: '>=8' } + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - dev: true - /supports-color@8.1.1: - resolution: - { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, - } - engines: { node: '>=10' } + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - dev: true - - /supports-preserve-symlinks-flag@1.0.0: - resolution: - { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, - } - engines: { node: '>= 0.4' } - dev: true - - /swap-case@2.0.2: - resolution: - { - integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==, - } - dependencies: - tslib: 2.6.2 - dev: true - - /synckit@0.8.8: - resolution: - { - integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==, - } - engines: { node: ^14.18.0 || >=16.0.0 } + + supports-color@9.4.0: {} + + supports-preserve-symlinks-flag@1.0.0: {} + + synckit@0.9.1: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.6.2 - dev: true + tslib: 2.7.0 - /test-exclude@6.0.0: - resolution: - { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, - } - engines: { node: '>=8' } + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - - /text-encoding-utf-8@1.0.2: - resolution: - { - integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==, - } - dev: false - - /text-extensions@2.4.0: - resolution: - { - integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==, - } - engines: { node: '>=8' } - dev: true - - /text-table@0.2.0: - resolution: - { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, - } - dev: true - - /through2@4.0.2: - resolution: - { - integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==, - } - dependencies: - readable-stream: 3.6.2 - dev: true - - /through@2.3.8: - resolution: - { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, - } - - /title-case@3.0.3: - resolution: - { - integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==, - } - dependencies: - tslib: 2.6.2 - dev: true - - /tmpl@1.0.5: - resolution: - { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, - } - dev: true - - /to-fast-properties@2.0.0: - resolution: - { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, - } - engines: { node: '>=4' } - dev: true - - /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: '>=8.0' } + + text-encoding-utf-8@1.0.2: {} + + text-table@0.2.0: {} + + through@2.3.8: {} + + tmpl@1.0.5: {} + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - dev: true - - /tr46@0.0.3: - resolution: - { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, - } - - /trim-newlines@3.0.1: - resolution: - { - integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, - } - engines: { node: '>=8' } - dev: true - - /ts-api-utils@1.3.0(typescript@5.4.2): - resolution: - { - integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==, - } - engines: { node: '>=16' } - peerDependencies: - typescript: '>=4.2.0' + + tr46@0.0.3: {} + + tree-kill@1.2.2: {} + + ts-api-utils@1.3.0(typescript@5.5.4): dependencies: - typescript: 5.4.2 - dev: true + typescript: 5.5.4 - /ts-jest@29.1.2(@babel/core@7.24.0)(jest@29.7.0)(typescript@5.4.2): - resolution: - { - integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==, - } - engines: { node: ^16.10.0 || ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)))(typescript@5.5.4): dependencies: - '@babel/core': 7.24.0 bs-logger: 0.2.6 + ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.11.26) + jest: 29.7.0(@types/node@22.5.4)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.0 - typescript: 5.4.2 + semver: 7.6.3 + typescript: 5.5.4 yargs-parser: 21.1.1 - dev: true + optionalDependencies: + '@babel/core': 7.25.2 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.25.2) + + ts-node-dev@2.0.0(@types/node@22.5.4)(typescript@5.5.4): + dependencies: + chokidar: 3.6.0 + dynamic-dedupe: 0.3.0 + minimist: 1.2.8 + mkdirp: 1.0.4 + resolve: 1.22.8 + rimraf: 2.7.1 + source-map-support: 0.5.13 + tree-kill: 1.2.2 + ts-node: 10.9.2(@types/node@22.5.4)(typescript@5.5.4) + tsconfig: 7.0.0 + typescript: 5.5.4 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' - /tsconfig-paths@3.15.0: - resolution: - { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, - } + ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.5.4 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.5.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - - /tslib@2.4.1: - resolution: - { - integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==, - } - dev: true - - /tslib@2.6.2: - resolution: - { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, - } - dev: true - - /type-check@0.4.0: - resolution: - { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, - } - engines: { node: '>= 0.8.0' } + + tsconfig@7.0.0: + dependencies: + '@types/strip-bom': 3.0.0 + '@types/strip-json-comments': 0.0.30 + strip-bom: 3.0.0 + strip-json-comments: 2.0.1 + + tslib@2.7.0: {} + + tweetnacl@1.0.3: {} + + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - - /type-detect@4.0.8: - resolution: - { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, - } - engines: { node: '>=4' } - dev: true - - /type-fest@0.18.1: - resolution: - { - integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, - } - engines: { node: '>=10' } - dev: true - - /type-fest@0.20.2: - resolution: - { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, - } - engines: { node: '>=10' } - dev: true - - /type-fest@0.21.3: - resolution: - { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, - } - engines: { node: '>=10' } - dev: true - - /type-fest@0.6.0: - resolution: - { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, - } - engines: { node: '>=8' } - dev: true - - /type-fest@0.8.1: - resolution: - { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, - } - engines: { node: '>=8' } - dev: true - - /type-fest@3.13.1: - resolution: - { - integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==, - } - engines: { node: '>=14.16' } - dev: true - - /typed-array-buffer@1.0.2: - resolution: - { - integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==, - } - engines: { node: '>= 0.4' } + + type-detect@4.0.8: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@4.26.0: {} + + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: - { - integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==, - } - engines: { node: '>= 0.4' } + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: - { - integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==, - } - engines: { node: '>= 0.4' } + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -8726,14 +5678,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.5: - resolution: - { - integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==, - } - engines: { node: '>= 0.4' } + typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -8741,425 +5687,124 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - - /typescript@5.4.2: - resolution: - { - integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==, - } - engines: { node: '>=14.17' } - hasBin: true - dev: true - /ua-parser-js@1.0.37: - resolution: - { - integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==, - } - dev: true + typescript@5.5.4: {} - /unbox-primitive@1.0.2: - resolution: - { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, - } + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - - /unc-path-regex@0.1.2: - resolution: - { - integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==, - } - engines: { node: '>=0.10.0' } - dev: true - - /undici-types@5.26.5: - resolution: - { - integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==, - } - - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: - { - integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==, - } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.0 - dev: true - /upper-case-first@2.0.2: - resolution: - { - integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==, - } - dependencies: - tslib: 2.6.2 - dev: true + undici-types@6.19.8: {} - /upper-case@2.0.2: - resolution: - { - integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==, - } + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: - tslib: 2.6.2 - dev: true + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 - /uri-js@4.4.1: - resolution: - { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, - } + uri-js@4.4.1: dependencies: punycode: 2.3.1 - dev: true - - /utf-8-validate@5.0.10: - resolution: - { - integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==, - } - engines: { node: '>=6.14.2' } - requiresBuild: true - dependencies: - node-gyp-build: 4.8.0 - dev: false - - /util-deprecate@1.0.2: - resolution: - { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, - } - dev: true - - /uuid@8.3.2: - resolution: - { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, - } - hasBin: true - dev: false - /v8-to-istanbul@9.2.0: - resolution: - { - integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==, - } - engines: { node: '>=10.12.0' } + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.2 + optional: true + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: - { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, - } - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - dev: true - - /value-or-promise@1.0.12: - resolution: - { - integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==, - } - engines: { node: '>=12' } - dev: true - - /walker@1.0.8: - resolution: - { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, - } + + walker@1.0.8: dependencies: makeerror: 1.0.12 - dev: true - /webidl-conversions@3.0.1: - resolution: - { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, - } + webidl-conversions@3.0.1: {} - /whatwg-url@5.0.0: - resolution: - { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, - } + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - /which-boxed-primitive@1.0.2: - resolution: - { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, - } + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - - /which-module@2.0.1: - resolution: - { - integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, - } - dev: true - - /which-typed-array@1.1.15: - resolution: - { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, - } - engines: { node: '>= 0.4' } + + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-tostringtag: 1.0.2 - dev: true - - /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: '>= 8' } - hasBin: true + + which@2.0.2: dependencies: isexe: 2.0.0 - dev: true - /wrap-ansi@6.2.0: - resolution: - { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, - } - engines: { node: '>=8' } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: true + word-wrap@1.2.5: {} - /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: '>=10' } + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true - - /wrap-ansi@9.0.0: - resolution: - { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, - } - engines: { node: '>=18' } - dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 - dev: true - - /wrappy@1.0.2: - resolution: - { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, - } - dev: true - - /write-file-atomic@4.0.2: - resolution: - { - integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - - /ws@7.4.6: - resolution: - { - integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==, - } - engines: { node: '>=8.3.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws@7.5.9: - resolution: - { - integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==, - } - engines: { node: '>=8.3.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): - resolution: - { - integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==, - } - 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 - dependencies: + + ws@7.4.6(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - dev: false - - /y18n@4.0.3: - resolution: - { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, - } - dev: true - - /y18n@5.0.8: - resolution: - { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, - } - engines: { node: '>=10' } - dev: true - - /yallist@3.1.1: - resolution: - { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, - } - dev: true - - /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - dev: true - - /yaml@2.3.4: - resolution: - { - integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==, - } - engines: { node: '>= 14' } - dev: true - - /yargs-parser@18.1.3: - resolution: - { - integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, - } - engines: { node: '>=6' } - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - dev: true - - /yargs-parser@20.2.9: - resolution: - { - integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, - } - engines: { node: '>=10' } - dev: true - - /yargs-parser@21.1.1: - resolution: - { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, - } - engines: { node: '>=12' } - dev: true - - /yargs@15.4.1: - resolution: - { - integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, - } - engines: { node: '>=8' } - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - dev: true - - /yargs@17.7.2: - resolution: - { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, - } - engines: { node: '>=12' } + + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yaml-ast-parser@0.0.43: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 - dev: true - - /yocto-queue@0.1.0: - resolution: - { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, - } - engines: { node: '>=10' } - dev: true + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} diff --git a/release.config.js b/release.config.js index bf13e26..53fbb8e 100644 --- a/release.config.js +++ b/release.config.js @@ -9,7 +9,7 @@ module.exports = { plugins: [ '@semantic-release/commit-analyzer', '@semantic-release/release-notes-generator', - [ + [ '@semantic-release/changelog', { changelogFile: 'CHANGELOG.md', diff --git a/scripts/compress.js b/scripts/compress.js index 62ad4af..dd64df4 100644 --- a/scripts/compress.js +++ b/scripts/compress.js @@ -26,10 +26,13 @@ function processFile(inputFile, outputFile) { } const filesToProcess = [ - { input: 'dist/gatewaySdk/index.d.ts', output: 'dist/gatewaySdk/index.d.ts' }, { - input: 'dist/gatewaySdk/sources/GatewaySDK/types.d.ts', - output: 'dist/gatewaySdk/sources/GatewaySDK/types.d.ts', + input: 'dist/gatewaySdk/sources/Gateway/index.d.ts', + output: 'dist/gatewaySdk/sources/Gateway/index.d.ts', + }, + { + input: 'dist/gatewaySdk/sources/Gateway/types.d.ts', + output: 'dist/gatewaySdk/sources/Gateway/types.d.ts', }, ]; diff --git a/scripts/compress.sh b/scripts/compress.sh index d578ce9..d44a454 100755 --- a/scripts/compress.sh +++ b/scripts/compress.sh @@ -1,10 +1,9 @@ #!/bin/sh +cd "dist/" - -files="dist/gatewaySdk/index.js dist/src/auth/auth.js dist/src/data-model/data-model.js dist/src/dataRequestsTemplate/dataRequestsTemplate.js dist/src/organization/organization.js dist/src/pda/pda.js dist/src/proof/proof.js dist/src/request/request.js dist/src/user/user.js" - -for file in $files; do +find . -type f -name "*.js" | while read -r file; do + echo "Processing file: $file" uglifyjs "$file" -o "$file" done diff --git a/scripts/generate-types.ts b/scripts/generate-types.ts new file mode 100644 index 0000000..6b8628d --- /dev/null +++ b/scripts/generate-types.ts @@ -0,0 +1,157 @@ +import fs from 'fs'; + +const getJSONSchema = async () => { + try { + const data = await fetch('https://dev.api.gateway.tech/docs/swagger.json'); + + const body = await data.json(); + + const types = generateTypes(body.definitions); + + const routes = generateRouteConstants(body.paths); + + fs.writeFileSync('./src/common/types.ts', types); + fs.writeFileSync('./src/common/routes.ts', routes); + } catch (error) { + console.log(error); + } +}; + +type PathItem = Record; + +interface Operation { + summary: string; +} + +function generateRouteConstants(paths: Record): string { + const constants: string[] = ['export const routes = {']; + + for (const path in paths) { + const pathItem = paths[path]; + + for (const method in pathItem) { + const operation = pathItem[method]; + const constantName = generateRouteConstantName( + method, + path, + operation.summary, + ); + const parameterizedPath = path; + constants.push(` ${constantName}: "${parameterizedPath}",`); + } + } + + constants.push('};'); + return constants.join('\n'); +} + +function generateRouteConstantName( + method: string, + path: string, + summary: string, +): string { + let name = summary.trim(); + if (name === '') { + name = path; + } + return toPascalCase(name); +} + +function toPascalCase(str: string): string { + const cleanedStr = str.replace(/^model\./, ''); + return cleanedStr + .replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) { + return index === 0 ? match.toUpperCase() : match.toUpperCase(); + }) + .replace(/\W+/g, ''); +} + +const generateTypes = (definitions: any): string => { + const types: string[] = [ + `import { ClientMethod, Middleware } from 'openapi-fetch'; +import type { MediaType } from 'openapi-typescript-helpers';\n\n`, + `export interface Config { + token: string; + url: string; + logging?: boolean; +}\n\n`, + `// eslint-disable-next-line @typescript-eslint/ban-types +export interface OpenAPIClient { + GET: ClientMethod; + PUT: ClientMethod; + POST: ClientMethod; + DELETE: ClientMethod; + OPTIONS: ClientMethod; + HEAD: ClientMethod; + PATCH: ClientMethod; + TRACE: ClientMethod; + use(...middleware: Middleware[]): void; + eject(...middleware: Middleware[]): void; +}\n`, + `\nexport enum DataAssetType { + StructuredData = 'Structured Data', + UnstructedData = 'Other', +}\n`, + ]; + + const processSchema = (schema: any): string => { + if (schema.$ref) { + const ref = schema.$ref.split('/').pop(); + if (ref && definitions[ref]) { + return toPascalCase(ref); + } + } + + if (schema.type === 'object') { + const properties = schema.properties + ? Object.entries(schema.properties).map(([key, value]) => { + const propType = processSchema(value); + return `${key}${schema.required && schema.required.includes(key) ? '' : '?'}: ${propType};`; + }) + : []; + + return `{ ${properties.join(' ')} }`; + } + + if (schema.type === 'array') { + const itemType = processSchema(schema.items); + return `${itemType}[]`; + } + + if (schema.enum) { + return schema.enum.map((e: any) => `${e.toUpperCase()} = '${e}'`); + } + + switch (schema.type) { + case 'string': + return 'string'; + case 'integer': + return 'number'; + case 'number': + return 'number'; + case 'boolean': + return 'boolean'; + default: + return 'any'; + } + }; + + Object.entries(definitions).forEach(([typeName, schema]) => { + if (typeName === 'helper.PaginatedResponse') { + const processedSchema = processSchema(schema); + types.push( + `export type ${toPascalCase(typeName)} = ${processedSchema.replace(/\bany\b/g, 'T')};\n`, + ); + } else if ((schema as any).enum) { + types.push( + `export enum ${toPascalCase(typeName)} {${processSchema(schema)}};\n`, + ); + } else + types.push( + `export type ${toPascalCase(typeName)} = ${processSchema(schema)};\n`, + ); + }); + return types.join('\n'); +}; + +getJSONSchema(); diff --git a/scripts/generateSDK/BareFilter.js b/scripts/generateSDK/BareFilter.js deleted file mode 100644 index 9359275..0000000 --- a/scripts/generateSDK/BareFilter.js +++ /dev/null @@ -1,111 +0,0 @@ -const { Minimatch } = require('minimatch'); -const { MapperKind, mapSchema } = require('@graphql-tools/utils'); - -class BareFilter { - noWrap = true; - typeGlobs; - fieldsMap; - argsMap; - - constructor({ filters }) { - this.typeGlobs = []; - this.fieldsMap = new Map(); - this.argsMap = new Map(); - - for (const filter of filters) { - const [typeName, fieldNameOrGlob, argsGlob] = filter.split('.'); - - if (!fieldNameOrGlob) { - this.typeGlobs.push(typeName); - continue; - } - - const rawGlob = argsGlob || fieldNameOrGlob; - const fixedGlob = - rawGlob.includes('{') && !rawGlob.includes(',') - ? rawGlob.replace('{', '').replace('}', '') - : rawGlob; - const polishedGlob = fixedGlob.split(', ').join(',').trim(); - - if (typeName === 'Type') { - this.typeGlobs.push(polishedGlob); - continue; - } - - const mapName = argsGlob ? 'argsMap' : 'fieldsMap'; - const mapKey = argsGlob ? `${typeName}.${fieldNameOrGlob}` : typeName; - const currentRules = this[mapName].get(mapKey) || []; - - this[mapName].set(mapKey, [...currentRules, polishedGlob]); - } - } - - matchInArray(rulesArray, value) { - for (const rule of rulesArray) { - const ruleMatcher = new Minimatch(rule); - if (!ruleMatcher.match(value)) return null; - } - return undefined; - } - - transformSchema(schema) { - let transformedSchema = mapSchema(schema, { - ...(this.typeGlobs.length && { - [MapperKind.TYPE]: (type) => - this.matchInArray(this.typeGlobs, type.toString()), - }), - ...((this.fieldsMap.size || this.argsMap.size) && { - [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => { - const fieldRules = this.fieldsMap.get(typeName); - const wildcardArgRules = this.argsMap.get(`${typeName}.*`) || []; - const fieldArgRules = - this.argsMap.get(`${typeName}.${fieldName}`) || []; - const argRules = wildcardArgRules.concat(fieldArgRules); - const hasFieldRules = Boolean(fieldRules && fieldRules.length); - const hasArgRules = Boolean(argRules && argRules.length); - - if ( - hasFieldRules && - this.matchInArray(fieldRules, fieldName) === null - ) - return null; - if (!hasArgRules) return undefined; - - const fieldArgs = Object.entries(fieldConfig.args).reduce( - (args, [argName, argConfig]) => - this.matchInArray(argRules, argName) === null - ? args - : { ...args, [argName]: argConfig }, - {}, - ); - - return { ...fieldConfig, args: fieldArgs }; - }, - }), - ...(this.fieldsMap.size && { - [MapperKind.INPUT_OBJECT_FIELD]: (_, fieldName, typeName) => { - const fieldRules = this.fieldsMap.get(typeName); - const hasFieldRules = Boolean(fieldRules && fieldRules.length); - - if ( - hasFieldRules && - this.matchInArray(fieldRules, fieldName) === null - ) - return null; - - return undefined; - }, - }), - }); - - transformedSchema = mapSchema(transformedSchema, { - [MapperKind.ROOT_OBJECT]: (type) => { - if (Object.keys(type.getFields()).length === 0) return null; - }, - }); - - return transformedSchema; - } -} - -module.exports = BareFilter; diff --git a/scripts/generateSDK/generate.js b/scripts/generateSDK/generate.js deleted file mode 100644 index bd2ab48..0000000 --- a/scripts/generateSDK/generate.js +++ /dev/null @@ -1,81 +0,0 @@ -const { buildClientSchema, getIntrospectionQuery } = require('graphql'); -const { getUnifiedSchema } = require('./utils'); -const BareFilter = require('./BareFilter'); -const { generateTsArtifacts } = require('./generateArtificats'); -const { join } = require('path'); -const fs = require('fs'); - -async function fetchAndGetUnifiedSchema() { - try { - // Get the schema from graphql end point - const response = await fetch( - 'https://develop.protocol.mygateway.xyz/graphql', - { - method: 'POST', - headers: { - accept: - 'application/graphql-response+json, application/json, multipart/mixed', - 'content-type': 'application/json', - }, - body: JSON.stringify({ query: getIntrospectionQuery() }), - }, - ); - - if (!response.ok) { - throw new Error(`HTTP error! Status: ${response.status}`); - } - - // Decode it to JSON - const data = await response.json(); - - // Build a base schema needed so that we can parse it and create codegen - const baseSchema = buildClientSchema(data.data, { - assumeValid: true, - }); - - // We need to remove some duplicate values from our schema we use bare filters to do that! - const bareFilter = new BareFilter({ - filters: ['PDAMetadata.!status', 'RequestMetadata.!request'], - }); - const modifedSchema = bareFilter.transformSchema(baseSchema); - - // Now we get perfect schema which we can use to generate ts files - return { - unifiedSchema: getUnifiedSchema(modifedSchema), - rawSource: data.data, - }; - } catch (error) { - throw error; - } -} - -async function generateSdk() { - try { - fs.access(join(__dirname, '..', '..', 'gatewaySdk'), (err) => { - if (err) { - } else { - fs.rmdir( - join(__dirname, '..', '..', 'gatewaySdk'), - { recursive: true }, - (e) => { - if (e) console.log('Error in deleting existing artifacts: ', e); - }, - ); - } - }); - - const { rawSource, unifiedSchema } = await fetchAndGetUnifiedSchema(); - generateTsArtifacts({ - baseDir: join(__dirname, '..', '..'), - artifactsDirectory: 'gatewaySdk', - fileType: 'ts', - rawSources: [rawSource], - setDepth: 2, - unifiedSchema, - }); - } catch (error) { - console.log('Error in generateSdk: ', error); - } -} - -generateSdk(); diff --git a/scripts/generateSDK/generateArtificats.js b/scripts/generateSDK/generateArtificats.js deleted file mode 100644 index ec3dbc0..0000000 --- a/scripts/generateSDK/generateArtificats.js +++ /dev/null @@ -1,270 +0,0 @@ -const fs = require('fs'); -const { join, relative, resolve, normalize } = require('path'); -const ts = require('typescript'); -const { codegen } = require('@graphql-codegen/core'); -const typedDocumentNodePlugin = require('@graphql-codegen/typed-document-node'); -const tsBasePlugin = require('@graphql-codegen/typescript'); -const typescriptGraphqlRequestSdk = require('@graphql-codegen/typescript-graphql-request'); -const tsOperationsPlugin = require('@graphql-codegen/typescript-operations'); -const tsResolversPlugin = require('@graphql-codegen/typescript-resolvers'); -const { - pathExists, - printWithCache, - writeFile, - generateOperations, -} = require('./utils'); -const { printSchemaWithDirectives } = require('@graphql-tools/utils'); - -function toPascalCase(str) { - return str - .replace(/(\w)(\w*)/g, function (_, first, rest) { - return first.toUpperCase() + rest.toLowerCase(); - }) - .replace(/\s+/g, ''); -} - -async function generateTypesForApi(options) { - const config = { - skipTypename: true, - namingConvention: 'keep', - enumsAsTypes: true, - ignoreEnumValuesFromSchema: true, - }; - const baseTypes = await codegen({ - filename: options.name + '_types.ts', - documents: [], - config, - schemaAst: options.schema, - schema: undefined, // This is not necessary on codegen. Will be removed later - skipDocumentsValidation: true, - plugins: [ - { - typescript: {}, - }, - ], - pluginMap: { - typescript: tsBasePlugin, - }, - }); - const namespace = toPascalCase(`${options.name}Types`); - - const codeAst = ` - - -export namespace ${namespace} { - ${baseTypes} - } -`; - - return { - identifier: namespace, - codeAst, - }; -} - -const BASEDIR_ASSIGNMENT_COMMENT = `/* BASEDIR_ASSIGNMENT */`; - -async function generateTsArtifacts({ - unifiedSchema, - rawSources, - baseDir, - artifactsDirectory, - setDepth, - fileType, -}) { - const artifactsDir = join(baseDir, artifactsDirectory); - console.log('Generating index file in TypeScript'); - for (const rawSource of rawSources) { - const transformedSchema = unifiedSchema.extensions.sourceMap.get(rawSource); - const sdl = printSchemaWithDirectives(transformedSchema); - await writeFile( - join(artifactsDir, `sources/GatewaySDK/schema.graphql`), - sdl, - ); - } - const documentsInput = generateOperations(unifiedSchema, setDepth); - - const pluginsInput = [ - { - typescript: {}, - }, - { - resolvers: {}, - }, - { - contextSdk: {}, - }, - ]; - if (documentsInput.length) { - pluginsInput.push( - { - typescriptOperations: {}, - }, - { - typedDocumentNode: {}, - }, - { - typescriptGraphqlRequest: { - documentMode: 'external', - importDocumentNodeExternallyFrom: 'NOWHERE', - }, - }, - ); - const documentHashMap = {}; - for (const document of documentsInput) { - if (document.sha256Hash) { - documentHashMap[document.sha256Hash] = - document.rawSDL || printWithCache(document.document); - } - } - await writeFile( - join(artifactsDir, `persisted_operations.json`), - JSON.stringify(documentHashMap, null, 2), - ); - } - const codegenOutput = - '// @ts-nocheck\n' + - '/* This file is auto generated \n' + - 'Do not make changes to this file */\n' + - ( - await codegen({ - filename: 'types.ts', - documents: documentsInput, - config: { - skipTypename: true, - flattenGeneratedTypes: false, - onlyOperationTypes: false, - preResolveTypes: false, - namingConvention: 'keep', - documentMode: 'graphQLTag', - gqlImport: 'graphql-request#gql', - enumsAsTypes: true, - ignoreEnumValuesFromSchema: true, - useIndexSignature: true, - noSchemaStitching: false, - federation: false, - }, - schemaAst: unifiedSchema, - schema: undefined, // This is not necessary on codegen. - skipDocumentsValidation: true, - pluginMap: { - typescript: tsBasePlugin, - typescriptOperations: tsOperationsPlugin, - typedDocumentNode: typedDocumentNodePlugin, - typescriptGraphqlRequest: typescriptGraphqlRequestSdk, - resolvers: tsResolversPlugin, - contextSdk: { - plugin: async () => { - const importCodes = new Set(); - await Promise.all( - rawSources.map(async (source) => { - const sourceMap = unifiedSchema.extensions.sourceMap; - const sourceSchema = sourceMap.get(source); - const { identifier, codeAst } = await generateTypesForApi({ - schema: sourceSchema, - name: 'GatewaySDK', - contextVariables: { key: 'value' }, - }); - if (codeAst) { - const content = - '// @ts-nocheck\n' + - '/* This file is auto generated \n' + - 'Do not make changes to this file */' + - codeAst; - await writeFile( - join(artifactsDir, `sources/GatewaySDK/types.ts`), - content, - ); - } - - return { - identifier, - codeAst, - }; - }), - ); - - return { - prepend: [[...importCodes].join('\n'), '\n\n'], - content: ['testing-1', 'testing-2'].join('\n\n'), - }; - }, - }, - }, - plugins: pluginsInput, - }) - ) - .replace(`import * as Operations from 'NOWHERE';\n`, '') - .replace('testing-1', '') - .replace('testing-2', '') - .replace(/Operations./g, ''); - - const endpointAssignmentCJS = `const baseDir = join(typeof __dirname === 'string' ? __dirname : '/', '${relative( - artifactsDir, - baseDir, - )}');`; - - const tsFilePath = join(artifactsDir, 'index.ts'); - - const jobs = []; - const jsFilePath = join(artifactsDir, 'index.js'); - const dtsFilePath = join(artifactsDir, 'index.d.ts'); - - const cjsJob = async () => { - console.log('Writing index.ts for CJS to the disk.'); - await writeFile( - tsFilePath, - codegenOutput.replace(BASEDIR_ASSIGNMENT_COMMENT, endpointAssignmentCJS), - ); - - if (await pathExists(jsFilePath)) { - await fs.promises.unlink(jsFilePath); - } - if (fileType !== 'ts') { - console.log('Compiling TS file as CommonJS Module to `index.js`'); - compileTS(tsFilePath, ts.ModuleKind.CommonJS, [jsFilePath, dtsFilePath]); - - console.log('Deleting index.ts'); - await fs.promises.unlink(tsFilePath); - } - }; - - function setTsConfigDefault() { - jobs.push(cjsJob); - } - const rootDir = resolve('./'); - const tsConfigPath = join(rootDir, 'tsconfig.json'); - if (await pathExists(tsConfigPath)) { - setTsConfigDefault(); - } - - for (const job of jobs) { - await job(); - } -} - -function compileTS(tsFilePath, module, outputFilePaths) { - const options = { - target: ts.ScriptTarget.ESNext, - module, - sourceMap: false, - inlineSourceMap: false, - importHelpers: true, - allowSyntheticDefaultImports: true, - esModuleInterop: true, - declaration: true, - }; - const host = ts.createCompilerHost(options); - - const hostWriteFile = host.writeFile.bind(host); - host.writeFile = (fileName, ...rest) => { - if (outputFilePaths.some((f) => normalize(f) === normalize(fileName))) { - return hostWriteFile(fileName, ...rest); - } - }; - - const program = ts.createProgram([tsFilePath], options, host); - program.emit(); -} - -module.exports = { generateTsArtifacts, compileTS }; diff --git a/scripts/generateSDK/utils.js b/scripts/generateSDK/utils.js deleted file mode 100644 index 52153e6..0000000 --- a/scripts/generateSDK/utils.js +++ /dev/null @@ -1,118 +0,0 @@ -const fs = require('fs'); -const { dirname: getDirname } = require('path'); -const { DocumentNode, print } = require('graphql'); -const { - mapSchema, - memoize1, - buildOperationNodeForField, - getRootTypeMap, - parseGraphQLSDL, -} = require('@graphql-tools/utils'); - -function getUnifiedSchema(rawSource) { - let schema = rawSource; - - schema.extensions = schema.extensions || {}; - Object.defineProperty(schema.extensions, 'sourceMap', { - get: () => { - return { - get() { - const nonExecutableSchema = mapSchema(schema); - if (rawSource.transforms?.length) { - return rawSource.transforms.reduce( - (schema, transform) => - 'transformSchema' in transform - ? transform.transformSchema(schema, rawSource) - : schema, - nonExecutableSchema, - ); - } - return nonExecutableSchema; - }, - }; - }, - }); - return schema; -} - -async function pathExists(path) { - if (!path) { - return false; - } - try { - await fs.promises.stat(path); - return true; - } catch (e) { - if (e.code === 'ENOENT') { - return false; - } else { - throw e; - } - } -} - -function writeJSON(path, data, replacer, space) { - const stringified = JSON.stringify(data, replacer, space); - return writeFile(path, stringified, 'utf-8'); -} - -const writeFile = async (filePath, data, options) => { - if (typeof filePath === 'string') { - const containingDir = getDirname(filePath); - if (!(await pathExists(containingDir))) { - await mkdir(containingDir); - } - } - return fs.promises.writeFile(filePath, data, options); -}; - -async function mkdir(path, options = { recursive: true }) { - const ifExists = await pathExists(path); - if (!ifExists) { - await fs.promises.mkdir(path, options); - } -} - -const tempMap = new Map(); - -const printWithCache = memoize1(function printWithCache(document) { - const stringifedDocumentJson = JSON.stringify(document); - let sdl = tempMap.get(stringifedDocumentJson); - if (!sdl) { - sdl = print(document).trim(); - tempMap.set(stringifedDocumentJson, sdl); - } - return sdl; -}); - -function generateOperations(schema, selectionSetDepth) { - const sources = []; - const rootTypeMap = getRootTypeMap(schema); - for (const [operationType, rootType] of rootTypeMap) { - const fieldMap = rootType.getFields(); - for (const fieldName in fieldMap) { - const operationNode = buildOperationNodeForField({ - schema, - kind: operationType, - field: fieldName, - depthLimit: selectionSetDepth, - }); - const defaultName = `operation_${sources.length}`; - const virtualFileName = operationNode.name?.value || defaultName; - const rawSDL = print(operationNode); - const source = parseGraphQLSDL(`${virtualFileName}.graphql`, rawSDL); - sources.push(source); - } - } - return sources; -} - -module.exports = { - generateOperations, - printWithCache, - mkdir, - writeFile, - writeJSON, - getUnifiedSchema, - pathExists, -}; diff --git a/src/Gateway.ts b/src/Gateway.ts deleted file mode 100644 index bf7495e..0000000 --- a/src/Gateway.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { GraphQLClient } from 'graphql-request'; -import { getSdk, Sdk } from '../gatewaySdk'; -import { Organization } from './organization/organization'; -import { Auth } from './auth/auth'; -import { PDA } from './pda/pda'; -import { DataRequestTemplate } from './dataRequestsTemplate/dataRequestsTemplate'; -import { Proof } from './proof/proof'; -import { Request } from './request/request'; -import { DataModel } from './data-model/data-model'; -import { User } from './user/user'; -import { Transaction } from './transaction/transaction'; -export { - AuthType, - Chain, - OrganizationIdentifierType, - PDAStatus, - UserIdentifierType, - OrganizationRole, -} from './types'; - -export class Gateway { - private sdk: Sdk; - public dataModel: DataModel; - public proof: Proof; - public user: User; - public request: Request; - public pda: PDA; - public dataRequestTemplate: DataRequestTemplate; - public organization: Organization; - public auth: Auth; - public transaction: Transaction; - - constructor({ - apiKey, - token, - url, - }: { - apiKey: string; - token: string; - url: string; - }) { - if (!apiKey) throw new Error('No apikey found!'); - if (!token) throw new Error('No token found!'); - if (!url) throw new Error('No url found!.Enter either testnet or prod'); - - const client = new GraphQLClient(url, { - headers: { Authorization: `Bearer ${token}`, 'X-Api-Key': apiKey }, - }); - - this.sdk = getSdk(client); - this.pda = new PDA(this.sdk); - this.dataRequestTemplate = new DataRequestTemplate(this.sdk); - this.organization = new Organization(this.sdk); - this.auth = new Auth(this.sdk); - this.dataModel = new DataModel(this.sdk); - this.proof = new Proof(this.sdk); - this.request = new Request(this.sdk); - this.user = new User(this.sdk); - this.transaction = new Transaction(this.sdk); - } -} diff --git a/src/api.d.ts b/src/api.d.ts new file mode 100644 index 0000000..db44a4e --- /dev/null +++ b/src/api.d.ts @@ -0,0 +1,954 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + '/accounts': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create account + * @description Create a new account + */ + post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** @description Account data */ + requestBody: { + content: { + 'application/json': components['schemas']['model.AccountCreateRequest']; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.TokenResponse']; + }; + }; + }; + }; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/accounts/me': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get my account + * @description Get my account + */ + get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.MyAccountResponse']; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/auth': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Authenticate account + * @description Authenticate account + */ + post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** @description model.AuthRequest */ + requestBody: { + content: { + 'application/json': components['schemas']['model.AuthRequest']; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.TokenResponse']; + }; + }; + }; + }; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/auth/message': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Generate sign message + * @description Generate sign message + */ + get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.MessageResponse']; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/auth/refresh-token': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Refresh token + * @description Refresh token + */ + get: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.TokenResponse']; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create a new data asset + * @description Create a new data asset. For structured data submission, use application/json. For file uploads, use multipart/form-data. Note: All date fields must be in RFC 3339 format (e.g., 2025-09-02T14:31:00Z). + */ + post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: { + content: { + 'application/json': { + /** + * Format: binary + * @description File to be uploaded when using multipart/form-data + */ + data?: string; + /** @description Access control list (ACL) for the data asset (e.g., 'public-read') */ + acl?: string; + /** @description Expiration date for the data asset (in RFC 3339 format) */ + expiration_date?: string; + }; + ' multipart/form-data': { + /** + * Format: binary + * @description File to be uploaded when using multipart/form-data + */ + data?: string; + /** @description Access control list (ACL) for the data asset (e.g., 'public-read') */ + acl?: string; + /** @description Expiration date for the data asset (in RFC 3339 format) */ + expiration_date?: string; + }; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.DataAssetIDRequestAndResponse']; + }; + }; + }; + }; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets/me': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get my data assets + * @description Get all data assets that belong to the authenticated user + */ + get: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + page_size?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['helper.PaginatedResponse'] & { + data?: components['schemas']['model.PublicDataAsset'][]; + }; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets/{id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get data asset by ID + * @description Get data asset by ID + */ + get: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.PublicDataAsset']; + }; + }; + }; + }; + /** + * Update data asset by ID + * @description Update data asset by ID. For structured data submission, use application/json. For file uploads, use multipart/form-data. Note: All date fields must be in RFC 3339 format (e.g., 2025-09-02T14:31:00Z). + */ + put: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + requestBody?: { + content: { + 'application/json': { + /** + * Format: binary + * @description File to be uploaded when using multipart/form-data + */ + data?: string; + /** @description Access control list (ACL) for the data asset (e.g., 'public-read') */ + acl?: string; + /** @description Expiration date for the data asset (in RFC 3339 format) */ + expiration_date?: string; + }; + ' multipart/form-data': { + /** + * Format: binary + * @description File to be uploaded when using multipart/form-data + */ + data?: string; + /** @description Access control list (ACL) for the data asset (e.g., 'public-read') */ + acl?: string; + /** @description Expiration date for the data asset (in RFC 3339 format) */ + expiration_date?: string; + }; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.PublicDataAsset']; + }; + }; + }; + }; + post?: never; + /** + * Delete data asset by ID + * @description Delete data asset by ID + */ + delete: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['responses.MessageResponse']; + }; + }; + }; + }; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets/{id}/acl': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * Update ACL items to data asset + * @description Update ACL items to data asset + */ + put: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + /** @description Update ACL Items Request */ + requestBody: { + content: { + 'application/json': components['schemas']['model.ACLRequest'][]; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.PublicACL'][]; + }; + }; + }; + }; + /** + * Assign ACL items to data asset + * @description Assign ACL items to data asset + */ + post: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + /** @description Assign ACL Items Request */ + requestBody: { + content: { + 'application/json': components['schemas']['model.ACLRequest'][]; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.PublicACL'][]; + }; + }; + }; + }; + /** + * Delete assigned role by ACL + * @description Delete assigned role by ACL + */ + delete: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + /** @description Delete Assigned ACL Items Request */ + requestBody: { + content: { + 'application/json': components['schemas']['model.ACLRequest'][]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['responses.MessageResponse']; + }; + }; + }; + }; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets/{id}/download': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Download data asset by ID + * @description Download data asset by ID + */ + get: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': number[]; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-assets/{id}/share': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Share data asset by ID + * @description Share data asset by ID. To share you need to have a sharing role. + */ + post: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Asset ID */ + id: number; + }; + cookie?: never; + }; + /** @description Share Data Asset Request */ + requestBody: { + content: { + 'application/json': components['schemas']['model.ShareDataAssetRequest']; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.PublicACL'][]; + }; + }; + }; + }; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-models': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get data models + * @description Get all data models + */ + get: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + page_size?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['helper.PaginatedResponse'] & { + data?: components['schemas']['model.DataModel'][]; + }; + }; + }; + }; + }; + put?: never; + /** + * Create data model + * @description Create a new data model + */ + post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** @description Data Model */ + requestBody: { + content: { + 'application/json': components['schemas']['model.DataModelRequest']; + }; + }; + responses: { + /** @description Created */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.DataModel']; + }; + }; + }; + }; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-models/me': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get data models by user + * @description Get all data models created by a user + */ + get: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + page_size?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['helper.PaginatedResponse'] & { + data?: components['schemas']['model.DataModel'][]; + }; + }; + }; + }; + }; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + '/data-models/{id}': { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get data model by ID + * @description Get a data model by its ID + */ + get: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Model ID */ + id: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.DataModel']; + }; + }; + }; + }; + /** + * Update data model + * @description Update a data model + */ + put: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Data Model ID */ + id: number; + }; + cookie?: never; + }; + /** @description Data Model */ + requestBody: { + content: { + 'application/json': components['schemas']['model.DataModel']; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + 'application/json': components['schemas']['model.DataModel']; + }; + }; + }; + }; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + 'helper.Links': { + first: string; + last: string; + next: string; + previous: string; + }; + 'helper.Meta': { + current_page: number; + items_per_page: number; + total_items: number; + total_pages: number; + }; + 'helper.PaginatedResponse': { + data: Record; + links: components['schemas']['helper.Links']; + meta: components['schemas']['helper.Meta']; + }; + 'model.ACLRequest': { + address: string; + roles: components['schemas']['model.AccessLevel'][]; + }; + /** @enum {string} */ + 'model.AccessLevel': 'view' | 'update' | 'delete' | 'share'; + 'model.AccountCreateRequest': { + message: string; + signature: string; + username: string; + wallet_address: string; + }; + 'model.AuthRequest': { + message: string; + signature: string; + wallet_address: string; + }; + 'model.CreateDataAssetRequest': { + acl?: components['schemas']['model.ACLRequest'][]; + claim?: Record; + data_model_id?: number; + expiration_date?: string; + name: string; + tags?: string[]; + }; + 'model.DataAssetIDRequestAndResponse': { + id: number; + }; + 'model.DataModel': { + created_at?: string; + created_by?: string; + deleted_at?: string; + description?: string; + id?: number; + schema?: Record; + tags?: string[]; + title?: string; + updated_at?: string; + }; + 'model.DataModelRequest': { + description: string; + schema: Record; + tags?: string[]; + title: string; + }; + 'model.MessageResponse': { + message: string; + }; + 'model.MyAccountResponse': { + created_at?: string; + did?: string; + profile_picture?: string; + updated_at?: string; + username?: string; + wallet_address?: string; + }; + 'model.PublicACL': { + address?: string; + created_at?: string; + data_asset_id?: number; + roles?: string[]; + solana_address?: string; + updated_at?: string; + }; + 'model.PublicDataAsset': { + acl?: components['schemas']['model.PublicACL'][]; + created_at?: string; + created_by: string; + data_model_id?: number; + expiration_date?: string; + fid: string; + id: number; + name: string; + size: number; + tags: string[]; + transaction_id: string; + type: string; + updated_at?: string; + }; + 'model.ShareDataAssetRequest': { + addresses?: string[]; + }; + 'model.TokenResponse': { + token: string; + }; + 'model.UpdateDataAssetRequest': { + claim?: Record; + expiration_date?: string; + name?: string; + }; + 'responses.MessageResponse': { + message?: string; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export type operations = Record; diff --git a/src/auth/auth.ts b/src/auth/auth.ts deleted file mode 100644 index ae8fbc5..0000000 --- a/src/auth/auth.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { AddWalletConfirmationInput, Sdk } from '../../gatewaySdk'; -import { AuthType, Chain } from '../types'; -import { errorHandler } from '../utils/errorHandler'; -import { - isEmailValid, - isStringValid, - isUUIDValid, - isWalletAddressvalid, -} from '../utils/validators'; - -export class Auth { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function checks the availability of a username by making a async query to the SDK. - * @param {string} username - The `username` parameter is a string that represents the username that - * needs to be checked for availability. - * @returns the result of the `checkUsernameAvailability` method, is a boolean - */ - async checkUsernameAvailability(username: string) { - try { - isStringValid(username); - return (await this.sdk.checkUsernameAvailability_query({ username })) - .checkUsernameAvailability; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `addEmail` is an asynchronous function that adds an email to a mutation using the - * SDK. - * @param {string} email - The `email` parameter is a string that represents the email address that - * needs to be added. - * @returns The addEmail function is returning the result code and email - */ - async addEmail(email: string) { - try { - isEmailValid(email); - return (await this.sdk.addEmail_mutation({ input: { email } })).addEmail; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `addEmailConfirmation` takes an email and code as input, and calls a mutation to add - * email confirmation. - * @param {string} email: a string representing the email address to be confirmed - * @param {number} code : a 6 digit code representing that was sent - * @returns the result of the `addEmailConfirmation` method call, is the logged in user. - */ - async addEmailConfirmation(email: string, code: number) { - try { - isEmailValid(email); - return ( - await this.sdk.addEmailConfirmation_mutation({ - input: { code, email }, - }) - ).addEmailConfirmation; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `addWallet` takes an wallet and optional chain as input. - * @param {string} wallet: a string representing the wallet - * @param {Chain} chain : a chain optional of type Chain - * @returns the result of the `addWallet` method call, is a message which will be used to confirm wallet. - */ - async addWallet(wallet: string, chain: Chain) { - try { - isWalletAddressvalid(wallet, chain); - return (await this.sdk.addWallet_mutation({ input: { wallet, chain } })) - .addWallet; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `addWalletConfirmation` takes an walletConfirmationInput input, and calls a mutation to add - * wallet confirmation. - * @param {AddWalletConfirmationInput} walletConfirmationInput: walletConfirmationInput of type AddWalletConfirmationInput - * @returns the result of the `addWalletConfirmation` method call, is the logged in user. - */ - async addWalletConfirmation( - walletConfirmationInput: AddWalletConfirmationInput, - ) { - try { - isStringValid(walletConfirmationInput.signature); - return await this.sdk.addWalletConfirmation_mutation({ - input: walletConfirmationInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `createWalletNounce` takes an wallet and optional chain as input - * @param {string} wallet: a string representing the wallet - * @param {Chain} chain : a chain optional of type Chain - * @returns the result of the `createWalletNounce` method call, is a message which will be used to confirm wallet. - */ - async createWalletNonce(wallet: string, chain: Chain) { - try { - isWalletAddressvalid(wallet, chain); - return ( - await this.sdk.createWalletNonce_mutation({ input: { wallet, chain } }) - ).createWalletNonce; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `deleteAccount` takes an id to soft delete the account - * @param {string} id: a string representing the user id - * @returns the result of the `deleteAccount` method call,returning the boolean | undefined if user not found - */ - async deleteAccount(id: string) { - try { - isUUIDValid(id); - return (await this.sdk.deleteAccount_mutation({ id })).deleteAccount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `loginEmail` takes an email and code as input verifies it and gives user details - * @param {string} email: a string representing the email - * @param {number} code: a number representing the verification code - * @returns the result of the `loginEmail` method call,returning the user if code is correct - */ - async loginEmail(email: string, code: number) { - try { - isEmailValid(email); - return (await this.sdk.loginEmail_mutation({ input: { email, code } })) - .loginEmail; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `loginWallet` takes an wallet and signature as input verifies it and gives user details - * @param {string} wallet: a string representing the email - * @param {string} signature: a string representing the signature generated - * @returns the result of the `loginWallet` method call,returning the user if signature is correct - */ - async loginWallet(wallet: string, chain: Chain, signature: string) { - try { - isWalletAddressvalid(wallet, chain); - isStringValid(signature); - return ( - await this.sdk.loginWallet_mutation({ - input: { wallet, signature }, - }) - ).loginWallet; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `refreshToken` takes an existing refresh token to create a new one - * @param {string} existingRefreshToken: a string representing the existing refresh token - * @returns the result of the `refreshToken` method call,returning the new refresh token and user - */ - async refreshToken(existingRefreshToken: string) { - try { - isStringValid(existingRefreshToken); - return ( - await this.sdk.refreshToken_mutation({ - input: { refresh_token: existingRefreshToken }, - }) - ).refreshToken; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function unregisterAuthMethod is an asynchronous function that takes in a JSON object and an - * AuthType, and attempts to unregister an authentication method using the SDK. - * @param {string} data: a string representing either email or wallet - * @param {AuthType} type: a AuthType representing the type like Wallet, Email and so on - * @returns the result of the `this.sdk.unregisterAuthMethod_mutation` method, which is awaited. - */ - async unregisterAuthMethod(data: string, type: AuthType) { - try { - isStringValid(data); - return await this.sdk.unregisterAuthMethod_mutation({ - input: { data, type }, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/common/constants.ts b/src/common/constants.ts new file mode 100644 index 0000000..8eea51a --- /dev/null +++ b/src/common/constants.ts @@ -0,0 +1,7 @@ +export const STRING_VALIDATION_LENGTH = 2; +export const TEST_DEFAULT_TIMEOUT = 10000; +export const DEFAULT_TAKE_LIMIT = 15; +export const ENCODING: BufferEncoding = 'base64'; +export const AESCIPHERSTRATERGY = 'AES-GCM'; +export const ENCRYPTIONSCHEME = 'RSA-OAEP'; +export const MAX_UPLOAD_FILE_SIZE = 30 * 1024 * 1024; // 30 MB diff --git a/src/common/routes.ts b/src/common/routes.ts new file mode 100644 index 0000000..09b2117 --- /dev/null +++ b/src/common/routes.ts @@ -0,0 +1,22 @@ +export const routes = { + CreateAccount: '/accounts', + GetMyAccount: '/accounts/me', + AuthenticateAccount: '/auth', + GenerateSignMessage: '/auth/message', + RefreshToken: '/auth/refresh-token', + CreateANewDataAsset: '/data-assets', + GetMyDataAssets: '/data-assets/me', + GetDataAssetByID: '/data-assets/{id}', + UpdateDataAssetByID: '/data-assets/{id}', + DeleteDataAssetByID: '/data-assets/{id}', + UpdateACLItemsToDataAsset: '/data-assets/{id}/acl', + AssignACLItemsToDataAsset: '/data-assets/{id}/acl', + DeleteAssignedRoleByACL: '/data-assets/{id}/acl', + DownloadDataAssetByID: '/data-assets/{id}/download', + ShareDataAssetByID: '/data-assets/{id}/share', + GetDataModels: '/data-models', + CreateDataModel: '/data-models', + GetDataModelsByUser: '/data-models/me', + GetDataModelByID: '/data-models/{id}', + UpdateDataModel: '/data-models/{id}', +}; diff --git a/src/common/types.ts b/src/common/types.ts new file mode 100644 index 0000000..7843ebb --- /dev/null +++ b/src/common/types.ts @@ -0,0 +1,147 @@ +import { ClientMethod, Middleware } from 'openapi-fetch'; +import type { MediaType } from 'openapi-typescript-helpers'; + +export interface Config { + token: string; + url: string; + logging?: boolean; +} + +// eslint-disable-next-line @typescript-eslint/ban-types +export interface OpenAPIClient { + GET: ClientMethod; + PUT: ClientMethod; + POST: ClientMethod; + DELETE: ClientMethod; + OPTIONS: ClientMethod; + HEAD: ClientMethod; + PATCH: ClientMethod; + TRACE: ClientMethod; + use(...middleware: Middleware[]): void; + eject(...middleware: Middleware[]): void; +} + +export enum DataAssetType { + StructuredData = 'Structured Data', + UnstructedData = 'Other', +} + +export type HelperLinks = { + first: string; + last: string; + next: string; + previous: string; +}; + +export type HelperMeta = { + current_page: number; + items_per_page: number; + total_items: number; + total_pages: number; +}; + +export type HelperPaginatedResponse = { + data: T; + links: HelperLinks; + meta: HelperMeta; +}; + +export type ACLRequest = { address: string; roles: AccessLevel[] }; + +export enum AccessLevel { + VIEW = 'view', + UPDATE = 'update', + DELETE = 'delete', + SHARE = 'share', +} + +export type AccountCreateRequest = { + message: string; + signature: string; + username: string; + wallet_address: string; +}; + +export type AuthRequest = { + message: string; + signature: string; + wallet_address: string; +}; + +export type CreateDataAssetRequest = { + acl?: ACLRequest[]; + claim?: {}; + data_model_id?: number; + expiration_date?: string; + name: string; + tags?: string[]; +}; + +export type DataAssetIDRequestAndResponse = { id: number }; + +export type DataModel = { + created_at?: string; + created_by?: string; + deleted_at?: string; + description?: string; + id?: number; + schema?: {}; + tags?: string[]; + title?: string; + updated_at?: string; +}; + +export type DataModelRequest = { + description: string; + schema: {}; + tags?: string[]; + title: string; +}; + +export type MessageResponse = { message: string }; + +export type MyAccountResponse = { + created_at?: string; + did?: string; + profile_picture?: string; + updated_at?: string; + username?: string; + wallet_address?: string; +}; + +export type PublicACL = { + address?: string; + created_at?: string; + data_asset_id?: number; + roles?: string[]; + solana_address?: string; + updated_at?: string; +}; + +export type PublicDataAsset = { + acl?: PublicACL[]; + created_at?: string; + created_by: string; + data_model_id?: number; + expiration_date?: string; + fid: string; + id: number; + name: string; + size: number; + tags: string[]; + transaction_id: string; + type: string; + updated_at?: string; +}; + +export type ShareDataAssetRequest = { addresses?: string[] }; + +export type TokenResponse = { token: string }; + +export type UpdateDataAssetRequest = { + claim?: {}; + expiration_date?: string; + name?: string; +}; + +export type ResponsesMessageResponse = { message?: string }; diff --git a/src/data-model/data-model.ts b/src/data-model/data-model.ts deleted file mode 100644 index e4d8f90..0000000 --- a/src/data-model/data-model.ts +++ /dev/null @@ -1,160 +0,0 @@ -import { - CreateDataModelInput, - Sdk, - dataModels_queryQueryVariables, - FilterDataModelInput, -} from '../../gatewaySdk'; -import { errorHandler } from '../utils/errorHandler'; -import { isUUIDValid, validateObjectProperties } from '../utils/validators'; - -export class DataModel { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `createModelInput` is an asynchronous function that takes a `CreateDataModelInput` - * object as input and returns a promise that resolves to a `createDataModel_mutationMutation` object. - * @param {CreateDataModelInput} createModelInput - The `createModelInput` parameter is of type - * `CreateDataModelInput`. It is an input object that contains the data needed to create a new data - * model. - * @returns a Promise that resolves to a value of type `createDataModel_mutationMutation`. - */ - async createDataModel(createModelInput: CreateDataModelInput) { - try { - validateObjectProperties(createModelInput); - return await this.sdk.createDataModel_mutation({ - input: createModelInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataModel` retrieves a data model using its ID and returns a promise that resolves - * to the queried data model. - * @param {string} dataModelId - The dataModelId parameter is a string that represents the unique - * identifier of a data model. It is used to query and retrieve a specific data model from the system. - * @returns a Promise that resolves to a dataModel_queryQuery object. - */ - async getDataModel(dataModelId: string) { - try { - isUUIDValid(dataModelId); - return await this.sdk.dataModel_query({ id: dataModelId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataModels` is an asynchronous function that queries data models and returns the - * result. - * @param {dataModels_queryQueryVariables} dataModel - The `dataModel` parameter is an object that - * contains variables for the `dataModels_query` query. It is of type `dataModels_queryQueryVariables`. - * @returns The `getDataModels` function is returning the result of the `dataModels_query` function - * call. - */ - - async getDataModels(variables?: dataModels_queryQueryVariables) { - try { - return await this.sdk.dataModels_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataModelsCount` is an asynchronous function that retrieves the count of data - * models based on the provided filter variables. - * @param variables - The `variables` parameter is of type `InputMaybe`. It is an - * optional input that can be used to filter the data models. The `FilterDataModelInput` is a type that - * contains various filter options . - * * The above type represents the input data model for filtering data, including consumption price, - * organization identification, and user information. - * @property {InputMaybe | undefined} consumptionPrice - It is an optional property of - * type `InputMaybe`. This means that it can either be `undefined` or an object of type - * `FloatRangeDto`. - * @property {InputMaybe | undefined} organization - The - * "organization" property is an optional input that represents the identification of an organization. - * It can be of type "InputMaybe", which means it can either be a - * valid organization identification input or undefined. - * @property {InputMaybe} user - The "user" property is of type "InputMaybe" which means it can either - * be a value of type "undefined" or a value of another type. The specific type of "user" is not - * provided in the code snippet, so it is unclear what type it should be. - * @returns The `getDataModelsCount` function is returning the result of the `dataModelsCount_query` - * method call, which is a promise. - */ - - async getDataModelsCount(filterVariables?: FilterDataModelInput) { - try { - return await this.sdk.dataModelsCount_query({ - filter: filterVariables, - }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataModelMetaData` is an asynchronous function that retrieves metadata for data - * models and throws an error if there is any. - * @returns The `getDataModelMetaData` function is returning the result of the - * `dataModelsMetadata_query` method call. - */ - async getDataModelsMetaData() { - try { - return await this.sdk.dataModelsMetadata_query(); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getIssuersByDataModel` retrieves issuers based on a given data model ID using an SDK. - * @param {string} id - A string representing the ID of the data model. - * @returns the result of the `issuersByDataModel_query` method call. - */ - async getIssuersByDataModel(id: string) { - try { - isUUIDValid(id); - return await this.sdk.issuersByDataModel_query({ id: id }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getIssuersByDataModelCount` retrieves the count of issuers based on a given data model - * ID. - * @param {string} dataModelId - The dataModelId parameter is a string that represents the ID of a data - * model. - * @returns the result of the `issuersByDataModelCount_query` method call. - */ - async getIssuersByDataModelCount(dataModelId: string) { - try { - isUUIDValid(dataModelId); - return await this.sdk.issuersByDataModelCount_query({ id: dataModelId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getTotalofIssuersByDataModel` retrieves the total number of issuers based on a given - * data model ID. - * @param {string} dataModelId - The dataModelId parameter is a string that represents the identifier - * of a data model. It is used to query the total number of issuers associated with that data model. - * @returns the result of the `getTotalofIssuersByDataModel_query` method call. - */ - async getTotalofIssuersByDataModel(dataModelId: string) { - try { - isUUIDValid(dataModelId); - return await this.sdk.getTotalofIssuersByDataModel_query({ dataModelId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/dataRequestsTemplate/dataRequestsTemplate.ts b/src/dataRequestsTemplate/dataRequestsTemplate.ts deleted file mode 100644 index 18a79ae..0000000 --- a/src/dataRequestsTemplate/dataRequestsTemplate.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { - FilterDataRequestTemplateInput, - Sdk, - TemplateSchemaInput, - dataRequestTemplates_queryQueryVariables, -} from '../../gatewaySdk'; -import { errorHandler } from '../utils/errorHandler'; -import { isUUIDValid, validateObjectProperties } from '../utils/validators'; - -export class DataRequestTemplate { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function creates a data request template using the provided input. - * @param {TemplateSchemaInput} templateInput - The `templateInput` parameter is an object that - * contains the input data for creating a data request template. It should follow the - * `TemplateSchemaInput` schema, which defines the structure and properties of the template input. - * @returns the result of the `createDataRequestTemplate_mutation` method call, which is likely a - * promise that resolves to the result of the mutation. - */ - async createDataRequestTemplate(templateInput: TemplateSchemaInput) { - try { - validateObjectProperties(templateInput); - return await this.sdk.createDataRequestTemplate_mutation({ - input: templateInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestTemplate` is an asynchronous function that queries a data request - * template using an ID and returns the result. - * @param {string} id - The `id` parameter is a string that represents the unique identifier of the - * data request template that you want to retrieve. - * @returns the result of the `dataRequestTemplate_query` method call, which is a Promise. - */ - async getDataRequestTemplate(id: string) { - try { - isUUIDValid(id); - return await this.sdk.dataRequestTemplate_query({ id }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestTemplates` retrieves data request templates based on the provided - * filter, order, skip, and take parameters. - * @param - - `filter` is an optional parameter of type `FilterDataRequestTemplateInput` that allows - * you to specify conditions to filter the data request templates. - * @returns the result of the `dataRequestTemplates_query` method call, which is a Promise - * that resolves to the data request templates. - */ - async getDataRequestTemplates( - variables?: dataRequestTemplates_queryQueryVariables, - ) { - try { - return await this.sdk.dataRequestTemplates_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestsTemplateCount` is an asynchronous function that retrieves the count - * of data request templates based on an optional filter. - * @param {FilterDataRequestTemplateInput} [filter] - The `filter` parameter is an optional input - * that allows you to specify criteria for filtering the data request templates. It is of type - * `FilterDataRequestTemplateInput`. - * @returns the count of data request templates. - */ - async getDataRequestsTemplateCount(filter?: FilterDataRequestTemplateInput) { - try { - return (await this.sdk.dataRequestTemplatesCount_query({ filter })) - .dataRequestTemplatesCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestsTemplatesMetadata` gets metadat of template - * to the SDK and returns the result, or throws an error if something goes wrong. - * @returns the result of the `dataRequestTemplatesMetadata_queryQuery` method call. - */ - async getDataRequestsTemplatesMetadata() { - try { - return await this.sdk.dataRequestTemplatesMetadata_query(); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getVerifiersByDataRequestTemplate` gets verifier for a data request template - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {string} id - The variables is a id of the template - * @returns the result of the `verifiersByDataRequestTemplate_queryQuery` method call. - */ - async getVerifiersByDataRequestTemplate(id: string) { - try { - isUUIDValid(id); - return await this.sdk.verifiersByDataRequestTemplate_query({ id }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getVerifiersByDataRequestTemplateCount` gets count of recently made transactions - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {string} id - The variables is a id of the template - * @returns the result of the `verifiersByDataRequestTemplateCount_queryQuery` method call. - */ - async getVerifiersByDataRequestTemplateCount(id: string) { - try { - isUUIDValid(id); - return (await this.sdk.verifiersByDataRequestTemplateCount_query({ id })) - .verifiersByDataRequestTemplateCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/helpers/custom-error.ts b/src/helpers/custom-error.ts new file mode 100644 index 0000000..9d25c27 --- /dev/null +++ b/src/helpers/custom-error.ts @@ -0,0 +1,29 @@ +export class GTWError extends Error { + public statusCode: number; + + constructor(message: string, res: Response) { + super(message); + this.message = captureError(message); + this.statusCode = res.status; + + Error.captureStackTrace(this, this.constructor); + } +} + +/** + * The function `captureError` checks if the input message has an 'error' property and returns either + * the error itself or its message. + * @param {any} message - The `captureError` function takes a parameter `message`, which can be of any + * type. The function checks if the `message` object has a property called `error`. If it does, the + * function returns the value of the `error` property. If the `error` property does not exist + * @returns The function `captureError` will return the `error` property of the `message` object if it + * exists. If the `error` property does not exist, it will return the `message` property of the `error` + * property. + */ +function captureError(message: any) { + if (message.hasOwnProperty('error')) { + return message.error; + } + + return message.error.message; +} diff --git a/src/helpers/helper.ts b/src/helpers/helper.ts new file mode 100644 index 0000000..ca57d66 --- /dev/null +++ b/src/helpers/helper.ts @@ -0,0 +1,44 @@ +import { Middleware } from 'openapi-fetch'; + +/** + * The function `parameterChecker` validates a token and URL, ensuring the URL is from a specific list + * of valid URLs. + * @param {string} token - The `token` parameter is a string that is used for authentication and + * authorization purposes in the code snippet provided. + * @param {string} url - The `url` parameter is a string that represents the URL that will be checked + * against a list of valid URLs in the `parameterChecker` function. The function will throw an error if + * the `url` is empty or not included in the list of valid URLs. + * @returns The function `parameterChecker` returns a boolean value. + */ +export const parameterChecker = (token: string, url: string): boolean => { + if (!token) throw new Error('No token found!'); + if (!url) + throw new Error('No url found!.Use either sandbox or production url'); + + const urls = ['https://dev.api.gateway.tech']; + + if (urls.includes(url)) return true; + else throw new Error('No valid url found!. Use sandbox or production url'); +}; + +export const networkInterceptorMiddleware: Middleware = { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async onRequest({ request, options }) { + return request; + }, + // eslint-disable-next-line @typescript-eslint/no-unused-vars + async onResponse({ request, response, options }) { + // todo error handler + return response; + }, +}; + +/** + * The `toRFC3339` function converts a Date object to a string in RFC 3339 format. + * @param {Date} date - Date object that represents a specific date and time. + * @returns The function `toRFC3339` is returning the input `date` parameter in the RFC 3339 format as + * a string using the `toISOString` method of the `Date` object. + */ +export const toRFC3339 = (date: Date) => { + return date.toISOString(); +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..9c9e8c1 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,55 @@ +import createClient from 'openapi-fetch'; +import { Config, OpenAPIClient } from './common/types'; +import { + networkInterceptorMiddleware, + parameterChecker, +} from './helpers/helper'; +import { ValidationService } from './services/validator-service'; +import { DataAsset } from './modules/data-asset/data-asset'; +import { MediaType } from 'openapi-typescript-helpers'; +import { paths } from './api'; +import { Auth } from './modules/auth/auth'; +import { DataModel } from './modules/data-model/data-model'; +import { Account } from './modules/account/account'; + +class SDKFactory { + static createSDK({ token, url, logging = false }: Config) { + parameterChecker(token, url); + + const client = createClient({ + baseUrl: url, + headers: { + Authorization: `Bearer ${token}`, + }, + }); + + if (logging) { + client.use(networkInterceptorMiddleware); + } + + return client; + } +} + +export class Gateway { + private client: OpenAPIClient; + private config: Config; + public dataAsset!: DataAsset; + public auth!: Auth; + public dataModel!: DataModel; + public account!: Account; + + constructor(config: Config) { + const validationService = new ValidationService(); + this.client = SDKFactory.createSDK(config); + this.config = config; + this.initializeModules(validationService); + } + + private initializeModules(validationService: ValidationService) { + this.dataAsset = new DataAsset(this.client, validationService); + this.auth = new Auth(this.client); + this.dataModel = new DataModel(this.client, validationService, this.config); + this.account = new Account(this.client); + } +} diff --git a/src/modules/account/account.ts b/src/modules/account/account.ts new file mode 100644 index 0000000..660c635 --- /dev/null +++ b/src/modules/account/account.ts @@ -0,0 +1,29 @@ +import { MediaType } from 'openapi-typescript-helpers'; +import { OpenAPIClient, MyAccountResponse } from '../../common/types'; +import { paths } from '../../api'; +import { GTWError } from '../../helpers/custom-error'; + +export class Account { + private client: OpenAPIClient; + + constructor(client: OpenAPIClient) { + this.client = client; + } + + /** + * This async function retrieves account information by making a GET request to '/accounts/me' and + * handles errors by throwing a custom GTWError if any occur. + * @returns The `getAccountInfo` function is returning the `data` object fetched from the + * `/accounts/me` endpoint. If there is an error during the API call, a `GTWError` is thrown with the + * error and response details. + */ + async getAccountInfo(): Promise { + const { data, response, error } = await this.client.GET('/accounts/me'); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } +} diff --git a/src/modules/auth/auth.ts b/src/modules/auth/auth.ts new file mode 100644 index 0000000..7d3949f --- /dev/null +++ b/src/modules/auth/auth.ts @@ -0,0 +1,51 @@ +import { MediaType } from 'openapi-typescript-helpers'; +import { paths } from '../../api'; +import { AuthRequest, OpenAPIClient } from '../../common/types'; +import { CryptoService } from '../../services/crypto-service'; +import { GTWError } from '../../helpers/custom-error'; + +export class Auth { + private client: OpenAPIClient; + private cryptoService: CryptoService; + + constructor(client: OpenAPIClient) { + this.client = client; + this.cryptoService = new CryptoService(); + } + + public async generateSignMessage() { + const { data, error, response } = await this.client.GET('/auth/message'); + + if (error) { + throw new GTWError(error, response); + } + + return data.message; + } + + public async generateRefreshToken() { + const { data, error, response } = await this.client.GET( + '/auth/refresh-token', + ); + + if (error) { + throw new GTWError(error, response); + } + + return data.token; + } + + public async login({ message, signature, wallet_address }: AuthRequest) { + await this.cryptoService.verifyMessage(signature, message, wallet_address); + + const { data, error, response } = await this.client.POST('/auth', { + body: { message, signature, wallet_address }, + }); + + if (error) { + throw new GTWError(error, response); + } + + return data.token; + } +} diff --git a/src/modules/data-asset/data-asset.ts b/src/modules/data-asset/data-asset.ts new file mode 100644 index 0000000..74c7ccd --- /dev/null +++ b/src/modules/data-asset/data-asset.ts @@ -0,0 +1,289 @@ +import { MediaType } from 'openapi-typescript-helpers'; +import { + ACLRequest, + HelperPaginatedResponse, + OpenAPIClient, + PublicACL, + PublicDataAsset, +} from '../../common/types'; +import { ValidationService } from '../../services/validator-service'; +import { paths } from '../../api'; +import { GTWError } from '../../helpers/custom-error'; + +export class DataAsset { + private client: OpenAPIClient; + private validationService: ValidationService; + + constructor( + client: OpenAPIClient, + validationService: ValidationService, + ) { + this.client = client; + this.validationService = validationService; + } + + /** + * This function creates a data asset based on a provided request using a POST request. + * @param {CreateDataAssetRequest} dataAsset - The `dataAsset` parameter in the + * `createClaimBasedDataAsset` function is of type `CreateDataAssetRequest`. This parameter likely + * contains the necessary information needed to create a new data asset, such as metadata, + * permissions, and other relevant details. + * @returns The `data` variable is being returned from the `createClaimBasedDataAsset` function. + */ + public async createClaimBasedDataAsset() { + const { data, error, response } = await this.client.POST('/data-assets', { + body: { data: '' }, + }); + + if (error) { + throw new GTWError(error, response); + } + + return data.id; + } + + public async createFileBasedDataAsset() {} + + /** + * This TypeScript function asynchronously retrieves data assets belonging to the current user with + * optional pagination parameters. + * @param {number} [page=1] - The `page` parameter is used to specify the page number of the data + * assets you want to retrieve. By default, it is set to 1, meaning that the function will retrieve + * data assets from the first page. + * @param {number} [page_size=10] - The `page_size` parameter in the `getMyDataAssets` function + * specifies the number of data assets to be retrieved per page. In this case, the default value for + * `page_size` is set to 10, meaning that by default, the function will retrieve 10 data assets per + * page + * @returns The `getMyDataAssets` function returns the data fetched from the API endpoint + * `/data-assets/me` for the authenticated user. If there is an error during the API request, a + * `GTWError` is thrown with the error and response details. If the request is successful, the + * function returns the fetched data. + */ + public async getMyDataAssets( + page: number = 1, + page_size: number = 10, + ): Promise> { + const { data, response, error } = await this.client.GET('/data-assets/me', { + params: { query: { page, page_size } }, + }); + + if (error) { + throw new GTWError(error, response); + } + return data; + } + + /** + * This TypeScript function retrieves a public data asset by its ID asynchronously. + * @param {number} id - The `id` parameter in the `getDataAssetById` function is a number that + * represents the unique identifier of the data asset you want to retrieve. This function is designed + * to fetch a specific data asset by its ID from the server. + * @returns The `getDataAssetById` function is returning a Promise that resolves to a + * `PublicDataAsset` object. The function makes an asynchronous GET request to fetch data for a + * specific data asset identified by the `id` parameter. If there is an error during the request, a + * `GTWError` is thrown with the error and response details. Otherwise, the function returns the + * fetched data. + */ + public async getDataAssetById(id: number): Promise { + const { data, error, response } = await this.client.GET( + '/data-assets/{id}', + { + params: { path: { id } }, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } + + public async updateDataAsset(id: number): Promise { + const { data, error, response } = await this.client.PUT( + '/data-assets/{id}', + { + params: { path: { id } }, + body: {}, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } + + /** + * This function deletes a data asset by its ID using an HTTP DELETE request. + * @param {number} id - The `id` parameter in the `deleteDataAsset` function is a number that + * represents the unique identifier of the data asset that you want to delete. + * @returns The `deleteDataAsset` function is returning the message from the `data` object, which is + * accessed using `data.message`. + */ + public async deleteDataAsset(id: number) { + const { data, error, response } = await this.client.DELETE( + '/data-assets/{id}', + { + params: { path: { id } }, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data.message!; + } + + /** + * This function updates the Access Control List (ACL) for a specific data asset identified by its + * ID. + * @param {number} id - The `id` parameter is a number that represents the identifier of the data + * asset for which the Access Control List (ACL) is being updated. + * @param {ACLRequest[]} aclList - The `aclList` parameter in the `updateACL` function is an array of + * `ACLRequest` objects. Each `ACLRequest` object typically contains information about access control + * settings for a specific resource or data asset. These settings may include permissions, roles, + * users, or groups that are allowed or + * @returns the message from the `data` object, which is accessed using `data.message!`. + */ + public async updateACL( + id: number, + aclList: ACLRequest[], + ): Promise { + const { data, error, response } = await this.client.PUT( + '/data-assets/{id}/acl', + { + params: { path: { id } }, + body: aclList, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } + + /** + * Note:- this method overwrites ACL list for data asset so be sure before using it! + * This TypeScript function asynchronously updates the access control list (ACL) for a specific data + * asset identified by its ID. + * @param {number} id - The `id` parameter is a number that represents the identifier of a data asset + * for which the Access Control List (ACL) is being updated. + * @param {ACLRequest[]} aclList - The `aclList` parameter in the `overrideACL` function is an array + * of `ACLRequest` objects. Each `ACLRequest` object likely contains information about access control + * settings for a specific resource or data asset. The function sends this list of ACL requests to + * the server to update the access control + * @returns The `public async overrideACL` function returns a Promise that resolves to an array of + * `PublicACL` objects. + */ + public async overrideACL( + id: number, + aclList: ACLRequest[], + ): Promise { + const { data, error, response } = await this.client.POST( + '/data-assets/{id}/acl', + { + params: { path: { id } }, + body: aclList, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } + + /** + * The function `deleteACL` asynchronously deletes ACL entries associated with a specific ID using a + * DELETE request. + * @param {number} id - The `id` parameter in the `deleteACL` function is a number that represents + * the identifier of the data asset for which the Access Control List (ACL) is being deleted. + * @param {ACLRequest[]} aclList - The `aclList` parameter in the `deleteACL` function is an array of + * `ACLRequest` objects. These objects likely contain information about access control permissions + * for the specified data asset identified by the `id` parameter. The function uses this list to + * update or delete the access control list associated with + * @returns The `deleteACL` function is returning the `data` object after making a DELETE request to + * the specified endpoint with the provided ACL list. + */ + public async deleteACL(id: number, aclList: ACLRequest[]) { + const { data, error, response } = await this.client.DELETE( + '/data-assets/{id}/acl', + { + params: { path: { id } }, + body: aclList, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data.message!; + } + + // todo: check for structured and check if data asset not found + /** + * This function downloads a data asset file by its ID and returns the file as a Blob along with its + * filename. + * @param {number} id - The `id` parameter is a number that represents the unique identifier of the + * data asset that you want to download. + * @returns The `downloadDataAsset` function returns a Promise that resolves to an object with two + * properties: `file` which is a Blob containing the downloaded data asset file, and `fileName` which + * is a string representing the name of the data asset file. + */ + public async downloadDataAsset( + id: number, + ): Promise<{ file: Blob; fileName: string }> { + const { name } = await this.getDataAssetById(id); + + const { + data: file, + error, + response, + } = await this.client.GET('/data-assets/{id}/download', { + params: { path: { id } }, + parseAs: 'blob', + }); + + if (error) { + throw new GTWError(error, response); + } + + return { file, fileName: name }; + } + + /** + * The function `shareDataAsset` asynchronously shares a data asset with specified wallet addresses + * and returns a Promise of PublicACL array. + * @param {number} id - The `id` parameter is a number that represents the identifier of the data + * asset that you want to share. + * @param {string[]} walletAddressList - The `walletAddressList` parameter is an array of strings + * that contains the wallet addresses to which the data asset with the specified `id` will be shared. + * @returns The `shareDataAsset` function returns a Promise that resolves to an array of `PublicACL` + * objects. + */ + public async shareDataAsset( + id: number, + walletAddressList: string[], + ): Promise { + const { data, error, response } = await this.client.POST( + '/data-assets/{id}/share', + { + params: { path: { id } }, + body: { addresses: walletAddressList }, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } +} diff --git a/src/modules/data-model/data-model.ts b/src/modules/data-model/data-model.ts new file mode 100644 index 0000000..ef44210 --- /dev/null +++ b/src/modules/data-model/data-model.ts @@ -0,0 +1,160 @@ +import { MediaType } from 'openapi-typescript-helpers'; +import { + Config, + DataModelRequest, + HelperPaginatedResponse, + OpenAPIClient, + DataModel as DMTypes, +} from '../../common/types'; +import { ValidationService } from '../../services/validator-service'; +import { paths } from '../../api'; +import { GTWError } from '../../helpers/custom-error'; + +export class DataModel { + private client: OpenAPIClient; + private validationService: ValidationService; + private config: Config; + + constructor( + client: OpenAPIClient, + validationService: ValidationService, + config: Config, + ) { + this.client = client; + this.validationService = validationService; + this.config = config; + } + + /** + * This TypeScript function asynchronously fetches data models from a server using GET request with + * optional pagination parameters. + * @param {number} [page=1] - The `page` parameter is used to specify the page number of the data + * models to retrieve. By default, it is set to 1, meaning that the function will retrieve the data + * models from the first page. + * @param {number} [page_size=10] - The `page_size` parameter in the `getDataModels` function + * specifies the number of data models to be retrieved per page. By default, it is set to 10, meaning + * that when the function is called without providing a specific `page_size` value, it will retrieve + * 10 data models per + * @returns The `getDataModels` function is returning the data fetched from the API endpoint + * `/data-models` with the specified pagination parameters `page` and `page_size`. If there is an + * error during the API request, a `GTWError` is thrown with the error and response details. If there + * is no error, the function returns the fetched data. + */ + async getDataModels( + page: number = 1, + page_size: number = 10, + ): Promise> { + const { data, error, response } = await this.client.GET('/data-models', { + params: { query: { page, page_size } }, + }); + + if (error) { + throw new GTWError(error, response); + } + return data; + } + + /** + * This TypeScript function creates a data model by sending a POST request to a specified endpoint. + * @param {DataModelRequest} dataModelInput - The `dataModelInput` parameter in the `createDataModel` + * function is of type `DataModelRequest`. It is the input data that will be used to create a new + * data model. This input likely contains information such as the name, fields, and other properties + * of the data model that will + * @returns The `createDataModel` function is returning the `data` object after making a POST request + * to create a data model. + */ + async createDataModel(dataModelInput: DataModelRequest): Promise { + const { data, error, response } = await this.client.POST('/data-models', { + body: dataModelInput, + }); + + if (error) { + throw new GTWError(error, response); + } + return data; + } + + /** + * This TypeScript function updates a data model using a PUT request with error handling. + * @param {number} dataModelId - The `dataModelId` parameter is the unique identifier of the data + * model that you want to update. It is a number that specifies which data model in the system you + * are targeting for the update operation. + * @param {DataModelRequest} dataModelInput - The `dataModelInput` parameter in the `updateDataModel` + * function is of type `DataModelRequest`. It is the data that will be used to update the data model + * with the specified `dataModelId`. + * @returns The `updateDataModel` function is returning the updated data model after making a PUT + * request to the server with the provided `dataModelInput` for the specified `dataModelId`. + */ + async updateDataModel( + dataModelId: number, + dataModelInput: DataModelRequest, + ): Promise { + const { data, error, response } = await this.client.PUT( + '/data-models/{id}', + { + body: dataModelInput, + params: { path: { id: dataModelId } }, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } + + /** + * This TypeScript function asynchronously fetches a data model by its ID using a GET request. + * @param {number} dataModelId - The `dataModelId` parameter is a number that represents the unique + * identifier of a data model. This function `getDataModelById` is an asynchronous function that + * retrieves a data model by its ID using an HTTP GET request to a specific endpoint. It uses the + * `dataModelId` parameter to specify + * @returns The `getDataModelById` function is returning the data fetched from the API endpoint for + * the specified `dataModelId`. If there is an error during the API request, it will throw a + * `GTWError` with the error and response details. If there is no error, it will return the retrieved + * data. + */ + async getDataModelById(dataModelId: number): Promise { + const { data, error, response } = await this.client.GET( + '/data-models/{id}', + { + params: { path: { id: dataModelId } }, + }, + ); + + if (error) { + throw new GTWError(error, response); + } + return data; + } + + /** + * This TypeScript function retrieves data models specific to the current user with optional + * pagination parameters. + * @param {number} [page=1] - The `page` parameter in the `getMyDataModels` function is used to + * specify the page number of the data models to retrieve. By default, it is set to 1 if not + * provided. + * @param {number} [page_size=10] - The `page_size` parameter in the `getMyDataModels` function + * specifies the number of data models to be retrieved per page. By default, it is set to 10, meaning + * that the function will retrieve 10 data models per page unless specified otherwise. + * @returns The `getMyDataModels` function returns the data fetched from the API endpoint + * `/data-models/me` based on the provided `page` and `page_size` parameters. If there is an error + * during the API request, a `GTWError` is thrown with the error and response details. If the request + * is successful, the function returns the retrieved data. + */ + async getMyDataModels( + page: number = 1, + page_size: number = 10, + ): Promise> { + const { data, response, error } = await this.client.GET('/data-models/me', { + params: { query: { page, page_size } }, + }); + + if (error) { + throw new GTWError(error, response); + } + + return data; + } +} diff --git a/src/organization/organization.ts b/src/organization/organization.ts deleted file mode 100644 index 8305491..0000000 --- a/src/organization/organization.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { - CreateOrganizationInput, - MemberInput, - Sdk, - TransferMemberInput, - UpdateOrganizationInput, - organizations_queryQueryVariables, -} from '../../gatewaySdk'; -import { OrganizationIdentifierType } from '../types'; - -import { errorHandler } from '../utils/errorHandler'; -import { isStringValid, validateObjectProperties } from '../utils/validators'; - -export class Organization { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function creates an organization using the provided input and returns the result, or throws an - * error if there is one. - * @param {CreateOrganizationInput} organizationInput - The `organizationInput` parameter is an - * object that contains the input data for creating an organization. It likely includes properties - * such as the organization's name, description, and any other relevant information needed to create - * the organization. - * @returns the result of the `createOrganization_mutation` method call, which is awaited using the - * `await` keyword. - */ - async createOrganization(organizationInput: CreateOrganizationInput) { - try { - validateObjectProperties(organizationInput); - return await this.sdk.createOrganization_mutation({ - input: organizationInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function adds a member to an organization using the provided input. - * @param {MemberInput} memberInput - The `memberInput` parameter is an object that contains the - * information needed to add a member to an organization. It likely includes properties such as the - * member's name, email, role, and any other relevant details. - * @returns the result of the `addMemberToOrganization_mutation` mutation call. - */ - async addMemberToOrganization(memberInput: MemberInput) { - try { - return await this.sdk.addMemberToOrganization_mutation({ - input: memberInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function "changeMemberRole" is an asynchronous function that takes a "memberInput" parameter - * and calls a mutation function to change the role of a member, handling any errors that occur. - * @param {MemberInput} memberInput - The `memberInput` parameter is an object that contains the - * necessary information to change the role of a member. It likely includes properties such as the - * member's ID and the new role they should be assigned to. - * @returns the result of the `changeMemberRole_mutation` mutation, which is being awaited. - */ - async changeMemberRole(memberInput: MemberInput) { - try { - return await this.sdk.changeMemberRole_mutation({ input: memberInput }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function removes a member from an organization using the provided input. - * @param {TransferMemberInput} memberInput - The `memberInput` parameter is an object that contains - * the necessary information to remove a member from an organization. It likely includes properties - * such as the member's ID or username, and any additional data required to complete the removal - * process. - * @returns the result of the `removeMemberFromOrganization_mutation` mutation call. - */ - async removeMemberFromOrganization(memberInput: TransferMemberInput) { - try { - return await this.sdk.removeMemberFromOrganization_mutation({ - input: memberInput, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `updateOrganization` updates an organization using the provided input and returns the - * result of the update. - * @param {UpdateOrganizationInput} updatedOrganization - The `updatedOrganization` parameter is an - * object of type `UpdateOrganizationInput`. It contains the updated information for an organization. - * @returns the result of the `updateOrganization_mutation` method call, which is likely a Promise - * that resolves to the updated organization data. - */ - async updateOrganization(updatedOrganization: UpdateOrganizationInput) { - try { - validateObjectProperties(updatedOrganization); - return await this.sdk.updateOrganization_mutation({ - input: updatedOrganization, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getOrganization` retrieves an organization based on the specified identifier type - * and value. - * @param {OrganizationIdentifierType} type - The type of organization identifier. It could be a - * value like "GATEWAY_ID", "ORG_ID", etc. This parameter is used to specify the type of identifier - * you are providing in the value parameter. - * @param {string} value - The value parameter is a string that represents the identifier value of - * the organization. It could be an organization name, ID, or any other unique identifier depending - * on the type of identifier specified. - * @returns the result of the `organization_query` method call. - */ - async getOrganization(type: OrganizationIdentifierType, value: string) { - try { - isStringValid(value); - return await this.sdk.organization_query({ input: { type, value } }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getOrganizations` retrieves organizations based on optional filters, pagination - * parameters, and error handling. - * @param - - `filter` is an optional input parameter of type `FilterOrganizationInput`. It is used - * to filter the organizations based on certain criteria. - * @returns the result of the `organizations_query` method call from the `sdk` object. - */ - async getOrganizations(variables?: organizations_queryQueryVariables) { - try { - return await this.sdk.organizations_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/pda/pda.ts b/src/pda/pda.ts deleted file mode 100644 index a18ff03..0000000 --- a/src/pda/pda.ts +++ /dev/null @@ -1,144 +0,0 @@ -import { - CreatePDAInput, - Sdk, - FilterPDAInput, - UpdatePDAInput, - PDAs_queryQueryVariables, - issuedPDAs_queryQueryVariables, - PDACount_queryQueryVariables, -} from '../../gatewaySdk'; -import { PDAStatus } from '../types'; -import { errorHandler } from '../utils/errorHandler'; -import { isUUIDValid, validateObjectProperties } from '../utils/validators'; - -export class PDA { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `getPDA` is an asynchronous function that takes an `id` parameter and returns a - * Promise that resolves to a `PDA_queryQuery` object. - * @param {string} id - A string representing the ID of the PDA that you - * want to query. - * @returns The function `getPda` is returning a Promise that resolves to a `PDA_queryQuery` object. - */ - async getPDA(id: string) { - try { - isUUIDValid(id); - return await this.sdk.PDA_query({ id }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getPDACount` is an asynchronous function that retrieves the count of PDAs - * based on an optional filter. - * @param {FilterPDAInput} [filter] - The `filter` parameter is an optional input that allows you to - * specify criteria for filtering the PDAs before counting them. It is - * of type `FilterPDAInput`. - * @returns a Promise that resolves to a number. - */ - async getPDACount(filter?: PDACount_queryQueryVariables) { - try { - return (await this.sdk.PDACount_query(filter)).PDACount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getPDAs` retrieves PDAs based on the provided filter, order, skip, and take - * parameters. - * @param {PDAs_queryQueryVariables} - - `filter`: An object that contains filter criteria for the query. - * @returns a Promise that resolves to a value of type PDAs_queryQuery. - */ - async getPDAs(variables?: PDAs_queryQueryVariables) { - try { - return await this.sdk.PDAs_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getIssuedPDAs` retrieves issued PDAs based on the provided filter, order, skip, and - * take parameters. - * @param {issuedPDAs_queryQueryVariables} - - `filter`: An object that contains filter criteria for the query. It is - * used to specify conditions that the returned PDAs must meet. - * @returns a Promise that resolves to an object of type `issuedPDAs_queryQuery`. - */ - async getIssuedPDAs(variables?: issuedPDAs_queryQueryVariables) { - try { - return await this.sdk.issuedPDAs_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getIssuedPDAsCount` is an asynchronous function that retrieves the count of issued - * PDAs based on an optional filter. - * @param {FilterPDAInput} [filter] - The `filter` parameter is an optional input that allows you to - * specify criteria for filtering the issued PDAs. It is of type `FilterPDAInput`. - * @returns a Promise that resolves to a number. - */ - async getIssuedPDAsCount(filter?: FilterPDAInput) { - try { - return (await this.sdk.issuedPDAsCount_query({ filter })).issuedPDAsCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `changePDAStatus` is an asynchronous function that takes an `id` and a `status` as - * parameters and returns a Promise that resolves to a `changePDAStatus_mutationMutation` object. - * @param - - `id`: The ID of the PDA whose status needs to be changed. - * @returns a Promise that resolves to a `changePDAStatus_mutationMutation` object. - */ - async changePDAStatus({ id, status }: { id: string; status: PDAStatus }) { - try { - isUUIDValid(id); - return await this.sdk.changePDAStatus_mutation({ input: { id, status } }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function creates a PDA using the provided input and returns the result. - * @param {CreatePDAInput} pdaInput - The `pdaInput` parameter is an object that contains the input - * data for creating a PDA . It is of type `CreatePDAInput`. - * @returns the result of the `createPDA_mutation` method call, which is a Promise. - */ - async createPDA(pdaInput: CreatePDAInput) { - try { - validateObjectProperties(pdaInput); - return await this.sdk.createPDA_mutation({ input: pdaInput }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `updatePDA` updates a PDA using the provided input and returns - * the result of the mutation. - * @param {UpdatePDAInput} updatedPDA - The parameter `updatedPDA` is of type `UpdatePDAInput`. It is - * an input object that contains the data to update a PDA. The specific - * properties and their types within `UpdatePDAInput` would depend on the implementation of the - * `updatePDA_m - * @returns a Promise that resolves to an object of type `updatePDA_mutationMutation`. - */ - async updatePDA(updatedPDA: UpdatePDAInput) { - try { - validateObjectProperties(updatedPDA); - return await this.sdk.updatePDA_mutation({ input: updatedPDA }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/proof/proof.ts b/src/proof/proof.ts deleted file mode 100644 index 16ea20b..0000000 --- a/src/proof/proof.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { - Sdk, - createProof_mutationMutationVariables, - proofsByPDAIds_queryQueryVariables, - proofs_queryQueryVariables, - receivedProofs_queryQueryVariables, - sentProofsCount_queryQueryVariables, - sentProofs_queryQueryVariables, -} from '../../gatewaySdk'; -import { errorHandler } from '../utils/errorHandler'; -import { isUUIDValid } from '../utils/validators'; - -export class Proof { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `getProof` is an asynchronous function that takes an `id` parameter and returns the - * result of a query using the `sdk` object, or throws an error if there is any. - * @param {string} id - The `id` parameter is a string that represents the identifier of the proof that - * you want to retrieve. - * @returns The `getProof` function is returning the result of the `proof_query` method call from the - * `sdk` object. - */ - async getProof(id: string) { - try { - isUUIDValid(id); - return await this.sdk.proof_query({ id: id }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - /** - * The function "createProof" is an asynchronous function that calls the "createProof_mutation" method - * from the "sdk" object, passing in the "variables" parameter, and returns the result. If an error - * occurs, it throws an error. - * @param {createProof_mutationMutationVariables} [variables] - The `variables` parameter is an - * optional object that contains the variables needed for the `createProof_mutation` mutation. These - * variables can include any data that is required for the mutation to execute successfully, such as - * input values or authentication tokens. - * @returns The `createProof` function is returning the result of the `createProof_mutation` function - * call. - */ - - async createProof(inputVariables?: createProof_mutationMutationVariables) { - try { - if (inputVariables?.requestId) { - isUUIDValid(inputVariables.requestId); - } - return await this.sdk.createProof_mutation(inputVariables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `createProofMessage` is an asynchronous function that takes a `requestId` as a - * parameter and uses it to call the `createProofMessage_mutation` method from the `sdk`. - * @param {string} requestId - The `requestId` parameter is a string that represents the unique - * identifier of a request. It is used as input to the `createProofMessage_mutation` function to - * create a proof message. - * @returns the result of the `createProofMessage_mutation` method call. - */ - async createProofMessage(requestId: string) { - try { - isUUIDValid(requestId); - return await this.sdk.createProofMessage_mutation({ - requestId: requestId, - }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getProofs` is an asynchronous function that queries proofs and returns the result. - * @param {proofs_queryQueryVariables} [variables] - The `variables` parameter is an optional object - * that contains the variables needed for the `proofs_query` function. These variables can be used to - * filter or customize the query results. - * @returns the result of the `proofs_query` method call. - */ - async getProofs(variables?: proofs_queryQueryVariables) { - try { - return await this.sdk.proofs_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getProofsByPDAIds` retrieves proofs by PDA IDs using a GraphQL query. - * @param {proofsByPDAIds_queryQueryVariables} variables - The `variables` parameter is an object that - * contains the necessary variables for the `proofsByPDAIds_query` query. These variables are used to - * specify the criteria for retrieving proofs by PDA IDs. The specific properties and their types - * depend on the GraphQL schema and the requirements of the `proof - * @returns the result of the `proofsByPDAIds_query` method call. - */ - async getProofsByPDAIds({ - pdaIds, - skip, - take, - }: proofsByPDAIds_queryQueryVariables) { - try { - if (typeof pdaIds === 'string') { - isUUIDValid(pdaIds); - } else { - for (const id in pdaIds) isUUIDValid(pdaIds[id]); - } - return await this.sdk.proofsByPDAIds_query({ pdaIds, skip, take }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getReceivedProofs` is an asynchronous function that retrieves received proofs using - * the `receivedProofs_query` method from an SDK, and it handles any errors that occur during the - * process. - * @param {receivedProofs_queryQueryVariables} [variables] - The `variables` parameter is an optional - * object that contains any variables needed for the `receivedProofs_query` function. These variables - * can be used to filter or customize the query results. - * @returns the result of the `receivedProofs_query` method call. - */ - async getReceivedProofs(variables?: receivedProofs_queryQueryVariables) { - try { - if (variables && variables.organizationId) { - isUUIDValid(variables.organizationId); - } - return await this.sdk.receivedProofs_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getReceivedProofsCount` is an asynchronous function that retrieves the count of - * received proofs for a given organization ID using a query from an SDK. - * @param {string} [organizationId] - The organizationId parameter is an optional string that - * represents the ID of an organization. It is used to filter the received proofs count based on the - * organization. If no organizationId is provided, the function will return the received proofs count - * for all organizations. - * @returns the result of the `receivedProofsCount_query` method call. - */ - async getReceivedProofsCount(organizationId?: string) { - try { - if (organizationId) { - isUUIDValid(organizationId); - } - return await this.sdk.receivedProofsCount_query({ organizationId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - /** - * The function `getSentProofs` is an asynchronous function that retrieves sent proofs using the - * `sentProofs_query` method from an SDK, and it handles any errors that occur. - * @param {sentProofs_queryQueryVariables} [variables] - The `variables` parameter is an optional - * object that contains any variables you want to pass to the `sentProofs_query` function. These - * variables can be used to filter or customize the query results. - * @returns the result of the `sentProofs_query` method call. - */ - - async getSentProofs(variables?: sentProofs_queryQueryVariables) { - try { - return await this.sdk.sentProofs_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getSentProofsCount` is an asynchronous function that retrieves the count of sent - * proofs. - * @param {sentProofsCount_queryQueryVariables} [variables] - The `variables` parameter is an optional - * object that contains any variables needed for the `sentProofsCount_query` query. These variables - * can be used to filter or customize the query results. - * @returns the result of the `sentProofsCount_query` function call. - */ - async getSentProofsCount( - queryVariables?: sentProofsCount_queryQueryVariables, - ) { - try { - return await this.sdk.sentProofsCount_query(queryVariables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/request/request.ts b/src/request/request.ts deleted file mode 100644 index de92b5a..0000000 --- a/src/request/request.ts +++ /dev/null @@ -1,172 +0,0 @@ -import { - DataRequestSchemaInput, - FilterDataRequestInput, - Sdk, - requestsReceived_queryQueryVariables, - requestsSent_queryQueryVariables, -} from '../../gatewaySdk'; -import { errorHandler } from '../utils/errorHandler'; -import { isUUIDValid, validateObjectProperties } from '../utils/validators'; - -export class Request { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `createDataRequest` is an asynchronous function that takes an input of type - * `DataRequestSchemaInput` and calls the `createDataRequest_mutation` method of the `sdk` object, - * returning the result. - * @param {DataRequestSchemaInput} input - The `input` parameter is an object of type - * `DataRequestSchemaInput`. It is used to provide the necessary data for creating a data request. The - * specific properties and their types within the `DataRequestSchemaInput` object would depend on the - * requirements of the `createDataRequest_mutation` function - * @returns the result of the `this.sdk.createDataRequest_mutation({ input })` method call. - */ - async createDataRequest(inputSchema: DataRequestSchemaInput) { - try { - validateObjectProperties(inputSchema); - return await this.sdk.createDataRequest_mutation({ input: inputSchema }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequest` is an asynchronous function that retrieves data using a request ID and - * throws an error if there is any. - * @param {string} requestId - The `requestId` parameter is a string that represents the unique - * identifier of a data request. It is used to query the data request using the `dataRequest_query` - * method of the `sdk` object. - * @returns The `getDataRequest` function is returning the result of the `dataRequest_query` method - * call. - */ - async getDataRequest(requestId: string) { - try { - isUUIDValid(requestId); - return await this.sdk.dataRequest_query({ requestId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestCount` is an asynchronous function that makes a data request count - * query using the `dataRequestCount_query` method from the `sdk` object, and returns the result. - * @param {dataRequestCount_queryQueryVariables} [variables] - The `variables` parameter is an - * optional object that contains any variables needed for the `dataRequestCount_query` query. These - * variables can be used to filter or customize the data request count query. - * @returns the result of the `dataRequestCount_query` method call. - */ - async getDataRequestCount(filterVariables?: FilterDataRequestInput) { - try { - return await this.sdk.dataRequestCount_query({ filter: filterVariables }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequestStatus` is an asynchronous function that queries the status of a data - * request using a provided request ID. - * @param {string} requestId - The `requestId` parameter is a string that represents the unique - * identifier of a data request. - * @returns the result of the `dataRequestStatus_query` method call, which is a Promise. - */ - async getDataRequestStatus(requestId: string) { - try { - isUUIDValid(requestId); - return await this.sdk.dataRequestStatus_query({ requestId }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getDataRequests` is an asynchronous function that makes a query to retrieve data - * requests, and it handles any errors that occur during the query. - * @param {dataRequests_queryQueryVariables} [variables] - The `variables` parameter is an optional - * object that contains any variables needed for the `dataRequests_query` function. These variables can - * be used to filter or customize the data requests that are being queried. - * @returns The `getDataRequests` function is returning the result of the `dataRequests_query` function - * call. - */ - async getDataRequests(filterVariables?: FilterDataRequestInput) { - try { - return await this.sdk.dataRequests_query({ filter: filterVariables }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getRequestsReceived` is an asynchronous function that retrieves requests received - * using the `requestsReceived_query` method from the `sdk` object. - * @param {requestsReceived_queryQueryVariables} [variables] - The `variables` parameter is an - * optional object that contains variables to be passed to the `requestsReceived_query` function. - * These variables can be used to filter or customize the query results. - * @returns the result of the `requestsReceived_query` method call. - */ - async getRequestsReceived(variables?: requestsReceived_queryQueryVariables) { - try { - return await this.sdk.requestsReceived_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getRequestsReceivedCount` is an asynchronous function that retrieves the count of - * requests received, and it handles any errors that occur during the process. - * @param {requestsReceivedCount_queryQueryVariables} [variables] - The "variables" parameter is an - * optional parameter that allows you to pass any variables needed for the - * "requestsReceivedCount_query" query. It is of type "requestsReceivedCount_queryQueryVariables". - * @returns the result of the `requestsReceivedCount_query` method call. - */ - async getRequestsReceivedCount(filterVariables?: FilterDataRequestInput) { - try { - return await this.sdk.requestsReceivedCount_query({ - filter: filterVariables, - }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getRequestsSent` is an asynchronous function that retrieves requests sent using the - * `requestsSent_query` method from the `sdk` object. - * @param {requestsSent_queryQueryVariables} [variables] - The `variables` parameter is an optional - * object that contains any variables you want to pass to the `requestsSent_query` function. These - * variables can be used to customize the query and retrieve specific data. If you don't need to pass - * any variables, you can omit this parameter. - * @returns the result of the `requestsSent_query` method call. - */ - async getRequestsSent(variables?: requestsSent_queryQueryVariables) { - try { - return await this.sdk.requestsSent_query(variables); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getRequestsSentCount` is an asynchronous function that retrieves the count of - * requests sent, and it handles any errors that occur during the process. - * @param {requestsSentCount_queryQueryVariables} [variables] - The "variables" parameter is an - * optional object that contains any variables needed for the "requestsSentCount_query" query. These - * variables can be used to filter or customize the query results. - * @returns the result of the `requestsSentCount_query` method call. - */ - async getRequestsSentCount(filterVariables?: FilterDataRequestInput) { - try { - return await this.sdk.requestsSentCount_query({ - filter: filterVariables, - }); - } catch (error: any) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/services/crypto-service.ts b/src/services/crypto-service.ts new file mode 100644 index 0000000..5627f33 --- /dev/null +++ b/src/services/crypto-service.ts @@ -0,0 +1,36 @@ +import { EtherumService } from './ethereum-service'; +import { SolanaService } from './solana-service'; + +export class CryptoService { + private etherumService: EtherumService; + private solanaService: SolanaService; + + constructor() { + this.etherumService = new EtherumService(); + this.solanaService = new SolanaService(); + } + + public async verifyMessage( + signature: string, + message: string, + walletAddress: string, + ) { + let result = false; + if (this.etherumService.validateWallet(walletAddress)) { + result = await this.etherumService.verifyMessage( + signature, + message, + walletAddress, + ); + } else if (this.solanaService.validateWallet(walletAddress)) { + result = await this.solanaService.verifyMessage( + message, + signature, + walletAddress, + ); + } else { + throw new Error(`${walletAddress} is invalid`); + } + if (!result) throw new Error('invalid signature'); + } +} diff --git a/src/services/ethereum-service.ts b/src/services/ethereum-service.ts new file mode 100644 index 0000000..d5ba407 --- /dev/null +++ b/src/services/ethereum-service.ts @@ -0,0 +1,16 @@ +import { ethers } from 'ethers'; + +export class EtherumService { + public async verifyMessage( + signature: string, + message: string, + walletAddress: string, + ): Promise { + const recoveredAddress = ethers.utils.verifyMessage(message, signature); + return recoveredAddress === walletAddress; + } + + public validateWallet(wallet: string) { + return ethers.utils.isAddress(wallet); + } +} diff --git a/src/services/solana-service.ts b/src/services/solana-service.ts new file mode 100644 index 0000000..445831c --- /dev/null +++ b/src/services/solana-service.ts @@ -0,0 +1,25 @@ +import { PublicKey } from '@solana/web3.js'; +import { ethers } from 'ethers'; +import { sign } from 'tweetnacl'; + +export class SolanaService { + public async verifyMessage( + message: string, + signature: string, + publicKey: string, + ) { + return sign.detached.verify( + new TextEncoder().encode(message), + ethers.utils.base58.decode(signature), + ethers.utils.base58.decode(publicKey), + ); + } + + public validateWallet(wallet: string) { + const key = new PublicKey(wallet); + if (PublicKey.isOnCurve(key.toBytes())) { + return key.toBase58(); + } + throw new Error('Invalid wallet address'); + } +} diff --git a/src/services/validator-service.ts b/src/services/validator-service.ts new file mode 100644 index 0000000..520da48 --- /dev/null +++ b/src/services/validator-service.ts @@ -0,0 +1,200 @@ +import { ethers } from 'ethers'; +import { PublicKey } from '@solana/web3.js'; +import { STRING_VALIDATION_LENGTH } from '../common/constants'; +import mime from 'mime-types'; + +export class ValidationService { + /** + * The function `validateEmail` checks if a given email address is valid based on a regular + * expression pattern. + * @param {string} email - The `validateEmail` function takes an email address as a parameter and + * uses a regular expression to check if the email address is in a valid format. The regular + * expression ensures that the email address has the correct structure with characters before and + * after the "@" symbol, followed by a domain with at least one "." + * @returns The `validateEmail` function returns a boolean value, either `true` if the email is valid + * according to the regex pattern, or it throws an error if the email is not valid. + */ + public validateEmail(email: string): boolean { + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + if (!emailRegex.test(email)) throw new Error(`${email} is not valid`); + return true; + } + + /** + * The function `validateString` checks if a given string meets a minimum length requirement and + * returns a boolean value accordingly. + * @param {string} value - The `value` parameter in the `validateString` function is a string that + * needs to be validated for a minimum length requirement. + * @returns The `validateString` function is returning a boolean value, which is `true` if the string + * length is greater than `STRING_VALIDATION_LENGTH`. + */ + public validateString(value: string): boolean { + if (!(value.length > STRING_VALIDATION_LENGTH)) + throw new Error( + `${value} should be atleast ${STRING_VALIDATION_LENGTH} length`, + ); + return true; + } + + /** + * The function `validateURL` in TypeScript checks if a given URL is valid based on a specific + * pattern. + * @param {string} url - The `url` parameter is a string that represents a URL that needs to be + * validated against a specific pattern. The `validateURL` function uses a regular expression pattern + * to check if the provided URL matches the expected format. If the URL does not match the pattern, + * an error is thrown indicating that the + * @returns The `validateURL` function returns a boolean value - `true` if the provided URL matches + * the specified pattern, and throws an error if the URL does not match the pattern. + */ + public validateURL(url: string): boolean { + const urlPattern = + /^https:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-._?%&=]*)?$/; + + if (!urlPattern.test(url)) throw new Error(`${url} is not valid`); + return true; + } + + /** + * The function `validateUUID` checks if a given string is a valid UUID format and returns a boolean + * value. + * @param {string} uuid - The `uuid` parameter is a string that represents a Universally Unique + * Identifier (UUID). It is used to uniquely identify information in a system or application. The + * `validateUUID` function is used to check if the provided `uuid` string matches the standard UUID + * format. + * @returns The `validateUUID` function returns a boolean value - `true` if the provided UUID string + * matches the specified regex pattern, and `false` otherwise. + */ + public validateUUID(uuid: string): boolean { + const uuidRegex = + /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/; + if (!uuidRegex.test(uuid)) throw new Error(`${uuid} is not valid uuid`); + return true; + } + + /** + * The function `validateEtherumWallet` checks if a given string is a valid Ethereum wallet address. + * @param {string} wallet - The `wallet` parameter is a string representing an Ethereum wallet + * address that needs to be validated. + * @returns If the `wallet` string passed to the `validateEtherumWallet` function is a valid Ethereum + * wallet address, the function will return `true`. Otherwise, it will throw an error with the + * message ` is invalid`. + */ + public validateEtherumWallet(wallet: string): boolean { + if (ethers.utils.isAddress(wallet)) { + return true; + } + + throw new Error(`${wallet} is invalid`); + } + + /** + * The function `validateSolanaWallet` checks if a given Solana wallet address is valid. + * @param {string} wallet - The `wallet` parameter is a string representing a Solana wallet address + * that needs to be validated. + * @returns If the public key represented by the `wallet` string is on the curve, the function will + * return `true`. Otherwise, it will throw an error indicating that the wallet is invalid. + */ + public validateSolanaWallet(wallet: string): boolean { + const key = new PublicKey(wallet); + + if (PublicKey.isOnCurve(key.toBytes())) { + return true; + } + + throw new Error(`${wallet} is invalid`); + } + + /** + * The function `validateDate` in TypeScript checks if a given string can be parsed into a valid + * date. + * @param {string} date - The `validateDate` function takes a `date` parameter as a string input. + * This function attempts to parse the input string into a Date object using `new Date(date)`. If the + * parsing is successful and the date is valid, the function returns `true`. If the parsing fails + * (e.g + * @returns The `validateDate` function is returning a boolean value, either `true` if the input + * `date` is a valid date, or it will throw an error if the input `date` is not a valid date. + */ + public validateDate(date: string): boolean { + const parsedDate = new Date(date); + if (isNaN(parsedDate.getTime())) { + throw new Error(`${date} is not valid date`); + } + return true; + } + + /** + * The function `validateDID` checks if a given string follows a specific format for a decentralized + * identifier (DID). + * @param {string} did - The `did` parameter is a string that represents a Decentralized Identifier + * (DID) following a specific format. The format is expected to be in the form of + * `did:gatewayId:gateway:` followed by a 64-character hexadecimal string. + * @returns The `validateDID` function is returning a boolean value. It returns `true` if the + * provided DID string matches the specified regex pattern, and it throws an error if the DID string + * does not match the pattern. + */ + public validateDID(did: string): boolean { + const didRegex = /^did:gatewayid:/; + if (!didRegex.test(did)) throw new Error(`${did} is not valid did`); + + return true; + } + + /** + * The function `validateObjectProperties` iterates over the properties of an object and validates + * them based on certain conditions like checking for specific key names and data types. + * @param obj - The `validateObjectProperties` function takes an object `obj` as a parameter. It + * iterates over the properties of the object and performs validation based on the property names and + * values. If the value of a property is a string, it checks the property name to determine which + * validation method to call. + */ + public validateObjectProperties(obj: Record): void { + for (const key in obj) { + if (typeof obj[key] === 'string') { + try { + if (key.toLocaleLowerCase() === 'did') { + this.validateDID(obj[key]); + } else if (key.toLocaleLowerCase().includes('id')) { + this.validateUUID(obj[key]); + } else if (key.toLocaleLowerCase().includes('date')) { + this.validateDate(obj[key]); + } else this.validateString(obj[key]); + } catch (error) { + throw error; + } + } + } + } + + /** + * This TypeScript function validates a file name by checking for missing file name or extension and + * returns the name and MIME type of the file. + * @param {string} fileName - The `validateFileName` function takes a `fileName` parameter, which is + * a string representing the name of a file including its extension. The function validates the file + * name by checking if it is not empty, if it contains both a name and an extension, and then returns + * an object containing the name and + * @returns The `validateFileName` function returns an object with two properties: `name` and + * `extension`. The `name` property contains the file name without the extension, and the `extension` + * property contains the MIME type of the file extension or defaults to 'application/octet-stream' if + * the MIME type is not found. + */ + public validateFileName(fileName: string): { + name: string; + extension: string; + } { + const parts = fileName.split('.'); + + if (parts.length < 2) { + throw new Error('Invalid file name. File name or extension is missing.'); + } + + const extension = parts.pop() as string; + const name = parts.join('.'); + if (!name || !extension) { + throw new Error('Invalid file name. Name or extension is missing.'); + } + return { + name, + extension: mime.contentType(extension) || 'application/octet-stream', + }; + } +} diff --git a/src/transaction/transaction.ts b/src/transaction/transaction.ts deleted file mode 100644 index d08cdc8..0000000 --- a/src/transaction/transaction.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Sdk, transactions_queryQueryVariables } from '../../gatewaySdk'; -import { errorHandler } from '../utils/errorHandler'; -import { isStringValid } from '../utils/validators'; - -export class Transaction { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `getTransaction` is an asynchronous function that queries a transaction using an ID and - * handles any errors that occur. - * @param {string} id - The `id` parameter is a string that represents the unique identifier of a - * transaction. - * @returns The `getTransaction` function is returning the result of the `this.sdk.transaction_query({ - * id: id })` function call. - */ - async getTransaction(id: string) { - try { - isStringValid(id); - return await this.sdk.transaction_query({ id: id }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The `getTransactions` function is an asynchronous function that queries transactions based on a - * given filter and returns the result. - * @param {FilterTransactionsInput} filter - The `filter` parameter is an object that contains the - * criteria for filtering the transactions. It is of type `FilterTransactionsInput`. The specific - * properties and their types within this object will depend on the requirements of your application. - * @returns the result of the `this.sdk.transactions_query({ filter: filter })` call. - */ - async getTransactions(variables?: transactions_queryQueryVariables) { - try { - return await this.sdk.transactions_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `getTransactionCount` is an asynchronous function that queries the transaction count, - * with an optional parameter to show money transactions. - * @param {boolean} [showMoneyTxs] - The parameter "showMoneyTxs" is a boolean value that determines - * whether or not to include money transactions in the count. If set to true, the count will include - * money transactions. If set to false or not provided, the count will only include non-money - * transactions. - * @returns the result of the `this.sdk.transactionsCount_query({ showMoneyTxs })` function call. - */ - async getTransactionCount(showMoneyTxs?: boolean) { - try { - return await this.sdk.transactionsCount_query({ showMoneyTxs }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/types.ts b/src/types.ts deleted file mode 100644 index 58b2b9a..0000000 --- a/src/types.ts +++ /dev/null @@ -1,37 +0,0 @@ -export enum UserIdentifierType { - EMAIL = 'EMAIL', - EVM = 'EVM', - GATEWAY_ID = 'GATEWAY_ID', - SOLANA = 'SOLANA', - USER_ID = 'USER_ID', -} - -export enum PDAStatus { - 'Expired' = 'Expired', - 'Revoked' = 'Revoked', - 'Suspended' = 'Suspended', - 'Valid' = 'Valid', -} - -export enum OrganizationIdentifierType { - GATEWAY_ID = 'GATEWAY_ID', - ORG_ID = 'ORG_ID', -} - -export enum OrganizationRole { - Admin = 'Admin', - Member = 'Member', - Owner = 'Owner', -} - -export enum AuthType { - 'EMAIL' = 'EMAIL', - 'GOOGLE' = 'GOOGLE', - 'HOT_WALLET' = 'HOT_WALLET', - 'WALLET' = 'WALLET', -} - -export enum Chain { - EVM = 'EVM', - SOL = 'SOL', -} diff --git a/src/user/user.ts b/src/user/user.ts deleted file mode 100644 index c8738ab..0000000 --- a/src/user/user.ts +++ /dev/null @@ -1,277 +0,0 @@ -import { - FilterDataModelInput, - FilterDataRequestTemplateInput, - Sdk, - UpdateUserInput, - myFinancialTransactionsCount_queryQueryVariables, - myFinancialTransactions_queryQueryVariables, - myPDACount_queryQueryVariables, - myPDAs_queryQueryVariables, - myTransactions_queryQueryVariables, -} from '../../gatewaySdk'; -import { UserIdentifierType } from '../types'; -import { errorHandler } from '../utils/errorHandler'; -import { - isEmailValid, - isStringValid, - isUUIDValid, - isValidUrl, - validateObjectProperties, -} from '../utils/validators'; - -export class User { - public sdk: Sdk; - - constructor(sdk: Sdk) { - this.sdk = sdk; - } - - /** - * The function `me` makes an asynchronous call to `me_query` and returns the result, or throws an - * error if something goes wrong. - * @returns a Promise that resolves to me. - */ - async me() { - try { - return await this.sdk.me_query(); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function takes a user identifier type and value as input, queries the user using the SDK, and - * returns the result. - * @param - - `type`: The type of user identifier. It can be one of the following values: - * @returns The `user` function is returning the result of the `user_query` method call from the `sdk` - * object. - */ - async getSingleUser({ - type, - value, - }: { - type: UserIdentifierType; - value: string; - }) { - try { - isStringValid(value); - return await this.sdk.user_query({ input: { type, value } }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myPDACount` is an asynchronous function that returns the count of a user's PDA - * based on an optional filter. - * @param {FilterPDAInput} [filter] - The `filter` parameter is an optional input that allows you to - * specify criteria for filtering the PDAs before counting them. It is - * of type `FilterPDAInput`. - * @returns a Promise that resolves to a number. - */ - async myPDACount(filter?: myPDACount_queryQueryVariables) { - try { - return (await this.sdk.myPDACount_query(filter)).myPDACount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myPDAs` is an asynchronous function that takes in a `myPDAs_queryQueryVariables` object and returns a - * promise that resolves to a `myPDAs_queryQuery` object. - * @param {myPDAs_queryQueryVariables} - - `filter`: An object that contains filter criteria for the query. - * @returns a Promise that resolves to a value of type `myPDAs_queryQuery`. - */ - async myPDAs(variables?: myPDAs_queryQueryVariables) { - try { - return await this.sdk.myPDAs_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myDataModelsCount` is an asynchronous function that retrieves the count of data - * models based on an optional filter and returns the count. - * @param {FilterDataModelInput} [filter] - The `filter` parameter is an optional input that allows - * you to specify conditions to filter the data models. It is of type `FilterDataModelInput`. You can - * use this parameter to define criteria such as filtering by a specific field value or applying - * logical operators like AND and OR to combine multiple conditions. - * @returns the count of data models that match the provided filter. - */ - async myDataModelsCount(filter?: FilterDataModelInput) { - try { - return (await this.sdk.dataModelsCount_query({ filter })).dataModelsCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myDataRequestTemplatesCount` is an asynchronous function that retrieves the count of - * data request templates based on an optional filter and returns the count. - * @param {FilterDataRequestTemplateInput} [filter] - The `filter` parameter is an optional input - * that allows you to specify criteria for filtering the data request templates. It is of type - * `FilterDataRequestTemplateInput`. You can use this parameter to narrow down the results based on - * specific conditions such as template name, creator, or any other relevant attributes. - * @returns the count of myDataRequestTemplates that match the provided filter. - */ - async myDataRequestTemplatesCount(filter?: FilterDataRequestTemplateInput) { - try { - return (await this.sdk.myDataRequestTemplatesCount_query({ filter })) - .myDataRequestTemplatesCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myFinancialTransactions` gets recently made financial transactions - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {myFinancialTransactionsCount_queryQueryVariables} variables - The variables is a complex filter type - * @returns the result of the `myFinancialTransactions_queryQuery` method call. - */ - async myFinancialTransactions( - variables?: myFinancialTransactions_queryQueryVariables, - ) { - try { - if (variables?.organizationId) isUUIDValid(variables.organizationId); - return await this.sdk.myFinancialTransactions_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myFinancialTransactionsCount` gets count of recently made transactions - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {myFinancialTransactionsCount_queryQueryVariables} variables - The variables is a complex filter type - * @returns the result of the `myFinancialTransactionsCount_queryQuery` method call. - */ - async myFinancialTransactionsCount( - variables?: myFinancialTransactionsCount_queryQueryVariables, - ) { - try { - if (variables?.organizationId) isUUIDValid(variables.organizationId); - return (await this.sdk.myFinancialTransactionsCount_query(variables)) - .myFinancialTransactionsCount; - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myTransactions_query` gets recently made transactions - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {myTransactions_queryQueryVariables} variables - The variables is a complex filter type - * @returns the result of the `myTransactions_queryQuery` method call. - */ - async myTransactions(variables?: myTransactions_queryQueryVariables) { - try { - return await this.sdk.myTransactions_query(variables); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `myWallet` gets wallet summary by making a query request - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {string} organizationId - The organizationId parameter is a string that represents the org id - * @returns the result of the `myWallet_queryQuery` method call. - */ - async myWallet(organizationId?: string) { - try { - if (organizationId) isUUIDValid(organizationId); - return await this.sdk.myWallet_query({ organizationId }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `updateUser` updates a user's information and returns the updated user. - * @param {UpdateUserInput} updatedUser - The `updatedUser` parameter is an object of type - * `UpdateUserInput`. It contains the data that will be used to update a user. The specific - * properties and their types within the `UpdateUserInput` object will depend on the requirements of - * your application. - * @returns The updateUser function is returning the result of the updateUser_mutation API call. - */ - async updateUser(updatedUser: UpdateUserInput) { - try { - validateObjectProperties(updatedUser); - return await this.sdk.updateUser_mutation({ input: updatedUser }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function updates the display name of the user using a mutation and returns the result, or - * throws an error if something goes wrong. - * @param {string} displayName - The `displayName` parameter is a string that represents the new - * display name that you want to update. - * @returns the result of the `updateMyDisplayName_mutation` method call, which is likely a Promise - * that resolves to the updated display name. - */ - async updateMyDisplayName(displayName: string) { - try { - isStringValid(displayName); - return await this.sdk.updateMyDisplayName_mutation({ displayName }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `updateMyGatewayId` updates the gateway ID using a mutation and returns the result, - * or throws an error if something goes wrong. - * @param {string} gatewayId - The `gatewayId` parameter is a string that represents the ID of a - * gateway. - * @returns the result of the `updateMyGatewayId_mutation` method call, which is awaited using the - * `await` keyword. - */ - async updateMyGatewayId(gatewayId: string) { - try { - isStringValid(gatewayId); - return await this.sdk.updateMyGatewayId_mutation({ gatewayId }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function updates the user's profile picture by making a mutation request to the SDK. - * @param {string} profilePictureUrl - The `profilePictureUrl` parameter is a string that represents - * the URL of the new profile picture that you want to update. - * @returns the result of the `updateMyProfilePicture_mutation` mutation. - */ - async updateMyProfilePicture(profilePictureUrl: string) { - try { - isValidUrl(profilePictureUrl); - return await this.sdk.updateMyProfilePicture_mutation({ - profilePictureUrl, - }); - } catch (error) { - throw new Error(errorHandler(error)); - } - } - - /** - * The function `updateNotificationEmail` updates the notification email by making a mutation request - * to the SDK and returns the result, or throws an error if something goes wrong. - * @param {string} email - The email parameter is a string that represents the new notification email - * that needs to be updated. - * @returns the result of the `updateNotificationEmail_mutation` method call. - */ - async updateNotificationEmail(email: string) { - try { - isEmailValid(email); - return (await this.sdk.updateNotificationEmail_mutation({ email })) - .updateNotificationEmail; - } catch (error) { - throw new Error(errorHandler(error)); - } - } -} diff --git a/src/utils/constants.ts b/src/utils/constants.ts deleted file mode 100644 index 4894933..0000000 --- a/src/utils/constants.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const STRING_VALIDATION_LENGTH = 2; -export const TEST_DEFAULT_TIMEOUT = 10000; -export const DEFAULT_TAKE_LIMIT = 15; diff --git a/src/utils/errorHandler.ts b/src/utils/errorHandler.ts deleted file mode 100644 index e1384ea..0000000 --- a/src/utils/errorHandler.ts +++ /dev/null @@ -1,15 +0,0 @@ -export const errorHandler = (error: any): string => { - if ( - error.response && - error.response.errors && - error.response.errors.length > 0 && - error.response.errors[0].message - ) { - return error.response.errors[0].message; - } else if (typeof error === 'object' && error !== null) { - if ('message' in error) { - return error.message; - } - } - return 'Something went wrong!'; -}; diff --git a/src/utils/validators.ts b/src/utils/validators.ts deleted file mode 100644 index fee5d02..0000000 --- a/src/utils/validators.ts +++ /dev/null @@ -1,86 +0,0 @@ -import { ethers } from 'ethers'; -import { PublicKey } from '@solana/web3.js'; -import { Chain } from '../types'; -import { STRING_VALIDATION_LENGTH } from './constants'; - -export const isEmailValid = (email: string): boolean => { - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - if (!emailRegex.test(email)) throw new Error(`${email} is not valid`); - return true; -}; - -export const isStringValid = (value: string): boolean => { - if (!(value.length > STRING_VALIDATION_LENGTH)) - throw new Error( - `${value} should be atleast ${STRING_VALIDATION_LENGTH} length`, - ); - return true; -}; - -export const isValidUrl = (url: string): boolean => { - const urlPattern = - /^https:\/\/([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-._?%&=]*)?$/; - - if (!urlPattern.test(url)) throw new Error(`${url} is not valid`); - return true; -}; - -export const isUUIDValid = (uuid: string): boolean => { - const uuidRegex = - /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/; - if (!uuidRegex.test(uuid)) throw new Error(`${uuid} is not valid`); - return true; -}; - -export const validateEtherumWallet = (wallet: string): boolean => { - if (ethers.utils.isAddress(wallet)) { - return true; - } - - throw new Error(`${wallet} is invalid`); -}; - -export const validateSolanaWallet = (wallet: string): boolean => { - const key = new PublicKey(wallet); - - if (PublicKey.isOnCurve(key.toBytes())) { - return true; - } - - throw new Error(`${wallet} is invalid`); -}; - -export const isWalletAddressvalid = (wallet: string, chain: Chain): boolean => { - if (chain === Chain.EVM) { - return validateEtherumWallet(wallet); - } else if (chain === Chain.SOL) { - return validateSolanaWallet(wallet); - } else { - throw new Error(`${chain} not supported yet`); - } -}; - -export const isDateValid = (date: string): boolean => { - const parsedDate = new Date(date); - if (isNaN(parsedDate.getTime())) { - throw new Error(`${date} is not valid`); - } - return true; -}; - -export const validateObjectProperties = (obj: Record): void => { - for (const key in obj) { - if (typeof obj[key] === 'string') { - try { - if (key.toLocaleLowerCase().includes('id')) { - isUUIDValid(obj[key]); - } - if (key.toLocaleLowerCase().includes('date')) { - isDateValid(obj[key]); - } else isStringValid(obj[key]); - } catch (error) { - throw error; - } - } - } -}; diff --git a/test/account.test.ts b/test/account.test.ts new file mode 100644 index 0000000..d9d43f3 --- /dev/null +++ b/test/account.test.ts @@ -0,0 +1,47 @@ +import { OpenAPIClient, MyAccountResponse } from '../src/common/types'; +import { paths } from '../src/api'; + +import { GTWError } from '../src/helpers/custom-error'; +import { Account } from '../src/modules/account/account'; +import { MediaType } from 'openapi-typescript-helpers'; +import { mockClient, mockGet } from './stubs/common.stub'; +import { routes } from '../src/common/routes'; + +describe('Account', () => { + let account: Account; + + beforeEach(() => { + account = new Account( + mockClient as unknown as OpenAPIClient, + ); + }); + + describe('getAccountInfo', () => { + it('should return account info when API call is successful', async () => { + const mockData: MyAccountResponse = { did: '123', username: 'Test User' }; + mockGet.mockResolvedValue({ + data: mockData, + response: {}, + error: null, + }); + + const result = await account.getAccountInfo(); + + expect(result).toEqual(mockData); + expect(mockClient.GET).toHaveBeenCalledWith(routes.GetMyAccount); + }); + + it('should throw GTWError when API call fails', async () => { + const mockResponse = { status: 401 } as Response; + + mockGet.mockResolvedValue({ + data: null, + response: mockResponse, + error: { error: 'Unauthorized' }, + }); + + await expect(account.getAccountInfo()).rejects.toThrow(GTWError); + expect(mockClient.GET).toHaveBeenCalledWith(routes.GetMyAccount); + }); + }); +}); diff --git a/test/auth.test.ts b/test/auth.test.ts index 176ee3b..59d88d8 100644 --- a/test/auth.test.ts +++ b/test/auth.test.ts @@ -1,275 +1,91 @@ -import { Auth } from '../src/auth/auth'; -import { AuthMockService } from '../__mocks__/auth.mock'; -import { authStub } from './stubs/auth.stub'; -import { AuthType } from '../src/types'; -import { GraphQLClient } from 'graphql-request'; -import { getSdk } from '../gatewaySdk'; +import { Auth } from '../src/modules/auth/auth'; + +import createClient from 'openapi-fetch'; +import { GTWError } from '../src/helpers/custom-error'; +import { + authDetails, + authSolanaDetails, + errorMessage, + mockClient, + mockGet, + mockPost, + successMessage, +} from './stubs/common.stub'; +import { routes } from '../src/common/routes'; +jest.mock('openapi-fetch'); let auth: Auth; beforeAll(() => { - auth = new Auth(getSdk(new GraphQLClient(''))); + (createClient as jest.Mock).mockReturnValue(mockClient); + auth = new Auth(mockClient); }); afterAll(() => { jest.resetAllMocks(); }); -describe('AUTH SERVICE TESTING', () => { - it('check username availability', async () => { - const { checkUsernameAvailabilityMock } = AuthMockService(auth); +describe('Auth Unit Test', () => { + test('should generate sign message', async () => { + mockGet.mockResolvedValue(successMessage()); - const result = await auth.checkUsernameAvailability(authStub().username); - - expect(result).toEqual(true); - expect(checkUsernameAvailabilityMock).toHaveBeenCalled(); - }); - - it('check username availability to throw error', async () => { - const { checkUsernameAvailabilityMock } = AuthMockService(auth); - - expect(async () => { - await auth.checkUsernameAvailability(authStub({ username: '' }).username); - }).rejects.toThrow(' should be atleast 2 length'); - expect(checkUsernameAvailabilityMock).toHaveBeenCalled(); - }); - - it('add email', async () => { - const { addEmailMock } = AuthMockService(auth); - - const { email, code } = await auth.addEmail(authStub().email); - - expect(email).toBe(authStub().email); - expect(code).toBe(authStub().code); - expect(addEmailMock).toHaveBeenCalled(); - }); - - it('add email to throw error', async () => { - const { addEmailMock } = AuthMockService(auth); - - expect( - async () => - await auth.addEmail(authStub({ email: 'wrong-email.com' }).email), - ).rejects.toThrow('wrong-email.com is not valid'); - - expect(addEmailMock).toHaveBeenCalled(); - }); - - it('add wallet', async () => { - const { addWalletMock } = AuthMockService(auth); - - const { message } = await auth.addWallet( - authStub().wallet, - authStub().chain, - ); - - expect(message).toBe(authStub().message); - expect(addWalletMock).toHaveBeenCalled(); + const message = await auth.generateSignMessage(); + expect(message).toBeDefined(); + expect(mockGet).toHaveBeenCalledWith(routes.GenerateSignMessage); }); - it('add wallet to throw error', async () => { - const { addWalletMock } = AuthMockService(auth); + it('should throw GTWError for generate sign message', async () => { + mockGet.mockResolvedValue(errorMessage()); - expect( - async () => - await auth.addWallet(authStub({ wallet: '' }).wallet, authStub().chain), - ).rejects.toThrow(' is invalid'); - - expect(addWalletMock).toHaveBeenCalled(); - }); - - it('create wallet nounce', async () => { - const { createWalletNonceMock } = AuthMockService(auth); - - const { message } = await auth.createWalletNonce( - authStub().wallet, - authStub().chain, - ); - - expect(message).toBe(authStub().message); - expect(createWalletNonceMock).toHaveBeenCalled(); + await expect(auth.generateSignMessage()).rejects.toThrow(GTWError); + expect(mockGet).toHaveBeenCalledWith('/auth/message'); + expect(mockGet).toHaveBeenCalledWith(routes.GenerateSignMessage); }); - it('create wallet nounce to throw error', async () => { - const { createWalletNonceMock } = AuthMockService(auth); + test('should generate refresh token', async () => { + mockGet.mockResolvedValue(successMessage({ data: { token: 'test' } })); - expect( - async () => - await auth.createWalletNonce( - authStub({ wallet: '' }).wallet, - authStub().chain, - ), - ).rejects.toThrow(' is invalid'); + const message = await auth.generateRefreshToken(); - expect(createWalletNonceMock).toHaveBeenCalled(); + expect(message).toBeDefined(); + expect(mockGet).toHaveBeenCalledWith(routes.RefreshToken); }); - it('add email confirmation', async () => { - const { addEmailConfirmationtMock } = AuthMockService(auth); - - const { user } = await auth.addEmailConfirmation( - authStub().email, - authStub().code, - ); + it('should throw GTWError for generate refresh token', async () => { + mockGet.mockResolvedValue(errorMessage()); - expect(user.id).toBe(authStub().id); - expect(addEmailConfirmationtMock).toHaveBeenCalled(); + await expect(auth.generateRefreshToken()).rejects.toThrow(GTWError); + expect(mockGet).toHaveBeenCalledWith(routes.RefreshToken); }); - it('add email confirmation to throw error', async () => { - const { addEmailConfirmationtMock } = AuthMockService(auth); - - expect( - async () => - await auth.addEmailConfirmation( - authStub({ email: 'wrong-email.com' }).email, - authStub().code, - ), - ).rejects.toThrow('wrong-email.com is not valid'); - - expect(addEmailConfirmationtMock).toHaveBeenCalled(); - }); + test('should login using etherum wallet', async () => { + mockPost.mockResolvedValue(successMessage({ data: { token: 'test' } })); - it('add wallet confirmation', async () => { - const { addWalletConfirmationtMock } = AuthMockService(auth); + const message = await auth.login(authDetails()); - const { addWalletConfirmation } = await auth.addWalletConfirmation({ - signature: authStub().signature, - wallet: authStub().wallet, + expect(message).toBeDefined(); + expect(mockPost).toHaveBeenCalledWith(routes.AuthenticateAccount, { + body: authDetails(), }); - expect(addWalletConfirmation.id).toBe(authStub().id); - expect(addWalletConfirmationtMock).toHaveBeenCalled(); - }); - - it('add wallet confirmation to throw error', async () => { - const { addWalletConfirmationtMock } = AuthMockService(auth); - - expect( - async () => - await auth.addWalletConfirmation({ - signature: authStub({ signature: '' }).signature, - wallet: authStub().wallet, - }), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(addWalletConfirmationtMock).toHaveBeenCalled(); - }); - - it('delete account', async () => { - const { deleteAccountMock } = AuthMockService(auth); - - const deleted = await auth.deleteAccount(authStub().id); - - expect(deleted).toBe(true); - expect(deleteAccountMock).toHaveBeenCalled(); - }); - - it('delete account to throw error', async () => { - const { deleteAccountMock } = AuthMockService(auth); - - expect( - async () => await auth.deleteAccount(authStub({ id: '' }).id), - ).rejects.toThrow(''); - - expect(deleteAccountMock).toHaveBeenCalled(); - }); - - it('login email', async () => { - const { loginEmailMock } = AuthMockService(auth); - - const { user } = await auth.loginEmail(authStub().email, authStub().code); - - expect(user.id).toBe(authStub().id); - expect(loginEmailMock).toHaveBeenCalled(); - }); - - it('login email to throw error', async () => { - const { loginEmailMock } = AuthMockService(auth); - - expect( - async () => - await auth.loginEmail( - authStub({ email: 'wrong-email.com' }).email, - authStub().code, - ), - ).rejects.toThrow('wrong-email.com is not valid'); - - expect(loginEmailMock).toHaveBeenCalled(); - }); - - it('login wallet', async () => { - const { loginWalletlMock } = AuthMockService(auth); - - const { user } = await auth.loginWallet( - authStub().wallet, - authStub().chain, - authStub().signature, - ); - - expect(user.id).toBe(authStub().id); - expect(loginWalletlMock).toHaveBeenCalled(); - }); - - it('login wallet to throw error', async () => { - const { loginWalletlMock } = AuthMockService(auth); - - expect( - async () => - await auth.loginWallet( - authStub().wallet, - authStub().chain, - authStub({ signature: '' }).signature, - ), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(loginWalletlMock).toHaveBeenCalled(); - }); - - it('refresh token', async () => { - const { refreshTokenMock } = AuthMockService(auth); - - const { user } = await auth.refreshToken(authStub().existingRefreshToken); - - expect(user.id).toBe(authStub().id); - expect(refreshTokenMock).toHaveBeenCalled(); - }); - - it('refresh token to throw error', async () => { - const { refreshTokenMock } = AuthMockService(auth); - - expect( - async () => - await auth.refreshToken( - authStub({ existingRefreshToken: '' }).existingRefreshToken, - ), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(refreshTokenMock).toHaveBeenCalled(); }); - it('unregister auth method', async () => { - const { unregisterAuthMethodMock } = AuthMockService(auth); + test('should login using solana wallet', async () => { + mockPost.mockResolvedValue(successMessage({ data: { token: 'test' } })); - const { unregisterAuthMethod } = await auth.unregisterAuthMethod( - authStub().email, - AuthType.EMAIL, - ); + const message = await auth.login(authSolanaDetails()); - expect(unregisterAuthMethod).toBe(true); - expect(unregisterAuthMethodMock).toHaveBeenCalled(); + expect(message).toBeDefined(); + expect(mockPost).toHaveBeenCalledWith(routes.AuthenticateAccount, { + body: authDetails(), + }); }); - it('unregister auth method', async () => { - const { unregisterAuthMethodMock } = AuthMockService(auth); + it('should throw GTWError for login', async () => { + mockPost.mockResolvedValue(errorMessage()); - expect( - async () => - await auth.unregisterAuthMethod( - authStub({ email: '' }).email, - AuthType.EMAIL, - ), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(unregisterAuthMethodMock).toHaveBeenCalled(); + await expect(auth.login(authDetails())).rejects.toThrow(GTWError); + expect(mockPost).toHaveBeenCalledWith(routes.AuthenticateAccount, { + body: authDetails(), + }); }); }); diff --git a/test/data-asset.test.ts b/test/data-asset.test.ts new file mode 100644 index 0000000..ec07a39 --- /dev/null +++ b/test/data-asset.test.ts @@ -0,0 +1,265 @@ +import createClient from 'openapi-fetch'; +import { + bodyStub, + errorMessage, + ID, + linksStub, + metaStub, + mockClient, + mockDelete, + mockGet, + mockPost, + mockPut, + paramsStub, + successMessage, +} from './stubs/common.stub'; +import { DataAsset } from '../src/modules/data-asset/data-asset'; +import { ValidationService } from '../src/services/validator-service'; +import { GTWError } from '../src/helpers/custom-error'; +import { + aclListStub, + aclStub, + blobStub, + dataAssetStub, +} from './stubs/data-asset.stub'; +import { routes } from '../src/common/routes'; + +jest.mock('openapi-fetch'); + +let dataAsset: DataAsset; +let validationService: ValidationService; + +beforeAll(() => { + (createClient as jest.Mock).mockReturnValue(mockClient); + validationService = new ValidationService(); + dataAsset = new DataAsset(mockClient, validationService); +}); + +afterAll(() => { + jest.resetAllMocks(); +}); + +describe('Data Assets Test', () => { + it('should create claim based data asset', async () => { + mockPost.mockResolvedValue(successMessage({ data: { id: ID } })); + + const pdaId = await dataAsset.createClaimBasedDataAsset(); + + expect(pdaId).toBeDefined(); + expect(mockPost).toHaveBeenCalledWith( + routes.CreateANewDataAsset, + bodyStub(), + ); + }); + + it('should throw GTWError for create claim based data asset', async () => { + mockPost.mockResolvedValue(errorMessage()); + + await expect(dataAsset.createClaimBasedDataAsset()).rejects.toThrow( + GTWError, + ); + expect(mockPost).toHaveBeenCalledWith( + routes.CreateANewDataAsset, + bodyStub(), + ); + }); + + it('should get my data assets', async () => { + mockGet.mockResolvedValue( + successMessage({ + data: { data: [dataAssetStub()], meta: metaStub(), links: linksStub() }, + }), + ); + + const data = await dataAsset.getMyDataAssets(); + + expect(data).toBeDefined(); + expect(data.data.length).toBeGreaterThan(0); + expect(mockGet).toHaveBeenCalledWith(routes.GetMyDataAssets, paramsStub()); + }); + + it('should throw GTWError for get my data assets', async () => { + mockGet.mockResolvedValue(errorMessage()); + + await expect(dataAsset.getMyDataAssets()).rejects.toThrow(GTWError); + + expect(mockGet).toHaveBeenCalledWith(routes.GetMyDataAssets, paramsStub()); + }); + + it('should get data asset by id', async () => { + mockGet.mockResolvedValue( + successMessage({ + data: dataAssetStub(), + }), + ); + + const data = await dataAsset.getDataAssetById(ID); + + expect(data).toBeDefined(); + expect(mockGet).toHaveBeenCalledWith( + routes.GetDataAssetByID, + paramsStub({ params: { path: { id: 1 } } }), + ); + }); + + it('should throw GTWError for get data asset by id', async () => { + mockGet.mockResolvedValue(errorMessage()); + + await expect(dataAsset.getDataAssetById(ID)).rejects.toThrow(GTWError); + + expect(mockGet).toHaveBeenCalledWith( + routes.GetDataAssetByID, + paramsStub({ params: { path: { id: 1 } } }), + ); + }); + + it('should update data asset', async () => { + mockPut.mockResolvedValue(successMessage({ data: dataAssetStub() })); + + const updatedDataAsset = await dataAsset.updateDataAsset(ID); + + expect(updatedDataAsset).toBeDefined(); + expect(mockPut).toHaveBeenCalledWith(routes.UpdateDataAssetByID, { + body: {}, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should throw GTWError for update data asset', async () => { + mockPut.mockResolvedValue(errorMessage()); + + await expect(dataAsset.updateDataAsset(ID)).rejects.toThrow(GTWError); + expect(mockPut).toHaveBeenCalledWith(routes.UpdateDataAssetByID, { + body: {}, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should delete data asset by id', async () => { + mockDelete.mockResolvedValue(successMessage()); + + const deleteDataAsset = await dataAsset.deleteDataAsset(ID); + + expect(deleteDataAsset).toBeDefined(); + expect(mockDelete).toHaveBeenCalledWith( + routes.DeleteDataAssetByID, + paramsStub({ params: { path: { id: 1 } } }), + ); + }); + + it('should throw GTWError for delete data asset by id', async () => { + mockDelete.mockResolvedValue(errorMessage()); + + await expect(dataAsset.deleteDataAsset(ID)).rejects.toThrow(GTWError); + expect(mockDelete).toHaveBeenCalledWith( + routes.DeleteDataAssetByID, + paramsStub({ params: { path: { id: 1 } } }), + ); + }); + + it('should update acl', async () => { + mockPut.mockResolvedValue(successMessage({ data: aclStub() })); + + const aclList = await dataAsset.updateACL(ID, [aclListStub()]); + + expect(aclList).toBeDefined(); + expect(mockPut).toHaveBeenCalledWith(routes.UpdateACLItemsToDataAsset, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should throw GTWError for updating acl', async () => { + mockPut.mockResolvedValue(errorMessage()); + + await expect(dataAsset.updateACL(ID, [aclListStub()])).rejects.toThrow( + GTWError, + ); + expect(mockPut).toHaveBeenCalledWith(routes.UpdateACLItemsToDataAsset, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should override acl', async () => { + mockPost.mockResolvedValue(successMessage({ data: aclStub() })); + + const aclList = await dataAsset.overrideACL(ID, [aclListStub()]); + + expect(aclList).toBeDefined(); + expect(mockPost).toHaveBeenCalledWith(routes.AssignACLItemsToDataAsset, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should throw GTWError for override acl', async () => { + mockPost.mockResolvedValue(errorMessage()); + + await expect(dataAsset.overrideACL(ID, [aclListStub()])).rejects.toThrow( + GTWError, + ); + expect(mockPost).toHaveBeenCalledWith(routes.AssignACLItemsToDataAsset, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should delete acl', async () => { + mockDelete.mockResolvedValue(successMessage()); + + const message = await dataAsset.deleteACL(ID, [aclListStub()]); + + expect(message).toBeDefined(); + expect(mockDelete).toHaveBeenCalledWith(routes.DeleteAssignedRoleByACL, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should throw GTWError for updating acl', async () => { + mockDelete.mockResolvedValue(errorMessage()); + + await expect(dataAsset.deleteACL(ID, [aclListStub()])).rejects.toThrow( + GTWError, + ); + expect(mockDelete).toHaveBeenCalledWith(routes.DeleteAssignedRoleByACL, { + body: bodyStub({ body: [aclListStub()] }).body, + params: paramsStub({ params: { path: { id: 1 } } }).params, + }); + }); + + it('should share data asset', async () => { + mockPost.mockResolvedValue(successMessage({ data: aclStub() })); + + const aclList = await dataAsset.shareDataAsset(ID, ['']); + + expect(aclList).toBeDefined(); + expect(mockPost).toHaveBeenCalled(); + }); + + it('should throw GTWError for sharing data asset', async () => { + mockPost.mockResolvedValue(errorMessage()); + + await expect(dataAsset.shareDataAsset(ID, [''])).rejects.toThrow(GTWError); + expect(mockPost).toHaveBeenCalled(); + }); + + it('should download file based data asset', async () => { + mockGet.mockResolvedValue( + successMessage({ data: { fileName: 'test.txt', file: blobStub } }), + ); + + const file = await dataAsset.downloadDataAsset(ID); + + expect(file).toBeDefined(); + expect(mockGet).toHaveBeenCalled(); + }); + + it('should throw GTWError for downloading file based data asset', async () => { + mockGet.mockResolvedValue(errorMessage()); + + await expect(dataAsset.downloadDataAsset(ID)).rejects.toThrow(GTWError); + expect(mockGet).toHaveBeenCalled(); + }); +}); diff --git a/test/data-model.test.ts b/test/data-model.test.ts index d6f1095..bab309a 100644 --- a/test/data-model.test.ts +++ b/test/data-model.test.ts @@ -1,141 +1,246 @@ -import { getSdk } from '../gatewaySdk'; -import { DataModel } from '../src/data-model/data-model'; -import { - dataModelCreateStub, - dataModelStub, - dataModelMetaDataStub, -} from './stubs/dataModel.stub'; -import { DataModelMockService } from '../__mocks__/dataModel.mock'; -import { GraphQLClient } from 'graphql-request'; - -let dataModel: DataModel; - -beforeAll(() => { - dataModel = new DataModel(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('DATA MODEL CLASS METHODS TESTING', () => { - it('create data model ', async () => { - const { createDataModelMock } = DataModelMockService(dataModel); - - const { createDataModel } = await dataModel.createDataModel( - dataModelCreateStub(), - ); - - expect(createDataModel.title).toEqual(dataModelCreateStub().title); - expect(createDataModelMock).toHaveBeenCalled(); - }); - - it('create data model -> throw error ', async () => { - const { createDataModelMock } = DataModelMockService(dataModel); - - expect( - async () => - await dataModel.createDataModel({ - ...dataModelCreateStub(), - title: '', - }), - ).rejects.toThrow(' should be atleast 2 length'); - expect(createDataModelMock).toHaveBeenCalled(); +import { ValidationService } from '../src/services/validator-service'; +import { GTWError } from '../src/helpers/custom-error'; +import { DataModel } from '../src/modules/data-model/data-model'; +import { Config, DataModelRequest } from '../src/common/types'; +import { mockClient, mockGet, mockPost, mockPut } from './stubs/common.stub'; +import { routes } from '../src/common/routes'; + +const mockValidationService = {} as ValidationService; +const mockConfig = {} as Config; + +describe('DataModel', () => { + let dataModel: DataModel; + + beforeEach(() => { + jest.clearAllMocks(); + dataModel = new DataModel(mockClient, mockValidationService, mockConfig); }); - it('get data model', async () => { - const { getDataModelMock } = DataModelMockService(dataModel); - - const { dataModel: rdataModel } = await dataModel.getDataModel( - dataModelStub().id, - ); - expect(rdataModel).toEqual(dataModelStub()); - expect(getDataModelMock).toHaveBeenCalled(); + describe('getDataModels', () => { + it('should fetch data models successfully', async () => { + const mockResponse = { + data: [{ id: 1, name: 'Model1' }], + total: 1, + page: 1, + pageSize: 10, + }; + mockGet.mockResolvedValue({ + data: mockResponse, + error: null, + response: {} as Response, + }); + + const result = await dataModel.getDataModels(); + + expect(result).toEqual(mockResponse); + expect(mockClient.GET).toHaveBeenCalledWith(routes.GetDataModels, { + params: { query: { page: 1, page_size: 10 } }, + }); + }); + + it('should throw GTWError on API error', async () => { + const mockError = { error: 'API Error' }; + const mockResponse = { status: 400 } as Response; + mockGet.mockResolvedValue({ + data: null, + error: mockError, + response: mockResponse, + }); + + await expect(dataModel.getDataModels()).rejects.toThrow(GTWError); + await expect(dataModel.getDataModels()).rejects.toHaveProperty( + 'statusCode', + 400, + ); + await expect(dataModel.getDataModels()).rejects.toHaveProperty( + 'message', + 'API Error', + ); + }); }); - it('get data model -> throw error', async () => { - const { getDataModelMock } = DataModelMockService(dataModel); - - expect(async () => await dataModel.getDataModel('wrong')).rejects.toThrow( - 'wrong is not valid', - ); - expect(getDataModelMock).toHaveBeenCalled(); - }); - - it('get data models', async () => { - const { getDataModelsMock } = DataModelMockService(dataModel); - - const { dataModels } = await dataModel.getDataModels(); - - expect(dataModels.length).toBeGreaterThanOrEqual(0); - expect(getDataModelsMock).toHaveBeenCalled(); + describe('getDataModelById', () => { + it('should fetch a data model by id successfully', async () => { + const mockResponse = { id: 1, name: 'Model1' }; + mockGet.mockResolvedValue({ + data: mockResponse, + error: null, + response: {} as Response, + }); + + const result = await dataModel.getDataModelById(1); + + expect(result).toEqual(mockResponse); + expect(mockClient.GET).toHaveBeenCalledWith(routes.GetDataModelByID, { + params: { path: { id: 1 } }, + }); + }); + + it('should throw GTWError on API error', async () => { + const mockError = { error: 'Not Found' }; + const mockResponse = { status: 404 } as Response; + mockGet.mockResolvedValue({ + data: null, + error: mockError, + response: mockResponse, + }); + + await expect(dataModel.getDataModelById(1)).rejects.toThrow(GTWError); + await expect(dataModel.getDataModelById(1)).rejects.toHaveProperty( + 'statusCode', + 404, + ); + await expect(dataModel.getDataModelById(1)).rejects.toHaveProperty( + 'message', + 'Not Found', + ); + }); }); - it('get data models count', async () => { - const { getDataModelsCountMock } = DataModelMockService(dataModel); - const { dataModelsCount } = await dataModel.getDataModelsCount(); - expect(dataModelsCount).toBeGreaterThanOrEqual(0); - expect(getDataModelsCountMock).toHaveBeenCalled(); + describe('getMyDataModels', () => { + it('should fetch user-specific data models successfully', async () => { + const mockResponse = { + data: [{ id: 1, name: 'MyModel1' }], + total: 1, + page: 1, + pageSize: 10, + }; + mockGet.mockResolvedValue({ + data: mockResponse, + error: null, + response: {} as Response, + }); + + const result = await dataModel.getMyDataModels(); + + expect(result).toEqual(mockResponse); + expect(mockClient.GET).toHaveBeenCalledWith(routes.GetDataModelsByUser, { + params: { query: { page: 1, page_size: 10 } }, + }); + }); + + it('should throw GTWError on API error', async () => { + const mockError = { error: 'Unauthorized' }; + const mockResponse = { status: 401 } as Response; + mockGet.mockResolvedValue({ + data: null, + error: mockError, + response: mockResponse, + }); + + await expect(dataModel.getMyDataModels()).rejects.toThrow(GTWError); + await expect(dataModel.getMyDataModels()).rejects.toHaveProperty( + 'statusCode', + 401, + ); + await expect(dataModel.getMyDataModels()).rejects.toHaveProperty( + 'message', + 'Unauthorized', + ); + }); }); - it('get meta data of data models', async () => { - const { getDataModelsMetaDataMock } = DataModelMockService(dataModel); - const { dataModelsMetadata } = await dataModel.getDataModelsMetaData(); - expect(dataModelsMetadata).toEqual(dataModelMetaDataStub()); - expect(getDataModelsMetaDataMock).toHaveBeenCalled(); + describe('createDataModel', () => { + it('should create a data model successfully', async () => { + const input: DataModelRequest = { + title: 'Test Model', + description: 'A test data model', + schema: {}, + tags: ['test'], + }; + + const expectedOutput = { + id: 1, + ...input, + created_at: '2023-09-13T12:00:00Z', + updated_at: '2023-09-13T12:00:00Z', + created_by: 'user123', + }; + + mockPost.mockResolvedValue({ data: expectedOutput, error: null }); + + const result = await dataModel.createDataModel(input); + + expect(result).toEqual(expectedOutput); + expect(mockClient.POST).toHaveBeenCalledWith(routes.CreateDataModel, { + body: input, + }); + }); + + it('should throw GTWError when API call fails', async () => { + const input: DataModelRequest = { + title: 'Test Model', + description: 'A test data model', + schema: {}, + tags: ['test'], + }; + + const mockError = { error: 'API Error' }; + mockPost.mockResolvedValue({ + data: null, + error: mockError, + response: {}, + }); + + await expect(dataModel.createDataModel(input)).rejects.toThrow(GTWError); + expect(mockClient.POST).toHaveBeenCalledWith(routes.CreateDataModel, { + body: input, + }); + }); }); - it('get issuers by data model', async () => { - const { getIssuersByDataModelMock } = DataModelMockService(dataModel); - const { issuersByDataModel } = await dataModel.getIssuersByDataModel( - dataModelStub().id, - ); - - expect(issuersByDataModel.length).toBeGreaterThanOrEqual(0); - expect(getIssuersByDataModelMock).toHaveBeenCalled(); - }); - - it('get issuers by data model -> throw error', async () => { - const { getIssuersByDataModelMock } = DataModelMockService(dataModel); - expect( - async () => await dataModel.getIssuersByDataModel('wrong'), - ).rejects.toThrow('wrong is not valid'); - expect(getIssuersByDataModelMock).toHaveBeenCalled(); - }); - - it('get isssuers by data model count', async () => { - const { getIssuersDataModelCountMock } = DataModelMockService(dataModel); - const { issuersByDataModelCount } = - await dataModel.getIssuersByDataModelCount(dataModelStub().id); - expect(issuersByDataModelCount).toBeGreaterThanOrEqual(0); - expect(getIssuersDataModelCountMock).toHaveBeenCalled(); - }); - - it('get isssuers by data model count -> throw error', async () => { - const { getIssuersDataModelCountMock } = DataModelMockService(dataModel); - expect( - async () => await dataModel.getIssuersByDataModelCount('wrong'), - ).rejects.toThrow('wrong is not valid'); - expect(getIssuersDataModelCountMock).toHaveBeenCalled(); - }); - - it('get total issuers by data model ', async () => { - const { getTotalofIssuersByDataModelMock } = - DataModelMockService(dataModel); - const { getTotalofIssuersByDataModel } = - await dataModel.getTotalofIssuersByDataModel(dataModelStub().id); - - expect(getTotalofIssuersByDataModel).toBeGreaterThanOrEqual(0); - expect(getTotalofIssuersByDataModelMock).toHaveBeenCalled(); - }); - - it('get total issuers by data model -> throw error ', async () => { - const { getTotalofIssuersByDataModelMock } = - DataModelMockService(dataModel); - - expect( - async () => await dataModel.getTotalofIssuersByDataModel('wrong'), - ).rejects.toThrow('wrong is not valid'); - expect(getTotalofIssuersByDataModelMock).toHaveBeenCalled(); + describe('updateDataModel', () => { + it('should update a data model successfully', async () => { + const dataModelId = 1; + const input: DataModelRequest = { + title: 'Updated Test Model', + description: 'An updated test data model', + schema: {}, + tags: ['test', 'updated'], + }; + + const expectedOutput = { + id: dataModelId, + ...input, + created_at: '2023-09-13T12:00:00Z', + updated_at: '2023-09-13T13:00:00Z', + created_by: 'user123', + }; + + mockPut.mockResolvedValue({ data: expectedOutput, error: null }); + + const result = await dataModel.updateDataModel(dataModelId, input); + + expect(result).toEqual(expectedOutput); + expect(mockClient.PUT).toHaveBeenCalledWith(routes.UpdateDataModel, { + body: input, + params: { path: { id: dataModelId } }, + }); + }); + + it('should throw GTWError when API call fails', async () => { + const dataModelId = 1; + const input: DataModelRequest = { + title: 'Updated Test Model', + description: 'An updated test data model', + schema: {}, + tags: ['test', 'updated'], + }; + + const mockError = { error: 'API Error' }; + mockPut.mockResolvedValue({ + data: null, + error: mockError, + response: {}, + }); + + await expect( + dataModel.updateDataModel(dataModelId, input), + ).rejects.toThrow(GTWError); + expect(mockClient.PUT).toHaveBeenCalledWith(routes.UpdateDataModel, { + body: input, + params: { path: { id: dataModelId } }, + }); + }); }); }); diff --git a/test/dataRequestsTemplate.test.ts b/test/dataRequestsTemplate.test.ts deleted file mode 100644 index 2463fcd..0000000 --- a/test/dataRequestsTemplate.test.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { GraphQLClient } from 'graphql-request'; -import { getSdk } from '../gatewaySdk'; -import { DataRequestTemplateMockService } from '../__mocks__/dataRequestTemplate.mock'; -import { DataRequestTemplate } from '../src/dataRequestsTemplate/dataRequestsTemplate'; -import { - dataRequestTemplateCreateStub, - dataRequestTemplateStub, -} from './stubs/dataRequestTemplate.stub'; - -let dataRequestTemplate: DataRequestTemplate; - -beforeAll(() => { - dataRequestTemplate = new DataRequestTemplate(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('DATA REQUESTS TEMPLATE TESTING', () => { - it('create data request template', async () => { - const { createDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const { createDataRequestTemplate } = - await dataRequestTemplate.createDataRequestTemplate( - dataRequestTemplateCreateStub(), - ); - - expect(createDataRequestTemplate.name).toEqual( - dataRequestTemplateCreateStub().title, - ); - expect(createDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('create data request template to throw error', async () => { - const { createDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - expect( - async () => - await dataRequestTemplate.createDataRequestTemplate( - dataRequestTemplateCreateStub({ title: '' }), - ), - ).rejects.toThrow(''); - - expect(createDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('get data request template by id', async () => { - const { getDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const res = await dataRequestTemplate.getDataRequestTemplate( - dataRequestTemplateStub().id, - ); - - expect(res.dataRequestTemplate?.id).toEqual(dataRequestTemplateStub().id); - expect(getDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('get data request template by id to throw error', async () => { - const { getDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - expect( - async () => - await dataRequestTemplate.getDataRequestTemplate( - dataRequestTemplateStub({ id: '' }).id, - ), - ).rejects.toThrow(' is not valid'); - - expect(getDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('get data request templates', async () => { - const { getDataRequestTemplatesMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const { dataRequestTemplates } = - await dataRequestTemplate.getDataRequestTemplates({ - skip: 0, - take: 10, - }); - - expect(dataRequestTemplates?.length).toBeGreaterThan(0); - expect(getDataRequestTemplatesMock).toHaveBeenCalled(); - }); - - it('get data request templates count', async () => { - const { getDataRequestsTemplateCountMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const count = await dataRequestTemplate.getDataRequestsTemplateCount(); - - expect(count).toBeGreaterThan(0); - expect(getDataRequestsTemplateCountMock).toHaveBeenCalled(); - }); - - it('get data request templates metadata', async () => { - const { getDataRequestsTemplatesMetadataMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const { dataRequestTemplatesMetadata } = - await dataRequestTemplate.getDataRequestsTemplatesMetadata(); - - expect(dataRequestTemplatesMetadata.tags.length).toBe( - dataRequestTemplateStub().tags.length, - ); - expect(getDataRequestsTemplatesMetadataMock).toHaveBeenCalled(); - }); - - it('get verifiers by data request templates id', async () => { - const { getVerifiersByDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const { verifiersByDataRequestTemplate } = - await dataRequestTemplate.getVerifiersByDataRequestTemplate( - dataRequestTemplateStub().id, - ); - - expect(verifiersByDataRequestTemplate).toBeDefined(); - expect(getVerifiersByDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('get verifiers by data request templates id to throw error', async () => { - const { getVerifiersByDataRequestTemplateMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - expect( - async () => - await dataRequestTemplate.getVerifiersByDataRequestTemplate( - dataRequestTemplateStub({ id: '' }).id, - ), - ).rejects.toThrow(' is not valid'); - - expect(getVerifiersByDataRequestTemplateMock).toHaveBeenCalled(); - }); - - it('get verifiers count by data request templates', async () => { - const { getVerifiersByDataRequestTemplateCountMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - const count = - await dataRequestTemplate.getVerifiersByDataRequestTemplateCount( - dataRequestTemplateStub().id, - ); - - expect(count).toBeGreaterThan(0); - expect(getVerifiersByDataRequestTemplateCountMock).toHaveBeenCalled(); - }); - - it('get verifiers count by data request templates to throw error', async () => { - const { getVerifiersByDataRequestTemplateCountMock } = - DataRequestTemplateMockService(dataRequestTemplate); - - expect( - async () => - await dataRequestTemplate.getVerifiersByDataRequestTemplateCount( - dataRequestTemplateStub({ id: '' }).id, - ), - ).rejects.toThrow(' is not valid'); - - expect(getVerifiersByDataRequestTemplateCountMock).toHaveBeenCalled(); - }); -}); diff --git a/test/organization.test.ts b/test/organization.test.ts deleted file mode 100644 index fb54e83..0000000 --- a/test/organization.test.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { GraphQLClient } from 'graphql-request'; -import { getSdk } from '../gatewaySdk'; -import { OrganizationMockService } from '../__mocks__/organization.mock'; -import { Organization } from '../src/organization/organization'; -import { - OrganizationIdentifierType, - OrganizationRole, - UserIdentifierType, -} from '../src/types'; -import { - organizationCreateStub, - organizationStub, -} from './stubs/organization.stub'; - -let organization: Organization; - -beforeAll(() => { - organization = new Organization(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('ORGANIZATION SERVICE TESTING', () => { - it('organization create', async () => { - const { createOrganizationMock } = OrganizationMockService(organization); - - const { createOrganization } = await organization.createOrganization( - organizationCreateStub(), - ); - - expect(createOrganization.name).toEqual(organizationStub().name); - expect(createOrganizationMock).toHaveBeenCalled(); - }); - - it('organization create to throw error', async () => { - const { createOrganizationMock } = OrganizationMockService(organization); - - expect( - async () => - await organization.createOrganization( - organizationCreateStub({ username: '' }), - ), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(createOrganizationMock).toHaveBeenCalled(); - }); - - it('get single organization', async () => { - const { getOrganizationMock } = OrganizationMockService(organization); - - const res = await organization.getOrganization( - OrganizationIdentifierType.ORG_ID, - organizationStub().id, - ); - - expect(res.organization?.id).toEqual(organizationStub().id); - expect(getOrganizationMock).toHaveBeenCalled(); - }); - - it('get single organization to throw error', async () => { - const { getOrganizationMock } = OrganizationMockService(organization); - - expect( - async () => - await organization.getOrganization( - OrganizationIdentifierType.ORG_ID, - organizationStub({ id: '' }).id, - ), - ).rejects.toThrow(''); - - expect(getOrganizationMock).toHaveBeenCalled(); - }); - - it('update organization', async () => { - const { updateOrganizationMock } = OrganizationMockService(organization); - - let updatedOrgObj = { - description: 'updated description', - id: organizationStub().id, - }; - const { updateOrganization } = - await organization.updateOrganization(updatedOrgObj); - - expect(updateOrganization.description).toEqual(updatedOrgObj.description); - expect(updateOrganizationMock).toHaveBeenCalled(); - }); - - it('update organization to throw error', async () => { - const { updateOrganizationMock } = OrganizationMockService(organization); - - let updatedOrgObj = { - description: 'updated description', - id: organizationStub({ id: '' }).id, - }; - expect( - async () => await organization.updateOrganization(updatedOrgObj), - ).rejects.toThrow(''); - - expect(updateOrganizationMock).toHaveBeenCalled(); - }); - - it('member crud organization', async () => { - const { - addMemberToOrganizationMock, - changeMemberRoleMock, - removeMemberFromOrganizationMock, - } = OrganizationMockService(organization); - - let addMemberObj = { - organization: { - type: OrganizationIdentifierType.ORG_ID, - value: organizationStub().id, - }, - user: { type: UserIdentifierType.GATEWAY_ID, value: 'testing_sdk' }, - }; - let changeMemberRoleObj = { - ...addMemberObj, - role: OrganizationRole.Admin, - }; - const { addMemberToOrganization } = - await organization.addMemberToOrganization(addMemberObj); - - expect(addMemberToOrganization).toBeDefined(); - expect(addMemberToOrganizationMock).toHaveBeenCalled(); - - const { changeMemberRole } = - await organization.changeMemberRole(changeMemberRoleObj); - - expect(changeMemberRole.role).toBe(OrganizationRole.Admin); - expect(changeMemberRoleMock).toHaveBeenCalled(); - - const { removeMemberFromOrganization } = - await organization.removeMemberFromOrganization(addMemberObj); - - expect(removeMemberFromOrganization).toBeTruthy(); - expect(removeMemberFromOrganizationMock).toHaveBeenCalled(); - }); - - it('organizations', async () => { - const { getOrganizationsMock } = OrganizationMockService(organization); - - const { organizations } = await organization.getOrganizations({ - skip: 0, - take: 10, - }); - - expect(organizations.length).toBeGreaterThanOrEqual(0); - expect(getOrganizationsMock).toHaveBeenCalled(); - }); -}); diff --git a/test/pda.test.ts b/test/pda.test.ts deleted file mode 100644 index dd47fed..0000000 --- a/test/pda.test.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { PDAStatus } from '../src/types'; -import { PDA } from '../src/pda/pda'; -import { getSdk } from '../gatewaySdk'; -import { pdaCreateStub, pdaStub } from './stubs/pda.stub'; -import { PDAMockService } from '../__mocks__/pda.mock'; -import { GraphQLClient } from 'graphql-request'; - -let pda: PDA; - -beforeAll(() => { - pda = new PDA(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('PDA SERVICE TESTING', () => { - it('pda create', async () => { - const { createPDAMock: createPDAMutationMock } = PDAMockService(pda); - - const { createPDA } = await pda.createPDA(pdaCreateStub()); - - expect(createPDA.id).toBe(pdaStub().id); - expect(createPDAMutationMock).toHaveBeenCalled(); - }); - - it('pda create to throw error', async () => { - const { createPDAMock: createPDAMutationMock } = PDAMockService(pda); - - expect( - async () => await pda.createPDA(pdaCreateStub({ title: '' })), - ).rejects.toThrow(' should be atleast 2 length'); - - expect(createPDAMutationMock).toHaveBeenCalled(); - }); - - it('pda update status', async () => { - const { changePDAStatusMock } = PDAMockService(pda); - - const { changePDAStatus } = await pda.changePDAStatus({ - id: pdaStub().id, - status: PDAStatus.Suspended, - }); - - expect(changePDAStatus.status).toEqual(PDAStatus.Suspended); - expect(changePDAStatusMock).toHaveBeenCalled(); - }); - - it('pda update status to throw error', async () => { - const { changePDAStatusMock } = PDAMockService(pda); - - expect( - async () => - await pda.changePDAStatus({ - id: pdaStub({ id: 'f17ac10b-58cc-4372-a567' }).id, - status: PDAStatus.Suspended, - }), - ).rejects.toThrow(''); - - expect(changePDAStatusMock).toHaveBeenCalled(); - }); - - it('get pda', async () => { - const { getPDAMock } = PDAMockService(pda); - - const { PDA } = await pda.getPDA(pdaStub().id); - - expect(PDA?.dataAsset?.title).toEqual(pdaStub().dataAsset?.title); - expect(getPDAMock).toHaveBeenCalled(); - }); - - it('get pda to throw error', async () => { - const { getPDAMock } = PDAMockService(pda); - - expect( - async () => await pda.getPDA(pdaStub({ id: '' }).id), - ).rejects.toThrow(''); - - expect(getPDAMock).toHaveBeenCalled(); - }); - - it('pda count', async () => { - const { pdaCountMock } = PDAMockService(pda); - - const count = await pda.getPDACount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(pdaCountMock).toHaveBeenCalled(); - }); - - it('pdas', async () => { - const { pdasMock } = PDAMockService(pda); - - const { PDAs } = await pda.getPDAs({ - filter: { dataModelIds: [pdaCreateStub().dataModelId] }, - skip: 0, - take: 10, - }); - - expect(PDAs.length).toBeGreaterThanOrEqual(0); - expect(pdasMock).toHaveBeenCalled(); - }); - - it('issued pdas count', async () => { - const { issuedCountPDAMock } = PDAMockService(pda); - - const count = await pda.getIssuedPDAsCount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(issuedCountPDAMock).toHaveBeenCalled(); - }); - - it('issued pdas', async () => { - const { issuedPDAMock } = PDAMockService(pda); - - const { issuedPDAs } = await pda.getIssuedPDAs(); - - expect(issuedPDAs.length).toBeGreaterThanOrEqual(0); - expect(issuedPDAMock).toHaveBeenCalled(); - }); - - it('update pda', async () => { - const { updatePDAMock } = PDAMockService(pda); - - const { updatePDA } = await pda.updatePDA({ - id: pdaStub().id, - title: pdaStub().dataAsset?.title, - }); - - expect(updatePDA.dataAsset?.title).toBe(pdaStub().dataAsset?.title); - expect(updatePDAMock).toHaveBeenCalled(); - }); - - it('update pda to throw error', async () => { - const { updatePDAMock } = PDAMockService(pda); - - expect( - async () => - await pda.updatePDA({ - id: pdaStub().id, - title: pdaCreateStub({ title: '' }).title, - }), - ).rejects.toThrow(''); - - expect(updatePDAMock).toHaveBeenCalled(); - }); -}); diff --git a/test/proof.test.ts b/test/proof.test.ts deleted file mode 100644 index d62d481..0000000 --- a/test/proof.test.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { Proof } from '../src/proof/proof'; -import { getSdk } from '../gatewaySdk'; -import { - proofStub, - createProofMessage, - createProofStub, - requestId, -} from './stubs/proof.stub'; -import { ProofMockService } from '../__mocks__/proof.mock'; -import { pdaStub } from './stubs/pda.stub'; -import { GraphQLClient } from 'graphql-request'; - -let proof: Proof; - -beforeAll(() => { - proof = new Proof(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('PROOF SERVICE TESTING', () => { - it('proof create', async () => { - const { createProofMock } = ProofMockService(proof); - - const { createProof } = await proof.createProof(createProofStub()); - - expect(createProof.id).toBe(proofStub().id); - expect(createProofMock).toHaveBeenCalled(); - }); - - it('proof create -> throw error', async () => { - const { createProofMock } = ProofMockService(proof); - - expect( - async () => - await proof.createProof(createProofStub({ requestId: '324324' })), - ).rejects.toThrow('324324 is not valid'); - expect(createProofMock).toHaveBeenCalled(); - }); - - it('get proof', async () => { - const { getProofMock } = ProofMockService(proof); - const { proof: resultProof } = await proof.getProof(proofStub().id); - expect(resultProof.id).toBe(proofStub().id); - expect(getProofMock).toHaveBeenCalled(); - }); - - it('get proof -> throw error', async () => { - const { getProofMock } = ProofMockService(proof); - expect(async () => await proof.getProof('324324324')).rejects.toThrow( - '324324324 is not valid', - ); - expect(getProofMock).toHaveBeenCalled(); - }); - - it('get proofs', async () => { - const { getProofsMock } = ProofMockService(proof); - const { proofs: resultProofs } = await proof.getProofs(); - expect(resultProofs?.length).toBeGreaterThan(0); - expect(getProofsMock).toHaveBeenCalled(); - }); - - it('create proof message', async () => { - const { createProofMessageMock } = ProofMockService(proof); - const { createProofMessage: resultMessage } = - await proof.createProofMessage(requestId); - expect(resultMessage).toEqual(createProofMessage); - expect(createProofMessageMock).toHaveBeenCalled(); - }); - - it('create proof message -> throw message', async () => { - const { createProofMessageMock } = ProofMockService(proof); - - expect( - async () => await proof.createProofMessage('1432424'), - ).rejects.toThrow('1432424 is not valid'); - expect(createProofMessageMock).toHaveBeenCalled(); - }); - - it('get proofs by pda ids', async () => { - const { getProofsByPDAIdsMock } = ProofMockService(proof); - const { proofsByPDAIds } = await proof.getProofsByPDAIds({ - pdaIds: [pdaStub().id], - }); - - expect(proofsByPDAIds.length).toBeGreaterThan(0); - expect(getProofsByPDAIdsMock).toHaveBeenCalled(); - }); - - it('get proofs by pda ids -> single id', async () => { - const { getProofsByPDAIdsMock } = ProofMockService(proof); - const { proofsByPDAIds } = await proof.getProofsByPDAIds({ - pdaIds: pdaStub().id, - }); - - expect(proofsByPDAIds.length).toBeGreaterThan(0); - expect(getProofsByPDAIdsMock).toHaveBeenCalled(); - }); - - it('get proofs by pda ids -> throw error message', async () => { - const { getProofsByPDAIdsMock } = ProofMockService(proof); - - expect( - async () => - await proof.getProofsByPDAIds({ - pdaIds: 'pdaStub().id,', - }), - ).rejects.toThrow(''); - - expect(getProofsByPDAIdsMock).toHaveBeenCalled(); - }); - - it('get received proofs', async () => { - const { getReceivedProofsMock } = ProofMockService(proof); - const { receivedProofs } = await proof.getReceivedProofs(); - - expect(receivedProofs.length).toBeGreaterThan(0); - expect(getReceivedProofsMock).toHaveBeenCalled(); - }); - - it('get received proofs -> single id', async () => { - const { getReceivedProofsMock } = ProofMockService(proof); - const { receivedProofs } = await proof.getReceivedProofs({ - organizationId: pdaStub().id, - }); - - expect(receivedProofs.length).toBeGreaterThan(0); - expect(getReceivedProofsMock).toHaveBeenCalled(); - }); - - it('get received proofs -> throw single error message', async () => { - const { getReceivedProofsMock } = ProofMockService(proof); - expect( - async () => - await proof.getReceivedProofs({ - organizationId: 'pdaStub().id', - }), - ).rejects.toThrow(''); - - expect(getReceivedProofsMock).toHaveBeenCalled(); - }); - - it('get received proofs count', async () => { - const { getReceivedProofsCountMock } = ProofMockService(proof); - const { receivedProofsCount } = await proof.getReceivedProofsCount(); - expect(receivedProofsCount).toBeGreaterThanOrEqual(0); - - expect(getReceivedProofsCountMock).toHaveBeenCalled(); - }); - - it('get received proofs count --> single id', async () => { - const { getReceivedProofsCountMock } = ProofMockService(proof); - const { receivedProofsCount } = await proof.getReceivedProofsCount( - pdaStub().id, - ); - expect(receivedProofsCount).toBeGreaterThanOrEqual(0); - - expect(getReceivedProofsCountMock).toHaveBeenCalled(); - }); - - it('get received proofs count --> throw error single id', async () => { - const { getReceivedProofsCountMock } = ProofMockService(proof); - expect( - async () => await proof.getReceivedProofsCount('pdaStub().id'), - ).rejects.toThrow(''); - - expect(getReceivedProofsCountMock).toHaveBeenCalled(); - }); - - it('get sent proofs', async () => { - const { getSentProofsMock } = ProofMockService(proof); - const { sentProofs } = await proof.getSentProofs(); - - expect(sentProofs.length).toBeGreaterThanOrEqual(0); - expect(getSentProofsMock).toHaveBeenCalled(); - }); - - it('get sent proofs count', async () => { - const { getSentProofsCountMock } = ProofMockService(proof); - const { sentProofsCount } = await proof.getSentProofsCount(); - expect(sentProofsCount).toBeGreaterThanOrEqual(0); - expect(getSentProofsCountMock).toHaveBeenCalled(); - }); -}); diff --git a/test/request.test.ts b/test/request.test.ts deleted file mode 100644 index 862e4ec..0000000 --- a/test/request.test.ts +++ /dev/null @@ -1,130 +0,0 @@ -import { Request } from '../src/request/request'; -import { getSdk } from '../gatewaySdk'; -import { RequestMockService } from '../__mocks__/request.mock'; -import { requestStub } from './stubs/request.stub'; -import { GraphQLClient } from 'graphql-request'; - -let request: Request; - -beforeAll(() => { - request = new Request(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('REQUEST SERVICE TESTING', () => { - it('data request create', async () => { - const { createDataRequestMock } = RequestMockService(request); - const { dataUse, owner, dataRequestTemplate } = requestStub(); - const { createDataRequest } = await request.createDataRequest({ - dataUse, - owner: { - type: 'GATEWAY_ID', - value: 'Ticketmaster', - }, - dataRequestTemplateId: dataRequestTemplate.id, - }); - - expect(createDataRequest.id).toBe(requestStub().id); - expect(createDataRequestMock).toHaveBeenCalled(); - }); - - it('data request create -> throw error', async () => { - const { createDataRequestMock } = RequestMockService(request); - const { dataUse, owner, dataRequestTemplate } = requestStub(); - expect( - async () => - await request.createDataRequest({ - dataUse, - owner: { - type: 'GATEWAY_ID', - value: 'Ticketmaster', - }, - dataRequestTemplateId: 'wrong', - }), - ).rejects.toThrow(' is not valid'); - expect(createDataRequestMock).toHaveBeenCalled(); - }); - - it('get data request', async () => { - const { getDataRequestMock } = RequestMockService(request); - const { dataRequest } = await request.getDataRequest(requestStub().id); - - expect(dataRequest.id).toBe(requestStub().id); - expect(getDataRequestMock).toHaveBeenCalled(); - }); - - it('get data request -> throw error', async () => { - const { getDataRequestMock } = RequestMockService(request); - - expect(async () => await request.getDataRequest('wrong')).rejects.toThrow( - 'wrong is not valid', - ); - expect(getDataRequestMock).toHaveBeenCalled(); - }); - - it('get data request count', async () => { - const { getDataRequestCountMock } = RequestMockService(request); - const { dataRequestCount } = await request.getDataRequestCount(); - - expect(dataRequestCount).toBeGreaterThanOrEqual(0); - expect(getDataRequestCountMock).toHaveBeenCalled(); - }); - - it('get data request status', async () => { - const { getDataRequestStatusMock } = RequestMockService(request); - const { dataRequestStatus } = await request.getDataRequestStatus( - requestStub().id, - ); - expect(dataRequestStatus).toEqual(requestStub().status); - expect(getDataRequestStatusMock).toHaveBeenCalled(); - }); - - it('get data request status -> throww message', async () => { - const { getDataRequestStatusMock } = RequestMockService(request); - - expect( - async () => await request.getDataRequestStatus('wrong'), - ).rejects.toThrow('wrong is not valid'); - expect(getDataRequestStatusMock).toHaveBeenCalled(); - }); - - it('get data requests', async () => { - const { getDataRequestMock } = RequestMockService(request); - const { dataRequests } = await request.getDataRequests(); - expect(dataRequests.length).toBeGreaterThanOrEqual(0); - expect(getDataRequestMock).toHaveBeenCalled(); - }); - - it('get requests received', async () => { - const { getRequestsReceivedMock } = RequestMockService(request); - const { requestsReceived } = await request.getRequestsReceived(); - - expect(requestsReceived.length).toBeGreaterThanOrEqual(0); - expect(getRequestsReceivedMock).toHaveBeenCalled(); - }); - - it('get requests recieved count', async () => { - const { getRequestReceivedCountMock } = RequestMockService(request); - const { requestsReceivedCount } = await request.getRequestsReceivedCount(); - expect(requestsReceivedCount).toBeGreaterThanOrEqual(0); - expect(getRequestReceivedCountMock).toHaveBeenCalled(); - }); - - it('get requests sent', async () => { - const { getRequestsSentMock } = RequestMockService(request); - const { requestsSent } = await request.getRequestsSent(); - - expect(requestsSent.length).toBeGreaterThanOrEqual(0); - expect(getRequestsSentMock).toHaveBeenCalled(); - }); - - it('get requests sent count', async () => { - const { getDataRequestCountMock } = RequestMockService(request); - const { requestsSentCount } = await request.getRequestsSentCount(); - expect(requestsSentCount).toBeGreaterThanOrEqual(0); - expect(getDataRequestCountMock).toHaveBeenCalled(); - }); -}); diff --git a/test/stubs/auth.stub.ts b/test/stubs/auth.stub.ts deleted file mode 100644 index 4a3aaba..0000000 --- a/test/stubs/auth.stub.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Auth } from '../../gatewaySdk'; -import { Chain } from '../../src/types'; - -export const authStub = (overrideAuth?: any) => ({ - email: 'testuser01@mygateway.xyz', - username: 'testuser01', - id: 'f17ac10b-58cc-4372-a567-0e02b2c3d479', - issuanceDate: new Date('2021-01-01T12:00:00Z'), - lastUpdated: new Date('2021-01-01T12:00:00Z'), - code: 111111, - expirationDate: new Date('2021-01-01T12:00:00Z'), - wallet: '0x8887d10B02C9b785Ca54A2e60c3Ce68DC6dDcdb1', - chain: Chain.EVM, - existingRefreshToken: - 'a86d21a712aebd1e6d5a4cb02a6a4a30f41e319a670b401c0bf0fc04c617e0f1', - signature: '65f18a8b37cbf73d8b201345ed1ccf983e0a571b69b2eef17465a26e3b187700', - message: 'message is valid', - token: 'a86d21a712aebd1e6d5a4cb02a6a4a30f41e319a670b401c0bf0fc04c617e0f1', - ...overrideAuth, -}); diff --git a/test/stubs/common.stub.ts b/test/stubs/common.stub.ts new file mode 100644 index 0000000..48b8244 --- /dev/null +++ b/test/stubs/common.stub.ts @@ -0,0 +1,78 @@ +import { MediaType } from 'openapi-typescript-helpers'; +import { paths } from '../../src/api'; +import { HelperLinks, HelperMeta, OpenAPIClient } from '../../src/common/types'; + +export const successMessage = (overrideMessage?: any) => ({ + data: { message: 'Test message' }, + error: null, + response: {}, + ...overrideMessage, +}); + +export const errorMessage = (overrideError?: any) => ({ + data: null, + error: { error: { message: 'Request failed' } }, + response: { status: 500 }, + ...overrideError, +}); + +export const ID = 1; + +export const authDetails = (overrideAuth?: any) => ({ + message: 'test', + signature: + '0xce4cde85910fb1d667b19f154907160b4b5a03c3e5ad17f338715737283f41a73bb91991900d3f0d98c23f1ce3cbf70071024e8f473599bc7938bd9311744dab1c', + wallet_address: '0x22e19B1aB46B484d56FbAF069f1bD74477A5cDDC', + ...overrideAuth, +}); + +export const authSolanaDetails = (overrideAuth?: any) => ({ + message: 'test', + signature: + '2UVETkfpJd5jB6f6rEMUWchMTxamfAS2ufQfZSkkPnQ2zdDXcmsiaHvW7fwauLKXzXKW3bjbh8rboLaHLDz8Ajvb', + wallet_address: 'GX8ANrJUkaxjHduzz3UStVLxLZBL8RdYR3V6978aRoHT', + ...overrideAuth, +}); + +export const paramsStub = (overrideParams?: any) => ({ + params: { query: { page: 1, page_size: 10 } }, + ...overrideParams, +}); + +export const bodyStub = (overrideBody?: any) => ({ + body: { data: '' }, + ...overrideBody, +}); + +export const metaStub = (overrideMetaStub?: HelperMeta) => ({ + current_page: 1, + items_per_page: 10, + total_items: 2, + total_pages: 1, + ...overrideMetaStub, +}); + +export const linksStub = (overrideLinkStub?: HelperLinks) => ({ + first: '/data-assets/me?page=1&page_size=10', + last: '/data-assets/me?page=1&page_size=10', + previous: '', + next: '', + ...overrideLinkStub, +}); + +export let mockGet: jest.Mock; +export let mockPost: jest.Mock; +export let mockPut: jest.Mock; +export let mockDelete: jest.Mock; + +mockGet = jest.fn(); +mockPost = jest.fn(); +mockPut = jest.fn(); +mockDelete = jest.fn(); + +export let mockClient: OpenAPIClient = { + GET: mockGet, + POST: mockPost, + PUT: mockPut, + DELETE: mockDelete, +} as any as OpenAPIClient; diff --git a/test/stubs/data-asset.stub.ts b/test/stubs/data-asset.stub.ts new file mode 100644 index 0000000..b77672c --- /dev/null +++ b/test/stubs/data-asset.stub.ts @@ -0,0 +1,49 @@ +import { + AccessLevel, + ACLRequest, + PublicACL, + PublicDataAsset, +} from '../../src/common/types'; +import { ID } from './common.stub'; + +export const dataAssetStub = (overrideDataAsset?: any): PublicDataAsset => ({ + id: 8708405493497959, + created_at: '2024-09-11T07:36:36.244479Z', + updated_at: '2024-09-11T07:36:36.244479Z', + expiration_date: '2025-09-11T07:36:35.788241Z', + created_by: '', + name: 'test.txt', + size: 183, + fid: '104,04ab3f808d2e8d', + transaction_id: + '2evNA2dzA4tHE8YsZ8z7FWPnQ3UjzUAnSLYDfg8F8eaxxBzMBB9gjtC4WvywayxXmMXthjAcpnZANgSct2B2bAiT', + tags: null, + type: 'text/plain', + acl: [ + { + solana_address: 'HJrZyDu9nzqrLDprvcp9boRT38zvFnTRN1D5THnAoiD1', + address: + 'did:gatewayid:gateway:2bc9fa1a1c61102c0601ff7be94d8f8b6ab8f8091a138ee60022b85fzaffce1a', + roles: ['view', 'update', 'delete'], + }, + ], + ...overrideDataAsset, +}); + +export const aclStub = (): PublicACL => ({ + address: + 'did:gatewayid:gateway:2bc9fa1a1c61102c0601ff7be94d8f8b6ab8f8091a138ee60022b85fzaffce1a', + created_at: '2025-09-11T07:36:35.788241Z', + data_asset_id: ID, + roles: ['view'], + solana_address: 'HJrZyDu9n1qrLDprvcp9boRT38zvFnTRN1D5THnAoiDR', + updated_at: '2025-09-11T07:36:35.788241Z', +}); + +export const aclListStub = (): ACLRequest => ({ + address: + 'did:gatewayid:gateway:2bc9fa1a1c61102c0601ff7be94d8f8b6ab8f8091a138ee60022b85fzaffce1a', + roles: [AccessLevel.VIEW], +}); + +export const blobStub = new Blob(['Hello, world!'], { type: 'text/plain' }); diff --git a/test/stubs/dataModel.stub.ts b/test/stubs/dataModel.stub.ts deleted file mode 100644 index bbc8237..0000000 --- a/test/stubs/dataModel.stub.ts +++ /dev/null @@ -1,151 +0,0 @@ -import { - DataModel, - CreateDataModelInput, - DataModelsMetadata, -} from '../../gatewaySdk'; - -export const dataModelStub = ( - overrideDataModel?: Partial, -): DataModel => ({ - PDAs: [], - allowedOrganizations: [], - allowedUsers: [], - arweaveUrl: 'https://arweave.net/BKwtY0kAZGjhw2P2KZk2XOmFBYf3fHRnTUkQ0Q9AA3Q', - consumptionPrice: 0.5, - createdAt: '2023-11-29T18:00:55.650Z', - description: - 'Net promoter score (NPS) is a market research metric that is based on a single survey question asking respondents to rate the likelihood that they would recommend a company, product, or a service to a friend or colleague. The NPS is a proprietary instrument developed by Fred Reichheld, who owns the registered NPS trademark in conjunction with Bain & Company and Satmetrix. Its popularity and broad use have been attributed to its simplicity and transparent methodology.', - featured: false, - group: { - id: 'd4339c71-f414-4dfd-9213-003317e06862', - createdAt: '2023-11-29T18:00:55.650Z', - dataModels: [], - official: false, - }, - verified: false, - uniqueIssuersCount: 1, - title: 'Net promoter score ', - tags: ['Research', 'Testing'], - schema: { - type: 'object', - default: {}, - title: 'Root Schema', - required: ['score'], - properties: { - score: { - type: 'integer', - default: 10, - title: 'Score', - examples: ['Fill from 0 up to 10'], - }, - testimony: { - type: 'string', - title: 'Testimony', - examples: ['Tell us what your experience was like'], - }, - recommendation: { - type: 'boolean', - title: 'Would you recommend this?', - }, - keywords: { - type: 'array', - title: 'Keywords about your experience', - }, - }, - }, - revenueGenerated: 0, - id: 'c22d65f0-b7b1-48a9-8c13-a01e32df1f1f', - organization: null, - pdas: [], - pdasIssuedCount: 2, - ...overrideDataModel, -}); - -export const dataModelCreateStub = ( - overrideDataModelCreateStub?: any, -): CreateDataModelInput => ({ - PDAs: [], - allowedOrganizations: [], - allowedUsers: [], - arweaveUrl: 'https://arweave.net/BKwtY0kAZGjhw2P2KZk2XOmFBYf3fHRnTUkQ0Q9AA3Q', - consumptionPrice: 0.5, - createdAt: '2023-11-29T18:00:55.650Z', - description: - 'Net promoter score (NPS) is a market research metric that is based on a single survey question asking respondents to rate the likelihood that they would recommend a company, product, or a service to a friend or colleague. The NPS is a proprietary instrument developed by Fred Reichheld, who owns the registered NPS trademark in conjunction with Bain & Company and Satmetrix. Its popularity and broad use have been attributed to its simplicity and transparent methodology.', - featured: false, - group: { - id: 'd4339c71-f414-4dfd-9213-003317e06862', - createdAt: '2023-11-29T18:00:55.650Z', - dataModels: [], - official: false, - }, - verified: false, - uniqueIssuersCount: 1, - title: 'Net promoter score ', - tags: ['Research', 'Testing'], - schema: { - type: 'object', - default: {}, - title: 'Root Schema', - required: ['score'], - properties: { - score: { - type: 'integer', - default: 10, - title: 'Score', - examples: ['Fill from 0 up to 10'], - }, - testimony: { - type: 'string', - title: 'Testimony', - examples: ['Tell us what your experience was like'], - }, - recommendation: { - type: 'boolean', - title: 'Would you recommend this?', - }, - keywords: { - type: 'array', - title: 'Keywords about your experience', - }, - }, - }, - revenueGenerated: 0, - id: 'c22d65f0-b7b1-48a9-8c13-a01e32df1f1f', - organization: null, - pdas: [], - pdasIssuedCount: 2, - ...overrideDataModelCreateStub, -}); - -export const dataModelMetaDataStub = ( - overideDataModelMetaData?: DataModelsMetadata, -): DataModelsMetadata => ({ - consumptionPrice: { - min: 0, - max: 3, - }, - tags: [ - 'Research', - 'Testing', - 'Developers', - 'Education', - 'Music', - 'Listening', - 'Consumer', - 'Finance', - 'Banking', - 'Credit Card', - 'Social', - 'Score', - 'Earn', - 'Marketing', - 'Infrastructure', - 'Tests', - ], - issuedCount: { - min: 0, - max: 14, - }, - ...overideDataModelMetaData, -}); diff --git a/test/stubs/dataRequestTemplate.stub.ts b/test/stubs/dataRequestTemplate.stub.ts deleted file mode 100644 index 701de18..0000000 --- a/test/stubs/dataRequestTemplate.stub.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { DataRequestTemplate, TemplateSchemaInput } from '../../gatewaySdk'; - -export const dataRequestTemplateStub = ( - overrideDataRequestTemplate?: any, -): DataRequestTemplate => ({ - arweaveUrl: 'https://arweave.net/test', - createdAt: new Date('2021-01-01T12:00:00Z'), - dataModels: [ - { - id: 'f47ac20b-58cc-4372-a567-0e02b2c3d479', - required: true, - claimValidations: { - type: 'object', - properties: { - gatewayUse: { - type: 'string', - }, - }, - required: ['gatewayUse'], - }, - }, - ], - dataRequestsCount: 10, - description: 'test', - name: 'test', - revenueGenerated: 10, - uniqueVerifiersCount: 10, - schema: {}, - dataRequests: [], - id: 'f47ac20b-58cc-4372-a567-0e02b2c3d478', - tags: ['test'], - user: {}, - ...overrideDataRequestTemplate, -}); - -export const dataRequestTemplateCreateStub = ( - overrideDataRequestTemplate?: any, -): TemplateSchemaInput => ({ - title: 'test', - description: 'test', - dataModels: [ - { - id: 'f47ac20b-58cc-4372-a567-0e02b2c3d479', - required: true, - claimValidations: { - type: 'object', - properties: { - gatewayUse: { - type: 'string', - }, - }, - required: ['gatewayUse'], - }, - }, - ], - ...overrideDataRequestTemplate, -}); diff --git a/test/stubs/organization.stub.ts b/test/stubs/organization.stub.ts deleted file mode 100644 index 047b3f2..0000000 --- a/test/stubs/organization.stub.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { - CreateOrganizationInput, - MemberInput, - Organization, -} from '../../gatewaySdk'; -import { OrganizationRole } from '../../src/types'; -import { userStub } from './user.stub'; - -export const organizationStub = ( - overrideOrganization?: Partial, -): Organization => ({ - id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', - createdAt: new Date('2021-01-01T12:00:00Z'), - updatedAt: new Date('2021-01-01T12:00:00Z'), - description: 'test', - name: 'test', - dataRequestTemplates: [], - usernameUpdatedAt: new Date('2021-01-01T12:00:00Z'), - verified: true, - verifierDataRequests: [], - ...overrideOrganization, -}); - -export const organizationCreateStub = ( - overrideOrganization?: any, -): CreateOrganizationInput => ({ - username: 'test_for_sdk_2', - name: 'test org sdk 2', - description: 'test organization', - ...overrideOrganization, -}); - -export const memberOrganizationStub = (overrideMember?: any) => ({ - user: userStub(), - role: OrganizationRole.Member, - id: organizationStub().id, - organization: organizationStub(), - ...overrideMember, -}); diff --git a/test/stubs/pda.stub.ts b/test/stubs/pda.stub.ts deleted file mode 100644 index 882e90a..0000000 --- a/test/stubs/pda.stub.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { CreatePDAInput, PrivateDataAsset } from '../../gatewaySdk'; -import { UserIdentifierType } from '../../src/types'; - -export const pdaStub = (overridePDA?: any): PrivateDataAsset => ({ - arweaveUrl: 'https://arweave.net/test', - claimHash: '3e0e527bfcdf531ac7e7333f57f9b8eb7a7cf7388c92920b35c778df1f98673b', - id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', - issuanceDate: new Date('2021-01-01T12:00:00Z'), - lastUpdated: new Date('2021-01-01T12:00:00Z'), - status: 'Valid', - dataAsset: { - description: 'test', - title: 'test', - claim: { gatewayUse: 'test' }, - expirationDate: new Date('2021-01-01T12:00:00Z'), - claimArray: [], - dataModel: {}, - issuer: {}, - owner: {}, - }, - expirationDate: new Date('2021-01-01T12:00:00Z'), - hash: '9c10c15ea609ca3598a35b551e2ebe4827e8fb99b5da8443c0cf84ff20872a1b', - issuerHash: - 'a86d21a712aebd1e6d5a4cb02a6a4a30f41e319a670b401c0bf0fc04c617e0f1', - ownerHash: '65f18a8b37cbf73d8b201345ed1ccf983e0a571b69b2eef17465a26e3b187700', - ...overridePDA, -}); - -export const pdaCreateStub = (overridePDA?: any): CreatePDAInput => ({ - dataModelId: 'f47ac10b-58cc-4372-a567-0e02b2c3d471', - description: 'test', - title: 'test', - claim: { - gatewayUse: 'test', - }, - owner: { - type: UserIdentifierType.GATEWAY_ID, - value: 'sid', - }, - expirationDate: new Date('2021-01-01T12:00:0'), - ...overridePDA, -}); diff --git a/test/stubs/proof.stub.ts b/test/stubs/proof.stub.ts deleted file mode 100644 index c8774fe..0000000 --- a/test/stubs/proof.stub.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { Proof, createProof_mutationMutationVariables } from '../../gatewaySdk'; - -export const proofStub = (overrideProof?: any): Proof => ({ - id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', - createdAt: new Date('2021-01-01T12:00:00Z'), - updatedAt: new Date('2021-01-01T12:00:00Z'), - arweaveUrl: 'https://arweave.net/test', - facilitationFee: 5, - status: 'ACTIVE', - hash: '9c10c15ea609ca3598a35b551e2ebe4827e8fb99b5da8443c0cf84ff20872a1b', - owner: {}, - proofHash: 'sa', - totalCost: 60.0, - data: {}, - dataRequest: {}, - verifier: {}, - verifierOrganization: {}, - ...overrideProof, -}); - -export const createProofStub = ( - overrideProof?: any, -): createProof_mutationMutationVariables => ({ - wallet: '0x8887d10B02C9b785Ca54A2e60c3Ce68DC6dDcdb1', - signature: '65f18a8b37cbf73d8b201345ed1ccf983e0a571b69b2eef17465a26e3b187700', - claims: { - numberTransactions: 12345, - artists: [' Drake', ' Taylor Swift'], - planValue: '$ 14.99', - }, - ...overrideProof, -}); - -export const createProofMessage = 'PROOF MESSAGE'; - -export const requestId = 'f47ac10b-58cc-4372-a567-0e02b2c3d479'; diff --git a/test/stubs/request.stub.ts b/test/stubs/request.stub.ts deleted file mode 100644 index 6099106..0000000 --- a/test/stubs/request.stub.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { DataRequest } from '../../gatewaySdk'; - -export const requestStub = (overrideDataRequest?: any): DataRequest => ({ - arweaveUrl: 'https://arweave.net/Mrs7eYW4366sIOM4nZ9mKHU-XnftQ_RbfDS1Hx1EQWM', - createdAt: '2023-12-12T18:46:12.932Z', - dataRequestTemplate: { - id: 'd1fb5d09-7302-46ee-a871-9f15ac0cb4e8', - }, - dataUse: - 'Give you a discount for the next "Taylor Swift - The Eras Tour" concert!', - id: '6188e5e1-dc9e-4b4a-837a-63e18c5f1ae5', - owner: { - walletId: '6579ade711ccc692dcabf67e', - }, - proof: null, - status: 'PENDING', - verifier: { - walletId: '65789be8c8c57f261d6f0921', - }, - verifierOrganization: { - gatewayId: 'Ticketmaster', - }, - ...overrideDataRequest, -}); diff --git a/test/stubs/transaction.stub.ts b/test/stubs/transaction.stub.ts deleted file mode 100644 index 84c1880..0000000 --- a/test/stubs/transaction.stub.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Transaction } from '../../gatewaySdk'; - -export const transactionStub = (overirdeTransaction?: any): Transaction => ({ - action: 'PDA_ISSUANCE', - arweaveUrl: 'https://arweave.net/UteWnSizZvTxzczXQfjbUF3IhCrCVJwggpCOQK_LeXA', - cost: -0.01, - createdAt: '2024-01-23T20:47:09.259Z', - financialTransactions: [ - { - action: 'PDA_ISSUANCE', - createdAt: '2024-01-23T20:47:09.298Z', - fee: -0.01, - id: '65b025cd7b20022a8d08844b', - memo: null, - total: -0.01, - transactionId: '65ba321f3d17fd2bd6d9f49d', - type: 'EXPENSE', - updatedAt: '2024-01-23T20:47:09.298Z', - value: 0, - }, - ], - from: { - arweaveUrl: - 'https://arweave.net/ddNNm1wT8Y0A-P8lpGJw94-CFeOWlo2Ydx3RYFVUFY8', - createdAt: '2023-11-29T19:11:19.506Z', - description: - 'Aqui é Body Builder Ipsum PORRA! AHHHHHHHHHHHHHHHHHHHHHH..., porra! É 13 porra! Eu quero esse 13 daqui a pouquinho aí.\n\n Vamo monstro! Vo derrubar tudo essas árvore do parque ibirapuera. Aqui é Body Builder Ipsum PORRA!\n\n Sai de casa comi pra caralho porra. Vamo monstro! Birl! Sai filho da puta!\n\n Vo derrubar tudo essas árvore do parque ibirapuera. Ele tá olhando pra gente.', - gatewayId: 'gateway', - id: '8f5be391-d9a9-4560-950c-3afa13628a66', - image: null, - name: 'Gateway', - updatedAt: '2024-01-23T18:03:00.598Z', - usernameUpdatedAt: '2023-11-29T19:11:19.506Z', - verified: false, - walletId: '657afe924edc79257aba7aed', - website: 'http://mygateway.xyz', - }, - id: '65ba321f3d17fd2bd6d9f49d', - metadata: { - dataModel: '75928d4b-e3de-4952-80ac-f8723dffac1e', - expirationDate: null, - issuer: - 'b266afd285d6c64b918ea805d82918c58ff4b76f46827c43b8584f73ff440ce0eb2515143579801f277203b33f4eb69b', - pda: '353bb28128e51d8decb4552412d099150ae02b32aa260b9731a1c760e73bf5263c638668fa153d7c019a76611e9feef2', - signedBy: - '860a31d220e1343b46c4efae14f4c7db375daba8c8259ae8620928f31b150ca26c7b5c355fbfba3a408536fd1a4027c8', - owner: 'fdsfdsa', - requestTemplate: 'dsfdsffdsf', - status: 'dsfdsffdsf', - verifier: 'dsfdsffdsf', - request: 'Dsfdsfdsfd', - }, - - to: { - arweaveUrl: - 'https://arweave.net/zPS28G4hM6_21Ud9qMllk44v93h0XRrPZff5JvxiCFk', - createdAt: '2023-11-29T19:21:15.743Z', - credentialsExtraCredits: 0, - dataModelsExtraCredits: 0, - deletedAt: null, - displayName: 'James Rodriguez', - email: 'joao+james@mygateway.xyz', - gatewayId: 'jamesrodriguez', - gatewayIdLastupdate: '2024-01-10T21:27:32.484Z', - gatewayIdUpdatedAt: null, - hash: '7a132db844c68f4cd2873578f9a37398f508fe21c5a73d87ffc070c992926287feedb13e348e9f492370387987f61e32', - id: 'a1030d23-c237-4047-8090-89ba1aac16cf', - isCompleted: true, - profilePicture: - 'https://arweave.net/A4xjcnKZ61mB9N3iDJ-UJHdrYUKLdSTJLWaZDYHelfA', - roles: ['User'], - status: null, - updatedAt: '2024-01-23T21:44:34.375Z', - walletId: '65678f2dcc94cfb73e364eb3', - }, - updatedAt: '2024-01-23T20:47:09.259Z', - ...overirdeTransaction, -}); diff --git a/test/stubs/user.stub.ts b/test/stubs/user.stub.ts deleted file mode 100644 index ece99ff..0000000 --- a/test/stubs/user.stub.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { FinancialTransaction, User, Wallet } from '../../gatewaySdk'; - -export const userStub = (overrideUser?: Partial): User => ({ - id: 'f47ac10b-58cc-4372-a567-0e02b2c3d479', - createdAt: new Date('2021-01-01T12:00:00Z'), - updatedAt: new Date('2021-01-01T12:00:00Z'), - status: 'Valid', - credentialsExtraCredits: 10, - dataModelsExtraCredits: 10, - dataRequestTemplates: [], - gatewayIdLastupdate: new Date('2021-01-01T12:00:00Z'), - isCompleted: true, - issuedPDAs: [], - receivedPDAs: [], - receivedProofs: [], - recipientDataRequests: [], - verifierDataRequests: [], - roles: [], - gatewayId: 'testuser01', - email: 'testuser01@mygateway.xyz', - displayName: 'testuser02', - profilePicture: 'https://fake-url.com', - ...overrideUser, -}); - -export const walletStub = (): Wallet => ({ - balance: 3.175, - moneyIn: 5, - moneyInSummary: [ - { - action: 'MONEY_DEPOSIT', - amount: 5, - }, - ], - moneyOut: -1.825, - moneyOutSummary: [ - { - action: 'PDA_ISSUANCE', - amount: -0.39, - }, - { - action: 'PDA_STATUS_CHANGE', - amount: -0.085, - }, - { - action: 'REQUEST_TEMPLATE_CREATE', - amount: -0.7000000000000001, - }, - { - action: 'DATAMODEL_CREATE', - amount: -0.65, - }, - ], -}); - -export const financialTransactionsStub = (): FinancialTransaction[] => { - return [ - { - action: 'PDA_ISSUANCE', - createdAt: '2024-01-09T13:09:29.020Z', - fee: -0.01, - from: { - arweaveUrl: - 'https://arweave.net/SJCWg98WEEjMLJrukrgAdtMe0yu5ZIzT3bxGJZPuq-o', - createdAt: '2023-11-30T09:43:11.314Z', - credentialsExtraCredits: 0, - dataModelsExtraCredits: 0, - deletedAt: null, - displayName: 'siddharth9890', - email: null, - gatewayId: 'sid', - gatewayIdLastupdate: '2023-11-30T09:43:31.787Z', - gatewayIdUpdatedAt: null, - hash: '2abd6aec32d0d99478ca367a82035dd65cfe8c8def639ae9e8fc0de0d0a6ed46fb90c7ca06e5f6c584d2784dfd6840b5', - id: '955afb97-0d0d-4117-b360-0b279dba6efa', - isCompleted: false, - profilePicture: - 'https://www.tryodyssey.xyz/images/campaigns/lifi/odyssey_lifi.png', - roles: ['User'], - status: null, - updatedAt: '2023-12-13T04:50:57.419Z', - walletId: '65685931a37f3085dc7c0fb8', - dataRequestTemplates: [], - description: '', - issuedPDAs: [], - name: '', - receivedPDAs: [], - recipientDataRequests: [], - usernameUpdatedAt: new Date(), - verified: true, - verifierDataRequests: [], - }, - id: '659d4589abb2c024ff2ef8e5', - memo: null, - to: { - arweaveUrl: - 'https://arweave.net/tc8GzNOsHU7c6dnPt483nSVB2NQ299pM-gbuCthpZQQ', - createdAt: '2023-11-29T19:11:19.506Z', - description: - 'Aqui é Body Builder Ipsum PORRA! AHHHHHHHHHHHHHHHHHHHHHH..., porra! É 13 porra! Eu quero esse 13 daqui a pouquinho aí.\n\n Vamo monstro! Vo derrubar tudo essas árvore do parque ibirapuera. Aqui é Body Builder Ipsum PORRA!\n\n Sai de casa comi pra caralho porra. Vamo monstro! Birl! Sai filho da puta!\n\n Vo derrubar tudo essas árvore do parque ibirapuera. Ele tá olhando pra gente.', - gatewayId: 'gateway', - id: '8f5be391-d9a9-4560-950c-3afa13628a66', - image: null, - name: 'Gateway', - updatedAt: '2023-12-14T13:09:39.260Z', - usernameUpdatedAt: '2023-11-29T19:11:19.506Z', - verified: false, - walletId: '657afe924edc79257aba7aed', - website: 'http://mygateway.xyz', - dataRequestTemplates: [], - credentialsExtraCredits: 1, - dataModelsExtraCredits: 1, - gatewayIdLastupdate: new Date(), - isCompleted: true, - issuedPDAs: [], - receivedPDAs: [], - recipientDataRequests: [], - roles: [], - verifierDataRequests: [], - }, - total: -0.01, - transaction: { - action: 'PDA_ISSUANCE', - arweaveUrl: - 'https://arweave.net/AFDNmOYuIoltp_w9-4lGvGFGYQ_6ka7_81lrjRpBxO8', - cost: -0.01, - createdAt: '2024-01-09T13:09:28.999Z', - id: '659d4588abb2c024ff2ef8e3', - updatedAt: '2024-01-09T13:09:28.999Z', - financialTransactions: [], - metadata: { - earnings: 1, - fees: 1, - owner: '', - verifier: '', - proof: '', - requestTemplate: '', - status: '', - }, - }, - transactionId: '659d4588abb2c024ff2ef8e3', - type: 'EXPENSE', - updatedAt: '2024-01-09T13:09:29.020Z', - value: 0, - wallet: { - moneyIn: 0, - moneyOut: 0, - balance: 10, - moneyInSummary: [], - moneyOutSummary: [], - }, - }, - ]; -}; diff --git a/test/transaction.test.ts b/test/transaction.test.ts deleted file mode 100644 index 29f5a8b..0000000 --- a/test/transaction.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Transaction } from '../src/transaction/transaction'; -import { getSdk } from '../gatewaySdk'; -import { TransactionMockService } from '../__mocks__/transaction.mock'; -import { transactionStub } from './stubs/transaction.stub'; -import { GraphQLClient } from 'graphql-request'; - -let transaction: Transaction; - -beforeAll(() => { - transaction = new Transaction(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.resetAllMocks(); -}); - -describe('TRANSACTION SERVICE TESTING', () => { - it('get transaction count', async () => { - const { getTransactionCountMock } = TransactionMockService(transaction); - const { transactionsCount } = await transaction.getTransactionCount(true); - - expect(transactionsCount).toBeGreaterThanOrEqual(10); - expect(getTransactionCountMock).toHaveBeenCalled(); - }); - - it('get transaction by id', async () => { - const { getTransactionMock } = TransactionMockService(transaction); - const { transaction: transactionResult } = await transaction.getTransaction( - transactionStub().id, - ); - expect(transactionResult.id).toEqual(transactionStub().id); - expect(getTransactionMock).toHaveBeenCalled(); - }); - - it('get transaction by id => throw error', async () => { - const { getTransactionMock } = TransactionMockService(transaction); - expect(async () => await transaction.getTransaction('34')).rejects.toThrow( - ' should be atleast 2 length', - ); - expect(getTransactionMock).toHaveBeenCalled(); - }); - - it('get transactions', async () => { - const { getTransactionsMock } = TransactionMockService(transaction); - const { transactions } = await transaction.getTransactions(); - expect(transactions.length).toBeGreaterThanOrEqual(0); - expect(getTransactionsMock).toHaveBeenCalled(); - }); -}); diff --git a/test/user.test.ts b/test/user.test.ts deleted file mode 100644 index 9a42a23..0000000 --- a/test/user.test.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { GraphQLClient } from 'graphql-request'; -import { getSdk } from '../gatewaySdk'; -import { UserMockService } from '../__mocks__/user.mock'; -import { UserIdentifierType } from '../src/types'; -import { User } from '../src/user/user'; -import { userStub, walletStub } from './stubs/user.stub'; - -let user: User; - -beforeAll(() => { - user = new User(getSdk(new GraphQLClient(''))); -}); - -afterAll(() => { - jest.clearAllMocks(); -}); - -describe('USER SERVICE TESTING', () => { - it('me', async () => { - const { meMock } = UserMockService(user); - - const { me } = await user.me(); - - expect(me.gatewayId).toEqual(userStub().gatewayId); - - expect(meMock).toHaveBeenCalled(); - }); - - it('single user', async () => { - const { getSingleUserMock } = UserMockService(user); - - const res = await user.getSingleUser({ - type: UserIdentifierType.GATEWAY_ID, - value: userStub().gatewayId!, - }); - - expect(res.user?.gatewayId).toEqual(userStub().gatewayId); - - expect(getSingleUserMock).toHaveBeenCalled(); - }); - - it('single user to throw error', async () => { - const { getSingleUserMock } = UserMockService(user); - - expect( - async () => - await user.getSingleUser({ - type: UserIdentifierType.GATEWAY_ID, - value: userStub({ gatewayId: '' }).gatewayId!, - }), - ).rejects.toThrow(''); - - expect(getSingleUserMock).toHaveBeenCalled(); - }); - - it('my pdas count', async () => { - const { myPDACountMock } = UserMockService(user); - - const count = await user.myPDACount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(myPDACountMock).toHaveBeenCalled(); - }); - - it('my pdas', async () => { - const { myPDAsMock } = UserMockService(user); - - const { myPDAs } = await user.myPDAs({ - skip: 0, - take: 10, - }); - - expect(myPDAs.length).toBeGreaterThanOrEqual(0); - expect(myPDAsMock).toHaveBeenCalled(); - }); - - it('my data models count', async () => { - const { myDataModelsCountMock } = UserMockService(user); - - const count = await user.myDataModelsCount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(myDataModelsCountMock).toHaveBeenCalled(); - }); - - it('my data requests template count', async () => { - const { myDataRequestTemplatesCountMock } = UserMockService(user); - - const count = await user.myDataRequestTemplatesCount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(myDataRequestTemplatesCountMock).toHaveBeenCalled(); - }); - - it('my financial transactions', async () => { - const { myFinancialTransactionsMock } = UserMockService(user); - - const { myFinancialTransactions } = await user.myFinancialTransactions(); - - expect(myFinancialTransactions.length).toBeGreaterThanOrEqual(0); - expect(myFinancialTransactionsMock).toHaveBeenCalled(); - }); - - it('my financial transactions -> throw error', async () => { - const { myFinancialTransactionsMock } = UserMockService(user); - - expect( - async () => - await user.myFinancialTransactions({ - organizationId: 'test', - }), - ).rejects.toThrow(''); - - expect(myFinancialTransactionsMock).toHaveBeenCalled(); - }); - - it('my financial transactions count', async () => { - const { myFinancialTransactionsCountMock } = UserMockService(user); - - const count = await user.myFinancialTransactionsCount(); - - expect(count).toBeGreaterThanOrEqual(0); - expect(myFinancialTransactionsCountMock).toHaveBeenCalled(); - }); - - it('my financial transactions count -> throw error', async () => { - const { myFinancialTransactionsCountMock } = UserMockService(user); - - expect( - async () => - await user.myFinancialTransactionsCount({ - organizationId: 'test', - }), - ).rejects.toThrow(''); - - expect(myFinancialTransactionsCountMock).toHaveBeenCalled(); - }); - - it('my transactions count -> throw error', async () => { - const { myTransactionsMock } = UserMockService(user); - - const { myTransactions } = await user.myTransactions(); - - expect(myTransactions.length).toBeGreaterThanOrEqual(0); - expect(myTransactionsMock).toHaveBeenCalled(); - }); - - it('my wallet', async () => { - const { mywalletMock } = UserMockService(user); - - const { myWallet } = await user.myWallet(); - - expect(myWallet.balance).toBe(walletStub().balance); - - expect(mywalletMock).toHaveBeenCalled(); - }); - - it('my wallet -> throw error', async () => { - const { mywalletMock } = UserMockService(user); - - expect(async () => await user.myWallet('test')).rejects.toThrow(''); - - expect(mywalletMock).toHaveBeenCalled(); - }); - - it('update user', async () => { - const { updateUserMock } = UserMockService(user); - - const { updateUser } = await user.updateUser({ - displayName: userStub().displayName!, - }); - - expect(updateUser.displayName!).toEqual(userStub().displayName!); - - expect(updateUserMock).toHaveBeenCalled(); - }); - - it('update user to throw error', async () => { - const { updateUserMock } = UserMockService(user); - - expect( - async () => - await user.updateUser({ - displayName: userStub({ displayName: '' }).displayName!, - }), - ).rejects.toThrow(''); - - expect(updateUserMock).toHaveBeenCalled(); - }); - - it('update user display name', async () => { - const { updateUserDisplayNameMock } = UserMockService(user); - - const { updateMyDisplayName } = await user.updateMyDisplayName( - userStub().displayName!, - ); - expect(updateMyDisplayName).toEqual(userStub().displayName!); - expect(updateUserDisplayNameMock).toHaveBeenCalled(); - }); - - it('update user display name to throw error', async () => { - const { updateUserDisplayNameMock } = UserMockService(user); - - expect( - async () => - await user.updateMyDisplayName( - userStub({ displayName: '' }).displayName!, - ), - ).rejects.toThrow(''); - - expect(updateUserDisplayNameMock).toHaveBeenCalled(); - }); - - it('update user gateway id', async () => { - const { updateUserGatewayIdMock } = UserMockService(user); - - const { updateMyGatewayId } = await user.updateMyGatewayId( - userStub().displayName!, - ); - expect(updateMyGatewayId.displayName).toEqual(userStub().displayName!); - expect(updateUserGatewayIdMock).toHaveBeenCalled(); - }); - - it('update user gateway id to throw error', async () => { - const { updateUserGatewayIdMock } = UserMockService(user); - - expect( - async () => - await user.updateMyGatewayId( - userStub({ displayName: '' }).displayName!, - ), - ).rejects.toThrow(''); - - expect(updateUserGatewayIdMock).toHaveBeenCalled(); - }); - - it('update user notification email', async () => { - const { updateUserNotificationEmaailMock } = UserMockService(user); - - const { user: updatedUser } = await user.updateNotificationEmail( - userStub().email!, - ); - expect(updatedUser.email).toEqual(userStub().email!); - expect(updateUserNotificationEmaailMock).toHaveBeenCalled(); - }); - - it('update user notification email to throw error', async () => { - const { updateUserNotificationEmaailMock } = UserMockService(user); - - expect( - async () => - await user.updateNotificationEmail( - userStub({ email: 'wrong-email.com' }).email!, - ), - ).rejects.toThrow('wrong-email.com is not valid'); - - expect(updateUserNotificationEmaailMock).toHaveBeenCalled(); - }); - - it('update profile picture', async () => { - const { updateMyProfilePictureMock } = UserMockService(user); - - const { updateMyProfilePicture } = await user.updateMyProfilePicture( - userStub().profilePicture!, - ); - - expect(updateMyProfilePicture).toEqual(userStub().profilePicture!); - - expect(updateMyProfilePictureMock).toHaveBeenCalled(); - }); - - it('update profile picture to throw error', async () => { - const { updateMyProfilePictureMock } = UserMockService(user); - - expect( - async () => - await user.updateMyProfilePicture( - userStub({ profilePicture: 'http://fake-url.com' }).profilePicture!, - ), - ).rejects.toThrow(''); - - expect(updateMyProfilePictureMock).toHaveBeenCalled(); - }); -}); diff --git a/test/utils.test.ts b/test/utils.test.ts index 4822d85..b1803e0 100644 --- a/test/utils.test.ts +++ b/test/utils.test.ts @@ -1,99 +1,82 @@ -import { Chain, UserIdentifierType } from '../src/types'; -import { errorHandler } from '../src/utils/errorHandler'; -import { - isDateValid, - isEmailValid, - isStringValid, - isUUIDValid, - isValidUrl, - isWalletAddressvalid, - validateEtherumWallet, - validateObjectProperties, - validateSolanaWallet, -} from '../src/utils/validators'; -import { authStub } from './stubs/auth.stub'; - -describe('UTILS TESTING', () => { - it('error handler testing normal', () => { - const result = errorHandler('Something went wrong'); - expect(result).toBeDefined(); - }); +import { ValidationService } from '../src/services/validator-service'; +import { authDetails } from './stubs/common.stub'; +import mime from 'mime-types'; - it('error handler testing array', () => { - const result = errorHandler([{ message: 'cant acccess pda' }]); - expect(result).toBeDefined(); - }); +let validationService: ValidationService; - it('error handler testing object', () => { - const result = errorHandler({ message: 'cant acccess pda' }); - expect(result).toBeDefined(); - }); +beforeAll(() => { + validationService = new ValidationService(); +}); + +afterAll(() => { + jest.resetAllMocks(); +}); +describe('UTILS VALIDATORS TESTING', () => { it('email validator', () => { - const result = isEmailValid('test@gmail.com'); + const result = validationService.validateEmail('test@gmail.com'); expect(result).toBeDefined(); - expect(() => isEmailValid('wrong-email.com')).toThrow( + expect(() => validationService.validateEmail('wrong-email.com')).toThrow( 'wrong-email.com is not valid', ); }); it('uuid validator', () => { - const result = isUUIDValid('f17ac10b-58cc-4372-a567-0e02b2c3d479'); - expect(result).toBeDefined(); - expect(() => isUUIDValid('f17ac10b-58cc-4372-a567')).toThrow( - 'f17ac10b-58cc-4372-a567 is not valid', + const result = validationService.validateUUID( + 'f17ac10b-58cc-4372-a567-0e02b2c3d479', ); + expect(result).toBeDefined(); + expect(() => + validationService.validateUUID('f17ac10b-58cc-4372-a567'), + ).toThrow('f17ac10b-58cc-4372-a567 is not valid'); }); it('url validator', () => { - const result = isValidUrl('https://fake-url.com'); + const result = validationService.validateURL('https://fake-url.com'); expect(result).toBeDefined(); - expect(() => isValidUrl('f17ac10b-58cc-4372-a567')).toThrow( - 'f17ac10b-58cc-4372-a567 is not valid', - ); + expect(() => + validationService.validateURL('f17ac10b-58cc-4372-a567'), + ).toThrow('f17ac10b-58cc-4372-a567 is not valid'); }); it('string validator', () => { - const result = isStringValid('test pda'); + const result = validationService.validateString('test pda'); expect(result).toBeDefined(); - expect(() => isStringValid('')).toThrow(' should be atleast 2 length'); + expect(() => validationService.validateString('')).toThrow( + ' should be atleast 2 length', + ); }); it('etherum validator', () => { - const result = validateEtherumWallet(authStub().wallet); - expect(result).toBeDefined(); - expect(() => - validateEtherumWallet('f17ac10b-58cc-4372-a567-0e02b2c3d479'), - ).toThrow('f17ac10b-58cc-4372-a567-0e02b2c3d479 is invalid'); - }); - - it('etherum & solana validator', () => { - const result = isWalletAddressvalid( - '9aohAjd3okUogzGJT6N2cQUDwBbi2ay7oSzPPaQjQ22s', - Chain.SOL, + const result = validationService.validateEtherumWallet( + authDetails().wallet_address, ); expect(result).toBeDefined(); expect(() => - isWalletAddressvalid('f17ac10b-58cc-4372-a567-0e02b2c3d479', Chain.SOL), - ).toThrow('Non-base58 character'); + validationService.validateEtherumWallet( + 'f17ac10b-58cc-4372-a567-0e02b2c3d479', + ), + ).toThrow('f17ac10b-58cc-4372-a567-0e02b2c3d479 is invalid'); }); it('solana validator', () => { - const result = validateSolanaWallet( + const result = validationService.validateSolanaWallet( '9aohAjd3okUogzGJT6N2cQUDwBbi2ay7oSzPPaQjQ22s', ); expect(result).toBeDefined(); expect(() => - validateSolanaWallet('f17ac10b-58cc-4372-a567-0e02b2c3d479'), + validationService.validateSolanaWallet( + 'f17ac10b-58cc-4372-a567-0e02b2c3d479', + ), ).toThrow('Non-base58 character'); }); it('date validator', () => { - const result = isDateValid(new Date().toDateString()); + const result = validationService.validateDate(new Date().toDateString()); expect(result).toBeDefined(); - expect(() => isDateValid('f17ac10b-58cc-4372-a567-0e02b2c3d479')).toThrow( - 'f17ac10b-58cc-4372-a567-0e02b2c3d479 is not valid', - ); + expect(() => + validationService.validateDate('f17ac10b-58cc-4372-a567-0e02b2c3d479'), + ).toThrow('f17ac10b-58cc-4372-a567-0e02b2c3d479 is not valid'); }); it('validate object', () => { @@ -103,11 +86,160 @@ describe('UTILS TESTING', () => { title: 'test', dateTest: new Date(), owner: { - type: UserIdentifierType.GATEWAY_ID, + type: 'USER_DID', value: 'test', }, }; - const result = validateObjectProperties(sampleObject); + const result = validationService.validateObjectProperties(sampleObject); expect(result).toBeUndefined(); }); + + it('should return true for a valid DID', () => { + const validDID = 'did:gatewayid:example123'; + + const result = validationService.validateDID(validDID); + + expect(result).toBe(true); + }); + + it('should throw an error for an invalid DID', () => { + const invalidDID = 'invalidDID'; + + expect(() => validationService.validateDID(invalidDID)).toThrow( + `${invalidDID} is not valid did`, + ); + }); + + it('should throw an error if DID does not start with "did:gatewayid:"', () => { + const wrongPrefixDID = 'did:otherid:example123'; + + expect(() => validationService.validateDID(wrongPrefixDID)).toThrow( + `${wrongPrefixDID} is not valid did`, + ); + }); + + it('should return name and extension for a valid file name', () => { + const fileName = 'example.txt'; + + const mockMimeContentType = jest + .spyOn(mime, 'contentType') + .mockReturnValue('text/plain'); + + const result = validationService.validateFileName(fileName); + + expect(result).toEqual({ + name: 'example', + extension: 'text/plain', + }); + + expect(mockMimeContentType).toHaveBeenCalledWith('txt'); + }); + + it('should return default mime type for unknown extension', () => { + const fileName = 'example.unknown'; + + const mockMimeContentType = jest + .spyOn(mime, 'contentType') + .mockReturnValue(false); + + const result = validationService.validateFileName(fileName); + + expect(result).toEqual({ + name: 'example', + extension: 'application/octet-stream', + }); + + expect(mockMimeContentType).toHaveBeenCalledWith('unknown'); + }); + + it('should throw an error if file name does not contain an extension', () => { + const fileName = 'example'; + + expect(() => validationService.validateFileName(fileName)).toThrow( + 'Invalid file name. File name or extension is missing.', + ); + }); + + it('should throw an error if the file name or extension is empty', () => { + const fileName = '.txt'; + + expect(() => validationService.validateFileName(fileName)).toThrow( + 'Invalid file name. Name or extension is missing.', + ); + }); +}); + +describe('validateObjectProperties', () => { + beforeEach(() => { + validationService = new ValidationService(); + + jest.spyOn(validationService, 'validateDID').mockImplementation(jest.fn()); + jest.spyOn(validationService, 'validateUUID').mockImplementation(jest.fn()); + jest.spyOn(validationService, 'validateDate').mockImplementation(jest.fn()); + jest + .spyOn(validationService, 'validateString') + .mockImplementation(jest.fn()); + }); + + it('should call validateDID when key is "did"', () => { + const obj = { did: 'did:gatewayid:example123' }; + + validationService.validateObjectProperties(obj); + + expect(validationService.validateDID).toHaveBeenCalledWith( + 'did:gatewayid:example123', + ); + }); + + it('should call validateUUID when key contains "id"', () => { + const obj = { assetId: '123e4567-e89b-12d3-a456-426614174000' }; + + validationService.validateObjectProperties(obj); + + expect(validationService.validateUUID).toHaveBeenCalledWith( + '123e4567-e89b-12d3-a456-426614174000', + ); + }); + + it('should call validateDate when key contains "date"', () => { + const obj = { createdDate: '2024-01-01T00:00:00Z' }; + + validationService.validateObjectProperties(obj); + + expect(validationService.validateDate).toHaveBeenCalledWith( + '2024-01-01T00:00:00Z', + ); + }); + + it('should call validateString for other string keys', () => { + const obj = { name: 'John Doe' }; + + validationService.validateObjectProperties(obj); + + expect(validationService.validateString).toHaveBeenCalledWith('John Doe'); + }); + + it('should skip non-string properties', () => { + const obj = { count: 10, active: true }; + + validationService.validateObjectProperties(obj); + + expect(validationService.validateDID).not.toHaveBeenCalled(); + expect(validationService.validateUUID).not.toHaveBeenCalled(); + expect(validationService.validateDate).not.toHaveBeenCalled(); + expect(validationService.validateString).not.toHaveBeenCalled(); + }); + + it('should throw an error if validation fails', () => { + const obj = { did: 'invalidDID' }; + + // Spy on the validateDID method and make it throw an error + jest.spyOn(validationService, 'validateDID').mockImplementation(() => { + throw new Error('Invalid DID'); + }); + + expect(() => validationService.validateObjectProperties(obj)).toThrow( + 'Invalid DID', + ); + }); });