diff --git a/.eslintrc.cjs b/.eslintrc.cjs index dc4fe45..9c4faef 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -22,6 +22,19 @@ module.exports = { }, }, }, + plugins: ['canonical'], + rules: { + 'unicorn/filename-case': 'off', + 'import/no-extraneous-dependencies': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + 'canonical/no-barrel-import': 'error', + 'canonical/no-export-all': 'error', + }, ignorePatterns: [ 'node_modules/', 'dist/', @@ -33,15 +46,8 @@ module.exports = { 'coverage', 'test', '*.test.ts*', + 'package.json', + 'buf.gen.yaml', + 'buf.work.yaml', ], - rules: { - 'unicorn/filename-case': 'off', - 'import/no-extraneous-dependencies': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/no-unsafe-call': 'off', - '@typescript-eslint/no-unsafe-return': 'off', - '@typescript-eslint/no-unsafe-argument': 'off', - '@typescript-eslint/no-unsafe-assignment': 'off', - '@typescript-eslint/explicit-function-return-type': 'off', - }, }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d63216..a196070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # @valorem-labs-inc/react-hooks +## 0.0.7 + +### Patch Changes + +- refactor useStream to make better use of react-query +- decrease SIWE session refetch interval + ## 0.0.6 ### Patch Changes diff --git a/package.json b/package.json index c20eee5..f8c7171 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@valorem-labs-inc/react-hooks", - "version": "0.0.6", + "version": "0.0.7", "repository": { "type": "git", "url": "https://github.com/valorem-labs-inc/react-hooks.git" @@ -35,16 +35,17 @@ "@tanstack/query-core": "^4.36.1", "@testing-library/react": "^14.1.2", "@testing-library/react-hooks": "^8.0.1", - "@types/node": "^20.10.4", + "@types/node": "^20.10.5", "@types/react": "^18.2.45", - "@types/react-dom": "^18.2.17", + "@types/react-dom": "^18.2.18", "@vercel/style-guide": "^5.1.0", - "@vitest/coverage-v8": "^1.0.4", + "@vitest/coverage-v8": "^1.1.0", "@wagmi/cli": "^1.5.2", "@wagmi/core": "^1.4.12", "abitype": "0.8.7", "connectkit": "^1.5.3", - "eslint": "^8.55.0", + "eslint": "^8.56.0", + "eslint-config-canonical": "^42.8.0", "happy-dom": "^12.10.3", "jest-environment-jsdom": "^29.7.0", "jsdom": "^23.0.1", @@ -55,7 +56,7 @@ "siwe": "^2.1.4", "typedoc": "^0.25.4", "typedoc-plugin-missing-exports": "^2.1.0", - "vitest": "^1.0.4" + "vitest": "^1.1.0" }, "peerDependencies": { "@bufbuild/buf": "^1.28.1", @@ -64,7 +65,7 @@ "@connectrpc/connect-query": "0.5.3", "@connectrpc/connect-web": "^1.2.0", "@tanstack/react-query": "^4.36.1", - "@valorem-labs-inc/sdk": "^0.0.9", + "@valorem-labs-inc/sdk": "^0.0.10", "@wagmi/core": "^1.4.12", "abitype": "0.8.7", "connectkit": "^1.5.3", @@ -72,7 +73,7 @@ "react-dom": "17.x || 18.x", "siwe": "^2.1.4", "typescript": "^5.3.0", - "viem": "^1.19.15", + "viem": "^1.20.3", "wagmi": "^1.4.12", "zod": "^3.22.4" }, @@ -87,7 +88,8 @@ }, "pnpm": { "overrides": { - "@wagmi/core": "^1.4.12" + "@wagmi/core": "^1.4.12", + "viem": "^1.20.3" } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1f6c8d..4df0049 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: '@wagmi/core': ^1.4.12 + viem: ^1.20.3 dependencies: '@bufbuild/buf': @@ -27,17 +28,17 @@ dependencies: specifier: ^4.36.1 version: 4.36.1(react-dom@18.2.0)(react@18.2.0) '@valorem-labs-inc/sdk': - specifier: ^0.0.9 - version: 0.0.9(@bufbuild/protobuf@1.6.0)(@connectrpc/connect@1.2.0)(@wagmi/core@1.4.12)(typescript@5.3.3)(viem@1.19.15) + specifier: ^0.0.10 + version: 0.0.10(@bufbuild/protobuf@1.6.0)(@connectrpc/connect@1.2.0)(@wagmi/core@1.4.12)(typescript@5.3.3)(viem@1.20.3) typescript: specifier: ^5.3.0 version: 5.3.3 viem: - specifier: ^1.19.15 - version: 1.19.15(typescript@5.3.3)(zod@3.22.4) + specifier: ^1.20.3 + version: 1.20.3(typescript@5.3.3)(zod@3.22.4) wagmi: specifier: ^1.4.12 - version: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + version: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) zod: specifier: ^3.22.4 version: 3.22.4 @@ -68,35 +69,38 @@ devDependencies: specifier: ^8.0.1 version: 8.0.1(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) '@types/node': - specifier: ^20.10.4 - version: 20.10.4 + specifier: ^20.10.5 + version: 20.10.5 '@types/react': specifier: ^18.2.45 version: 18.2.45 '@types/react-dom': - specifier: ^18.2.17 - version: 18.2.17 + specifier: ^18.2.18 + version: 18.2.18 '@vercel/style-guide': specifier: ^5.1.0 - version: 5.1.0(eslint@8.55.0)(prettier@3.1.1)(typescript@5.3.3) + version: 5.1.0(eslint@8.56.0)(prettier@3.1.1)(typescript@5.3.3) '@vitest/coverage-v8': - specifier: ^1.0.4 - version: 1.0.4(vitest@1.0.4) + specifier: ^1.1.0 + version: 1.1.0(vitest@1.1.0) '@wagmi/cli': specifier: ^1.5.2 version: 1.5.2(@wagmi/core@1.4.12)(typescript@5.3.3)(wagmi@1.4.12) '@wagmi/core': specifier: ^1.4.12 - version: 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + version: 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) abitype: specifier: 0.8.7 version: 0.8.7(typescript@5.3.3)(zod@3.22.4) connectkit: specifier: ^1.5.3 - version: 1.5.3(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.19.15)(wagmi@1.4.12) + version: 1.5.3(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.20.3)(wagmi@1.4.12) eslint: - specifier: ^8.55.0 - version: 8.55.0 + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-canonical: + specifier: ^42.8.0 + version: 42.8.0(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@types/node@20.10.5)(eslint@8.56.0)(graphql@16.8.1)(typescript@5.3.3)(vitest@1.1.0) happy-dom: specifier: ^12.10.3 version: 12.10.3 @@ -128,8 +132,8 @@ devDependencies: specifier: ^2.1.0 version: 2.1.0(typedoc@0.25.4) vitest: - specifier: ^1.0.4 - version: 1.0.4(@types/node@20.10.4)(happy-dom@12.10.3)(jsdom@23.0.1) + specifier: ^1.1.0 + version: 1.1.0(@types/node@20.10.5)(happy-dom@12.10.3)(jsdom@23.0.1) packages: @@ -149,6 +153,15 @@ packages: '@jridgewell/trace-mapping': 0.3.20 dev: true + /@ardatan/sync-fetch@0.0.1: + resolution: {integrity: sha512-xhlTqH0m31mnsG0tIP4ETgfSB6gXDaYYsUWTrlUV93fFQPI9dd8hE0Ot6MHLCtqgB32hwJAC3YZMWlXZw7AleA==} + engines: {node: '>=14'} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -185,7 +198,7 @@ packages: - supports-color dev: true - /@babel/eslint-parser@7.23.3(@babel/core@7.23.6)(eslint@8.55.0): + /@babel/eslint-parser@7.23.3(@babel/core@7.23.6)(eslint@8.56.0): resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: @@ -194,11 +207,23 @@ packages: dependencies: '@babel/core': 7.23.6 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true + /@babel/eslint-plugin@7.23.5(@babel/eslint-parser@7.23.3)(eslint@8.56.0): + resolution: {integrity: sha512-03+E/58Hoo/ui69gR+beFdGpplpoVK0BSIdke2iw4/Bz7eGN0ssRenNlnU4nmbkowNQOPCStKSwFr8H6DiY49g==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/eslint-parser': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.56.0) + eslint: 8.56.0 + eslint-rule-composer: 0.3.0 + dev: true + /@babel/generator@7.23.5: resolution: {integrity: sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==} engines: {node: '>=6.9.0'} @@ -348,6 +373,26 @@ packages: '@babel/types': 7.23.6 dev: true + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} @@ -358,6 +403,28 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.6): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + dev: true + + /@babel/runtime-corejs3@7.23.6: + resolution: {integrity: sha512-Djs/ZTAnpyj0nyg7p1J6oiE/tZ9G2stqAFlLGZynrW+F3k2w2jGK2mLOBxzYIOcZYA89+c3d3wXKpYLcpwcU6w==} + engines: {node: '>=6.9.0'} + dependencies: + core-js-pure: 3.34.0 + regenerator-runtime: 0.14.0 + dev: true + /@babel/runtime@7.23.5: resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} engines: {node: '>=6.9.0'} @@ -843,6 +910,15 @@ packages: resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} dev: true + /@es-joy/jsdoccomment@0.41.0: + resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} + engines: {node: '>=16'} + dependencies: + comment-parser: 1.4.1 + esquery: 1.5.0 + jsdoc-type-pratt-parser: 4.0.0 + dev: true + /@esbuild/android-arm64@0.16.17: resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} engines: {node: '>=12'} @@ -1239,13 +1315,13 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.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 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -1271,11 +1347,290 @@ packages: - supports-color dev: true - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@graphql-eslint/eslint-plugin@3.20.1(@babel/core@7.23.6)(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-RbwVlz1gcYG62sECR1u0XqMh8w5e5XMCCZoMvPQ3nJzEBCTfXLGX727GBoRmSvY1x4gJmqNZ1lsOX7lZY14RIw==} + engines: {node: '>=12'} + 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: + '@babel/code-frame': 7.23.5 + '@graphql-tools/code-file-loader': 7.3.23(@babel/core@7.23.6)(graphql@16.8.1) + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.23.6)(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + chalk: 4.1.2 + debug: 4.3.4(supports-color@5.5.0) + fast-glob: 3.3.2 + graphql: 16.8.1 + graphql-config: 4.5.0(@types/node@20.10.5)(graphql@16.8.1) + graphql-depth-limit: 1.1.0(graphql@16.8.1) + lodash.lowercase: 4.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - supports-color + - utf-8-validate + dev: true + + /@graphql-tools/batch-execute@8.5.22(graphql@16.8.1): + resolution: {integrity: sha512-hcV1JaY6NJQFQEwCKrYhpfLK8frSXDbtNMoTur98u10Cmecy1zrqNKSqhEyGetpgHxaJRqszGzKeI3RuroDN6A==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + dataloader: 2.2.2 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/code-file-loader@7.3.23(@babel/core@7.23.6)(graphql@16.8.1): + resolution: {integrity: sha512-8Wt1rTtyTEs0p47uzsPJ1vAtfAx0jmxPifiNdmo9EOCuUPyQGEbMaik/YkqZ7QUFIEYEQu+Vgfo8tElwOPtx5Q==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/graphql-tag-pluck': 7.5.2(@babel/core@7.23.6)(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/delegate@9.0.35(graphql@16.8.1): + resolution: {integrity: sha512-jwPu8NJbzRRMqi4Vp/5QX1vIUeUPpWmlQpOkXQD2r1X45YsVceyUUBnktCrlJlDB4jPRVy7JQGwmYo3KFiOBMA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/batch-execute': 8.5.22(graphql@16.8.1) + '@graphql-tools/executor': 0.0.20(graphql@16.8.1) + '@graphql-tools/schema': 9.0.19(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + dataloader: 2.2.2 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/executor-graphql-ws@0.0.14(graphql@16.8.1): + resolution: {integrity: sha512-P2nlkAsPZKLIXImFhj0YTtny5NQVGSsKnhi7PzXiaHSXc6KkzqbWZHKvikD4PObanqg+7IO58rKFpGXP7eeO+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.4 + '@types/ws': 8.5.10 + graphql: 16.8.1 + graphql-ws: 5.12.1(graphql@16.8.1) + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor-http@0.1.10(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-hnAfbKv0/lb9s31LhWzawQ5hghBfHS+gYWtqxME6Rl0Aufq9GltiiLBcl7OVVOnkLF0KhwgbYP1mB5VKmgTGpg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + '@whatwg-node/fetch': 0.8.8 + dset: 3.1.3 + extract-files: 11.0.0 + graphql: 16.8.1 + meros: 1.3.0(@types/node@20.10.5) + tslib: 2.6.2 + value-or-promise: 1.0.12 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@graphql-tools/executor-legacy-ws@0.0.11(graphql@16.8.1): + resolution: {integrity: sha512-4ai+NnxlNfvIQ4c70hWFvOZlSUN8lt7yc+ZsrwtNFbFPH/EroIzFMapAxM9zwyv9bH38AdO3TQxZ5zNxgBdvUw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + '@types/ws': 8.5.10 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.13.0) + tslib: 2.6.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: true + + /@graphql-tools/executor@0.0.20(graphql@16.8.1): + resolution: {integrity: sha512-GdvNc4vszmfeGvUqlcaH1FjBoguvMYzxAfT6tDd4/LgwymepHhinqLNA5otqwVLW+JETcDaK7xGENzFomuE6TA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@repeaterjs/repeater': 3.0.5 + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/graphql-file-loader@7.5.17(graphql@16.8.1): + resolution: {integrity: sha512-hVwwxPf41zOYgm4gdaZILCYnKB9Zap7Ys9OhY1hbwuAuC4MMNY9GpUjoTU3CQc3zUiPoYStyRtUGkHSJZ3HxBw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/import': 6.7.18(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/graphql-tag-pluck@7.5.2(@babel/core@7.23.6)(graphql@16.8.1): + resolution: {integrity: sha512-RW+H8FqOOLQw0BPXaahYepVSRjuOHw+7IL8Opaa5G5uYGOBxoXR7DceyQ7BcpMgktAOOmpDNQ2WtcboChOJSRA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@babel/parser': 7.23.6 + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@graphql-tools/import@6.7.18(graphql@16.8.1): + resolution: {integrity: sha512-XQDdyZTp+FYmT7as3xRWH/x8dx0QZA2WZqfMF5EWb36a0PiH7WwlRQYIdyYXj8YCLpiWkeBXgBRHmMnwEYR8iQ==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + resolve-from: 5.0.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/json-file-loader@7.4.18(graphql@16.8.1): + resolution: {integrity: sha512-AJ1b6Y1wiVgkwsxT5dELXhIVUPs/u3VZ8/0/oOtpcoyO/vAeM5rOvvWegzicOOnQw8G45fgBRMkkRfeuwVt6+w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + globby: 11.1.0 + graphql: 16.8.1 + tslib: 2.6.2 + unixify: 1.0.0 + dev: true + + /@graphql-tools/load@7.8.14(graphql@16.8.1): + resolution: {integrity: sha512-ASQvP+snHMYm+FhIaLxxFgVdRaM0vrN9wW2BKInQpktwWTXVyk+yP5nQUCEGmn0RTdlPKrffBaigxepkEAJPrg==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/schema': 9.0.19(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + p-limit: 3.1.0 + tslib: 2.6.2 + dev: true + + /@graphql-tools/merge@8.4.2(graphql@16.8.1): + resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + dev: true + + /@graphql-tools/schema@9.0.19(graphql@16.8.1): + resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/merge': 8.4.2(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + dev: true + + /@graphql-tools/url-loader@7.17.18(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-ear0CiyTj04jCVAxi7TvgbnGDIN2HgqzXzwsfcqiVg9cvjT40NcMlZ2P1lZDgqMkZ9oyLTV8Bw6j+SyG6A+xPw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@ardatan/sync-fetch': 0.0.1 + '@graphql-tools/delegate': 9.0.35(graphql@16.8.1) + '@graphql-tools/executor-graphql-ws': 0.0.14(graphql@16.8.1) + '@graphql-tools/executor-http': 0.1.10(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/executor-legacy-ws': 0.0.11(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + '@graphql-tools/wrap': 9.4.2(graphql@16.8.1) + '@types/ws': 8.5.10 + '@whatwg-node/fetch': 0.8.8 + graphql: 16.8.1 + isomorphic-ws: 5.0.0(ws@8.15.1) + tslib: 2.6.2 + value-or-promise: 1.0.12 + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + 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-tools/wrap@9.4.2(graphql@16.8.1): + resolution: {integrity: sha512-DFcd9r51lmcEKn0JW43CWkkI2D6T9XI1juW/Yo86i04v43O9w2/k4/nx2XTJv4Yv+iXwUw7Ok81PGltwGJSDSA==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + dependencies: + '@graphql-tools/delegate': 9.0.35(graphql@16.8.1) + '@graphql-tools/schema': 9.0.19(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + graphql: 16.8.1 + tslib: 2.6.2 + value-or-promise: 1.0.12 + 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/config-array@0.11.13: resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} engines: {node: '>=10.10.0'} @@ -1310,7 +1665,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.10.5 jest-mock: 29.7.0 dev: true @@ -1320,7 +1675,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.10.4 + '@types/node': 20.10.5 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1340,7 +1695,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.4 + '@types/node': 20.10.5 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true @@ -1609,6 +1964,12 @@ packages: dev: true optional: true + /@next/eslint-plugin-next@13.5.6: + resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} + dependencies: + glob: 7.1.7 + dev: true + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: @@ -2503,6 +2864,32 @@ packages: nullthrows: 1.1.1 dev: true + /@peculiar/asn1-schema@2.3.8: + resolution: {integrity: sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA==} + dependencies: + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + + /@peculiar/json-schema@1.1.12: + resolution: {integrity: sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w==} + engines: {node: '>=8.0.0'} + dependencies: + tslib: 2.6.2 + dev: true + + /@peculiar/webcrypto@1.4.3: + resolution: {integrity: sha512-VtaY4spKTdN5LjJ04im/d/joXuvLbQdgy5Z4DXF4MFZhQ+MTrejbNMkfZBp1Bs3O5+bFqnJgyGdPuZQflvIa5A==} + engines: {node: '>=10.12.0'} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + pvtsutils: 1.3.5 + tslib: 2.6.2 + webcrypto-core: 1.7.7 + dev: true + /@pkgr/utils@2.4.2: resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -2515,6 +2902,14 @@ packages: tslib: 2.6.2 dev: true + /@repeaterjs/repeater@3.0.4: + resolution: {integrity: sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==} + dev: true + + /@repeaterjs/repeater@3.0.5: + resolution: {integrity: sha512-l3YHBLAol6d/IKnB9LhpD0cEZWAoe3eFKUyTYWmFmCO2Q/WOckxLQAUyMZWwZV2M/m3+4vgRoaolFqaII82/TA==} + dev: true + /@rollup/rollup-android-arm-eabi@4.8.0: resolution: {integrity: sha512-zdTObFRoNENrdPpnTNnhOljYIcOX7aI7+7wyrSpPFFIOf/nRdedE6IYsjaBE7tjukphh1tMTojgJ7p3lKY8x6Q==} cpu: [arm] @@ -2638,7 +3033,7 @@ packages: resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.13.3 - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript @@ -2656,13 +3051,13 @@ packages: resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} dependencies: '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.3 '@scure/base': 1.1.3 /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.3 '@scure/base': 1.1.3 /@sinclair/typebox@0.27.8: @@ -2713,7 +3108,7 @@ packages: /@spruceid/siwe-parser@2.0.2: resolution: {integrity: sha512-9WuA0ios2537cWYu39MMeH0O2KdrMKgKlOBUTWRTXQjCYu5B+mHCA0JkCbFaJ/0EjxoVIcYCXIW/DoPEpw+PqA==} dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.3.3 apg-js: 4.3.0 uri-js: 4.4.1 valid-url: 1.0.9 @@ -3020,7 +3415,7 @@ packages: dependencies: '@babel/runtime': 7.23.6 '@testing-library/dom': 9.3.3 - '@types/react-dom': 18.2.17 + '@types/react-dom': 18.2.18 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -3042,7 +3437,7 @@ packages: /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.10.5 /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3068,7 +3463,7 @@ packages: /@types/jsdom@20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.10.5 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 dev: true @@ -3095,8 +3490,8 @@ packages: resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} dev: true - /@types/node@20.10.4: - resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} + /@types/node@20.10.5: + resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} dependencies: undici-types: 5.26.5 @@ -3107,8 +3502,8 @@ packages: /@types/prop-types@15.7.11: resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} - /@types/react-dom@18.2.17: - resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} + /@types/react-dom@18.2.18: + resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} dependencies: '@types/react': 18.2.45 dev: true @@ -3141,7 +3536,13 @@ packages: /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.10.5 + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 20.10.5 + dev: true /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -3153,7 +3554,7 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/eslint-plugin@6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-5bQDGkXaxD46bPvQt08BUz9YSaO4S0fB1LB5JHQuXTfkGPI3+UUeS387C/e9jRie5GqT8u5kFTrMvAjtX4O5kA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3165,13 +3566,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/scope-manager': 6.13.1 - '@typescript-eslint/type-utils': 6.13.1(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.1(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/type-utils': 6.13.1(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.1(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4(supports-color@5.5.0) - eslint: 8.55.0 + eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.3.0 natural-compare: 1.4.0 @@ -3182,7 +3583,20 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.13.1(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/experimental-utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@6.13.1(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-fs2XOhWCzRhqMmQf0eicLa/CWSaYss2feXsy7xBD/pLyWke/jCIVc2s1ikEAtSW7ina1HNhv7kONoEfVNEcdDQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3197,7 +3611,7 @@ packages: '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) '@typescript-eslint/visitor-keys': 6.13.1 debug: 4.3.4(supports-color@5.5.0) - eslint: 8.55.0 + eslint: 8.56.0 typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -3219,7 +3633,15 @@ packages: '@typescript-eslint/visitor-keys': 6.13.1 dev: true - /@typescript-eslint/type-utils@6.13.1(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/scope-manager@6.15.0: + resolution: {integrity: sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.15.0 + '@typescript-eslint/visitor-keys': 6.15.0 + dev: true + + /@typescript-eslint/type-utils@6.13.1(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-A2qPlgpxx2v//3meMqQyB1qqTg1h1dJvzca7TugM3Yc2USDY+fsRBiojAEo92HO7f5hW5mjAUF6qobOPzlBCBQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -3230,9 +3652,9 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) - '@typescript-eslint/utils': 6.13.1(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.13.1(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4(supports-color@5.5.0) - eslint: 8.55.0 + eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -3249,6 +3671,11 @@ packages: engines: {node: ^16.0.0 || >=18.0.0} dev: true + /@typescript-eslint/types@6.15.0: + resolution: {integrity: sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3291,19 +3718,40 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/typescript-estree@6.15.0(typescript@5.3.3): + resolution: {integrity: sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.15.0 + '@typescript-eslint/visitor-keys': 6.15.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) - eslint: 8.55.0 + eslint: 8.56.0 eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: @@ -3311,41 +3759,68 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.13.1(eslint@8.55.0)(typescript@5.3.3): + /@typescript-eslint/utils@6.13.1(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-ouPn/zVoan92JgAegesTXDB/oUp6BP1v8WpfYcqh649ejNc9Qv+B4FF2Ff626kO1xg0wWwwG48lAJ4JuesgdOw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 '@typescript-eslint/scope-manager': 6.13.1 '@typescript-eslint/types': 6.13.1 '@typescript-eslint/typescript-estree': 6.13.1(typescript@5.3.3) - eslint: 8.55.0 + eslint: 8.56.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@5.62.0: - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@6.13.1: - resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} + /@typescript-eslint/utils@6.15.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==} engines: {node: ^16.0.0 || >=18.0.0} - dependencies: + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.15.0 + '@typescript-eslint/types': 6.15.0 + '@typescript-eslint/typescript-estree': 6.15.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@6.13.1: + resolution: {integrity: sha512-NDhQUy2tg6XGNBGDRm1XybOHSia8mcXmlbKWoQP+nm1BIIMxa55shyJfZkHpEBN62KNPLrocSM2PdPcaLgDKMQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: '@typescript-eslint/types': 6.13.1 eslint-visitor-keys: 3.4.3 dev: true + /@typescript-eslint/visitor-keys@6.15.0: + resolution: {integrity: sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.15.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript/vfs@1.5.0: resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} dependencies: @@ -3358,28 +3833,28 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true - /@valorem-labs-inc/sdk@0.0.9(@bufbuild/protobuf@1.6.0)(@connectrpc/connect@1.2.0)(@wagmi/core@1.4.12)(typescript@5.3.3)(viem@1.19.15): - resolution: {integrity: sha512-T8/2yKb/r/oYLsUgzx5zyfx2a1V6lR41gCImdSK5+JXAoIlHsaExgMiU44cs8cQ2cP7mbFy1P5Zmkzv0Sp65bA==, tarball: https://npm.pkg.github.com/download/@valorem-labs-inc/sdk/0.0.9/fd36feb5897b06da1ed718bd12e266e24a643e36} + /@valorem-labs-inc/sdk@0.0.10(@bufbuild/protobuf@1.6.0)(@connectrpc/connect@1.2.0)(@wagmi/core@1.4.12)(typescript@5.3.3)(viem@1.20.3): + resolution: {integrity: sha512-lpGW9h3UdiJS5Y1kbG92OREWu8vnF1kRe6tjoHA3LAyvgSl29TIw59AAnjYzWe9wBOTzP1Az0xDtEXaB2OjTpg==, tarball: https://npm.pkg.github.com/download/@valorem-labs-inc/sdk/0.0.10/b51ee68061ebcfbff0edce28d4f911e1cfb1e90b} engines: {node: '>=18'} peerDependencies: '@bufbuild/protobuf': ^1.6.0 '@connectrpc/connect': ^1.2.0 '@wagmi/core': ^1.4.12 typescript: ^5.3.0 - viem: ^1.19.15 - peerDependenciesMeta: - typescript: - optional: true + viem: ^1.20.3 dependencies: '@bufbuild/protobuf': 1.6.0 '@connectrpc/connect': 1.2.0(@bufbuild/protobuf@1.6.0) - '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) - mathjs: 12.2.0 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.8.1) + '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) + date-fns: 3.0.5 + graphql: 16.8.1 + mathjs: 12.2.1 typescript: 5.3.3 - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) dev: false - /@vercel/style-guide@5.1.0(eslint@8.55.0)(prettier@3.1.1)(typescript@5.3.3): + /@vercel/style-guide@5.1.0(eslint@8.56.0)(prettier@3.1.1)(typescript@5.3.3): resolution: {integrity: sha512-L9lWYePIycm7vIOjDLj+mmMdmmPkW3/brHjgq+nJdvMOrL7Hdk/19w8X583HYSk0vWsq494o5Qkh6x5+uW7ljg==} engines: {node: '>=16'} peerDependencies: @@ -3398,24 +3873,24 @@ packages: optional: true dependencies: '@babel/core': 7.23.6 - '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.55.0) + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.56.0) '@rushstack/eslint-patch': 1.6.0 - '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 - eslint-config-prettier: 9.0.0(eslint@8.55.0) + '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-prettier: 9.0.0(eslint@8.56.0) eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.29.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.55.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@8.55.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.55.0)(typescript@5.3.3) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.55.0) - eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.6.0)(eslint@8.55.0) - eslint-plugin-react: 7.33.2(eslint@8.55.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.55.0) - eslint-plugin-testing-library: 6.2.0(eslint@8.55.0)(typescript@5.3.3) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.56.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-playwright: 0.16.0(eslint-plugin-jest@27.6.0)(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + eslint-plugin-testing-library: 6.2.0(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-tsdoc: 0.2.17 - eslint-plugin-unicorn: 48.0.1(eslint@8.55.0) + eslint-plugin-unicorn: 48.0.1(eslint@8.56.0) prettier: 3.1.1 prettier-plugin-packagejson: 2.4.6(prettier@3.1.1) typescript: 5.3.3 @@ -3426,8 +3901,8 @@ packages: - supports-color dev: true - /@vitest/coverage-v8@1.0.4(vitest@1.0.4): - resolution: {integrity: sha512-xD6Yuql6RW0Ir/JJIs6rVrmnG2/KOWJF+IRX1oJQk5wGKGxbtdrYPbl+WTUn/4ICCQ2G20zbE1e8/nPNyAG5Vg==} + /@vitest/coverage-v8@1.1.0(vitest@1.1.0): + resolution: {integrity: sha512-kHQRk70vTdXAyQY2C0vKOHPyQD/R6IUzcGdO4vCuyr4alE5Yg1+Sk2jSdjlIrTTXdcNEs+ReWVM09mmSFJpzyQ==} peerDependencies: vitest: ^1.0.0 dependencies: @@ -3444,43 +3919,43 @@ packages: std-env: 3.6.0 test-exclude: 6.0.0 v8-to-istanbul: 9.2.0 - vitest: 1.0.4(@types/node@20.10.4)(happy-dom@12.10.3)(jsdom@23.0.1) + vitest: 1.1.0(@types/node@20.10.5)(happy-dom@12.10.3)(jsdom@23.0.1) transitivePeerDependencies: - supports-color dev: true - /@vitest/expect@1.0.4: - resolution: {integrity: sha512-/NRN9N88qjg3dkhmFcCBwhn/Ie4h064pY3iv7WLRsDJW7dXnEgeoa8W9zy7gIPluhz6CkgqiB3HmpIXgmEY5dQ==} + /@vitest/expect@1.1.0: + resolution: {integrity: sha512-9IE2WWkcJo2BR9eqtY5MIo3TPmS50Pnwpm66A6neb2hvk/QSLfPXBz2qdiwUOQkwyFuuXEUj5380CbwfzW4+/w==} dependencies: - '@vitest/spy': 1.0.4 - '@vitest/utils': 1.0.4 + '@vitest/spy': 1.1.0 + '@vitest/utils': 1.1.0 chai: 4.3.10 dev: true - /@vitest/runner@1.0.4: - resolution: {integrity: sha512-rhOQ9FZTEkV41JWXozFM8YgOqaG9zA7QXbhg5gy6mFOVqh4PcupirIJ+wN7QjeJt8S8nJRYuZH1OjJjsbxAXTQ==} + /@vitest/runner@1.1.0: + resolution: {integrity: sha512-zdNLJ00pm5z/uhbWF6aeIJCGMSyTyWImy3Fcp9piRGvueERFlQFbUwCpzVce79OLm2UHk9iwaMSOaU9jVHgNVw==} dependencies: - '@vitest/utils': 1.0.4 + '@vitest/utils': 1.1.0 p-limit: 5.0.0 pathe: 1.1.1 dev: true - /@vitest/snapshot@1.0.4: - resolution: {integrity: sha512-vkfXUrNyNRA/Gzsp2lpyJxh94vU2OHT1amoD6WuvUAA12n32xeVZQ0KjjQIf8F6u7bcq2A2k969fMVxEsxeKYA==} + /@vitest/snapshot@1.1.0: + resolution: {integrity: sha512-5O/wyZg09V5qmNmAlUgCBqflvn2ylgsWJRRuPrnHEfDNT6tQpQ8O1isNGgo+VxofISHqz961SG3iVvt3SPK/QQ==} dependencies: magic-string: 0.30.5 pathe: 1.1.1 pretty-format: 29.7.0 dev: true - /@vitest/spy@1.0.4: - resolution: {integrity: sha512-9ojTFRL1AJVh0hvfzAQpm0QS6xIS+1HFIw94kl/1ucTfGCaj1LV/iuJU4Y6cdR03EzPDygxTHwE1JOm+5RCcvA==} + /@vitest/spy@1.1.0: + resolution: {integrity: sha512-sNOVSU/GE+7+P76qYo+VXdXhXffzWZcYIPQfmkiRxaNCSPiLANvQx5Mx6ZURJ/ndtEkUJEpvKLXqAYTKEY+lTg==} dependencies: tinyspy: 2.2.0 dev: true - /@vitest/utils@1.0.4: - resolution: {integrity: sha512-gsswWDXxtt0QvtK/y/LWukN7sGMYmnCcv1qv05CsY6cU/Y1zpGX1QuvLs+GO1inczpE6Owixeel3ShkjhYtGfA==} + /@vitest/utils@1.1.0: + resolution: {integrity: sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==} dependencies: diff-sequences: 29.6.3 loupe: 2.3.7 @@ -3503,7 +3978,7 @@ packages: wagmi: optional: true dependencies: - '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) abitype: 0.8.7(typescript@5.3.3)(zod@3.22.4) abort-controller: 3.0.0 bundle-require: 3.1.2(esbuild@0.16.17) @@ -3525,19 +4000,19 @@ packages: picocolors: 1.0.0 prettier: 2.8.8 typescript: 5.3.3 - viem: 1.19.9(typescript@5.3.3)(zod@3.22.4) - wagmi: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) + wagmi: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) zod: 3.22.4 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@wagmi/connectors@3.1.10(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4): + /@wagmi/connectors@3.1.10(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4): resolution: {integrity: sha512-ZLJC1QaeiZarkF07Cr9mOlVjPO1Lf5TBx+JKBms2y5fUIXlKrxCfQgO/gDCureboI+Us2X3IRI659+XacSGpbA==} peerDependencies: typescript: '>=5.0.4' - viem: '>=0.3.35' + viem: ^1.20.3 peerDependenciesMeta: typescript: optional: true @@ -3552,7 +4027,7 @@ packages: abitype: 0.8.7(typescript@5.3.3)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.3.3 - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -3574,20 +4049,20 @@ packages: - utf-8-validate - zod - /@wagmi/core@1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4): + /@wagmi/core@1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4): resolution: {integrity: sha512-bLcYmmGgjtl3jAGo8X3Sm6oUwsdjbVxFMu9SWnwHdE4S9JdYeWM57dEhQgq8SYul2yQ7yY2/gimBf1Or0Ky3dQ==} peerDependencies: typescript: '>=5.0.4' - viem: '>=0.3.35' + viem: ^1.20.3 peerDependenciesMeta: typescript: optional: true dependencies: - '@wagmi/connectors': 3.1.10(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + '@wagmi/connectors': 3.1.10(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) abitype: 0.8.7(typescript@5.3.3)(zod@3.22.4) eventemitter3: 4.0.7 typescript: 5.3.3 - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) zustand: 4.4.7(@types/react@18.2.45)(react@18.2.0) transitivePeerDependencies: - '@azure/app-configuration' @@ -4083,6 +4558,30 @@ packages: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + /@whatwg-node/events@0.0.3: + resolution: {integrity: sha512-IqnKIDWfXBJkvy/k6tzskWTc2NK3LcqHlb+KHGCrjOCH4jfQckRX0NAiIcC/vIqQkzLYw2r2CTSwAxcrtcD6lA==} + dev: true + + /@whatwg-node/fetch@0.8.8: + resolution: {integrity: sha512-CdcjGC2vdKhc13KKxgsc6/616BQ7ooDIgPeTuAiE8qfCnS0mGzcfCOoZXypQSz73nxI+GWc7ZReIAVhxoE1KCg==} + dependencies: + '@peculiar/webcrypto': 1.4.3 + '@whatwg-node/node-fetch': 0.3.6 + busboy: 1.6.0 + urlpattern-polyfill: 8.0.2 + web-streams-polyfill: 3.2.1 + dev: true + + /@whatwg-node/node-fetch@0.3.6: + resolution: {integrity: sha512-w9wKgDO4C95qnXZRwZTfCmLWqyRnooGjcIwG0wADWjw9/HN0p7dtvtgSvItZtUyNteEvgTrd8QojNEqV6DAGTA==} + dependencies: + '@whatwg-node/events': 0.0.3 + busboy: 1.6.0 + fast-querystring: 1.1.2 + fast-url-parser: 1.1.3 + tslib: 2.6.2 + dev: true + /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true @@ -4247,6 +4746,11 @@ packages: /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + /are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + dev: true + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -4351,6 +4855,25 @@ packages: engines: {node: '>=0.10.0'} dev: true + /asn1js@3.0.5: + resolution: {integrity: sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==} + engines: {node: '>=12.0.0'} + dependencies: + pvtsutils: 1.3.5 + pvutils: 1.1.3 + tslib: 2.6.2 + dev: true + + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.5 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.4 + util: 0.12.5 + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -4359,6 +4882,13 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true + /ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + dev: true + /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: @@ -4466,6 +4996,10 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true + /boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + dev: true + /borsh@0.7.0: resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} dependencies: @@ -4550,6 +5084,12 @@ packages: engines: {node: '>=6'} dev: true + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + /bundle-name@3.0.0: resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} engines: {node: '>=12'} @@ -4567,6 +5107,13 @@ packages: load-tsconfig: 0.2.5 dev: true + /busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + dependencies: + streamsearch: 1.1.0 + dev: true + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -4659,6 +5206,10 @@ packages: engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true + /chance@1.1.11: + resolution: {integrity: sha512-kqTg3WWywappJPqtgrdvbA380VoXO2eu9VCV895JgbyHsaErXdyHK9LOZ911OvAk6L0obK7kDk9CGs8+oBawVA==} + dev: true + /change-case@4.1.2: resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} dependencies: @@ -4810,6 +5361,11 @@ packages: engines: {node: '>= 10'} dev: true + /comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + dev: true + /complex.js@2.1.1: resolution: {integrity: sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==} dev: false @@ -4818,13 +5374,13 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /connectkit@1.5.3(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.19.15)(wagmi@1.4.12): + /connectkit@1.5.3(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.20.3)(wagmi@1.4.12): resolution: {integrity: sha512-vXneVOa+oit5Migoxca2QkgVBHaROItzb2kW13o7aUrcEcecYIGZjsizsVM2YvIdKihyWs+zJFrlED4g8zAMew==} engines: {node: '>=12.4'} peerDependencies: react: 17.x || 18.x react-dom: 17.x || 18.x - viem: ^1.0.0 + viem: ^1.20.3 wagmi: ^1.1.1 dependencies: buffer: 6.0.3 @@ -4837,8 +5393,8 @@ packages: react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.23.6)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) - wagmi: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) + wagmi: 1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) transitivePeerDependencies: - '@babel/core' - react-is @@ -4868,6 +5424,21 @@ packages: dependencies: toggle-selection: 1.0.6 + /core-js-pure@3.34.0: + resolution: {integrity: sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==} + requiresBuild: true + dev: true + + /cosmiconfig@8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: true + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} @@ -4884,6 +5455,13 @@ packages: typescript: 5.3.3 dev: true + /create-eslint-index@1.0.0: + resolution: {integrity: sha512-nXvJjnfDytOOaPOonX0h0a1ggMoqrhdekGeZkD6hkcWYvlCWhU719tKFVh8eU04CnMwu3uwe1JjwuUF2C3k2qg==} + engines: {node: '>=4.0.0'} + dependencies: + lodash.get: 4.4.2 + dev: true + /cross-fetch@3.1.8: resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} dependencies: @@ -5027,6 +5605,14 @@ packages: whatwg-url: 14.0.0 dev: true + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true + + /date-fns@3.0.5: + resolution: {integrity: sha512-Q4Tq5c5s/Zl/zbgdWf6pejn9ru7UwdIlLfvEEg1hVsQNQ7LKt76qIduagIT9OPK7+JCv1mAKherdU6bOqGYDnw==} + dev: false + /debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} dev: true @@ -5311,6 +5897,11 @@ packages: engines: {node: '>=6'} dev: true + /dset@3.1.3: + resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==} + engines: {node: '>=4'} + dev: true + /duplexify@4.1.2: resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} dependencies: @@ -5342,6 +5933,13 @@ packages: dependencies: once: 1.4.0 + /enhance-visitors@1.0.0: + resolution: {integrity: sha512-+29eJLiUixTEDRaZ35Vu8jP3gPLNcQQkQkOQjLp2X+6cZGGPDD/uasbFzvLsJKnGZnvmyZ0srxudwOtskHeIDA==} + engines: {node: '>=4.0.0'} + dependencies: + lodash: 4.17.21 + dev: true + /enhanced-resolve@5.15.0: resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} @@ -5584,13 +6182,95 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-prettier@9.0.0(eslint@8.55.0): + /eslint-ast-utils@1.1.0: + resolution: {integrity: sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==} + engines: {node: '>=4'} + dependencies: + lodash.get: 4.4.2 + lodash.zip: 4.2.0 + dev: true + + /eslint-compat-utils@0.1.2(eslint@8.56.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-config-canonical@42.8.0(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(@types/node@20.10.5)(eslint@8.56.0)(graphql@16.8.1)(typescript@5.3.3)(vitest@1.1.0): + resolution: {integrity: sha512-Jurs2GnTq9ISNwSt+ryYPy35smrfFQXGSTi9dLJvGqDP3bAI27U9TkUNozCwPNb0hxy8gsvwy2tA4IO8TV1Kcg==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: ^8.30.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.6)(eslint@8.56.0) + '@babel/eslint-plugin': 7.23.5(@babel/eslint-parser@7.23.3)(eslint@8.56.0) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.6) + '@graphql-eslint/eslint-plugin': 3.20.1(@babel/core@7.23.6)(@types/node@20.10.5)(graphql@16.8.1) + '@next/eslint-plugin-next': 13.5.6 + '@rushstack/eslint-patch': 1.6.0 + '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-config-prettier: 9.0.0(eslint@8.56.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-i@2.29.1)(eslint@8.56.0) + eslint-plugin-ava: 14.0.0(eslint@8.56.0) + eslint-plugin-canonical: 4.18.0(@typescript-eslint/parser@6.13.1)(eslint-plugin-i@2.29.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-cypress: 2.15.1(eslint@8.56.0) + eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0) + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.56.0) + eslint-plugin-fp: 2.3.0(eslint@8.56.0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-jsdoc: 46.9.1(eslint@8.56.0) + eslint-plugin-jsonc: 2.11.2(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-lodash: 7.4.0(eslint@8.56.0) + eslint-plugin-mocha: 10.2.0(eslint@8.56.0) + eslint-plugin-modules-newline: 0.0.6 + eslint-plugin-n: 16.4.0(eslint@8.56.0) + eslint-plugin-prettier: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.56.0)(prettier@3.1.1) + eslint-plugin-promise: 6.1.1(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) + eslint-plugin-regexp: 1.15.0(eslint@8.56.0) + eslint-plugin-simple-import-sort: 10.0.0(eslint@8.56.0) + eslint-plugin-typescript-sort-keys: 3.1.0(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + eslint-plugin-unicorn: 48.0.1(eslint@8.56.0) + eslint-plugin-vitest: 0.3.18(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.1.0) + eslint-plugin-yml: 1.11.0(eslint@8.56.0) + eslint-plugin-zod: 1.4.0(eslint@8.56.0) + prettier: 3.1.1 + ramda: 0.29.1 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - '@types/eslint' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - encoding + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - graphql + - jest + - supports-color + - typescript + - utf-8-validate + - vitest + dev: true + + /eslint-config-prettier@9.0.0(eslint@8.56.0): resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true /eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.29.0): @@ -5599,7 +6279,7 @@ packages: peerDependencies: eslint-plugin-import: '>=1.4.0' dependencies: - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) dev: true /eslint-import-resolver-node@0.3.9: @@ -5612,7 +6292,30 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.55.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-i@2.29.1)(eslint@8.56.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + enhanced-resolve: 5.15.0 + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 + is-glob: 4.0.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -5621,9 +6324,9 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) enhanced-resolve: 5.15.0 - eslint: 8.55.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint: 8.56.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) fast-glob: 3.3.2 get-tsconfig: 4.7.2 is-core-module: 2.13.1 @@ -5635,7 +6338,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -5656,27 +6359,144 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.55.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-import@2.29.0)(eslint@8.56.0) + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-ava@14.0.0(eslint@8.56.0): + resolution: {integrity: sha512-XmKT6hppaipwwnLVwwvQliSU6AF1QMHiNoLD5JQfzhUhf0jY7CO0O624fQrE+Y/fTb9vbW8r77nKf7M/oHulxw==} + engines: {node: '>=14.17 <15 || >=16.4'} + peerDependencies: + eslint: '>=8.26.0' + dependencies: + enhance-visitors: 1.0.0 + eslint: 8.56.0 + eslint-utils: 3.0.0(eslint@8.56.0) + espree: 9.6.1 + espurify: 2.1.1 + import-modules: 2.1.0 + micro-spelling-correcter: 1.1.1 + pkg-dir: 5.0.0 + resolve-from: 5.0.0 + dev: true + + /eslint-plugin-canonical@4.18.0(@typescript-eslint/parser@6.13.1)(eslint-plugin-i@2.29.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-0Egc0FKOnCRdu3bFEJhfHkdkusIgW0UxdemukkowZQnQsnf12FHSJ7K26b+tZ5pKB7cTyECSaqvEpoIJfplX4g==} + engines: {node: '>=16.0.0'} + dependencies: + '@typescript-eslint/utils': 6.13.1(eslint@8.56.0)(typescript@5.3.3) + chance: 1.1.11 + debug: 4.3.4(supports-color@5.5.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.13.1)(eslint-plugin-i@2.29.1)(eslint@8.56.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + is-get-set-prop: 1.0.0 + is-js-type: 2.0.0 + is-obj-prop: 1.0.0 + is-proto-prop: 2.0.0 + lodash: 4.17.21 + natural-compare: 1.4.0 + recast: 0.23.4 + roarr: 7.21.0 + ts-unused-exports: 9.0.5(typescript@5.3.3) + xregexp: 5.1.1 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - eslint-plugin-import - supports-color + - typescript + dev: true + + /eslint-plugin-cypress@2.15.1(eslint@8.56.0): + resolution: {integrity: sha512-eLHLWP5Q+I4j2AWepYq0PgFEei9/s5LvjuSqWrxurkg1YZ8ltxdvMNmdSf0drnsNo57CTgYY/NIHHLRSWejR7w==} + peerDependencies: + eslint: '>= 3.2.1' + dependencies: + eslint: 8.56.0 + globals: 13.24.0 dev: true - /eslint-plugin-eslint-comments@3.2.0(eslint@8.55.0): + /eslint-plugin-es-x@7.5.0(eslint@8.56.0): + resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0): resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} engines: {node: '>=6.5.0'} peerDependencies: eslint: '>=4.19.1' dependencies: escape-string-regexp: 1.0.5 - eslint: 8.55.0 + eslint: 8.56.0 ignore: 5.3.0 dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0): + /eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.23.3)(@babel/plugin-transform-react-jsx@7.23.4)(eslint@8.56.0): + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + dependencies: + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.6) + eslint: 8.56.0 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + dev: true + + /eslint-plugin-fp@2.3.0(eslint@8.56.0): + resolution: {integrity: sha512-3n2oHibwoIxAht9/+ZaTldhI6brXORgl8oNXqZd+d9xuAQt2SBJ2/aml0oQRMWvXrgsz2WG6wfC++NjzSG3prA==} + engines: {node: '>=4.0.0'} + peerDependencies: + eslint: '>=3' + dependencies: + create-eslint-index: 1.0.0 + eslint: 8.56.0 + eslint-ast-utils: 1.1.0 + lodash: 4.17.21 + req-all: 0.1.0 + dev: true + + /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: ^7.2.0 || ^8 + dependencies: + debug: 4.3.4(supports-color@5.5.0) + doctrine: 3.0.0 + eslint: 8.56.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + get-tsconfig: 4.7.2 + is-glob: 4.0.3 + minimatch: 3.1.2 + semver: 7.5.4 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} engines: {node: '>=4'} peerDependencies: @@ -5686,16 +6506,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.1(eslint@8.55.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.55.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.1)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -5711,7 +6531,7 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.55.0)(typescript@5.3.3): + /eslint-plugin-jest@27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -5724,15 +6544,50 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.55.0)(typescript@5.3.3) - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.55.0): + /eslint-plugin-jsdoc@46.9.1(eslint@8.56.0): + resolution: {integrity: sha512-11Ox5LCl2wY7gGkp9UOyew70o9qvii1daAH+h/MFobRVRNcy7sVlH+jm0HQdgcvcru6285GvpjpUyoa051j03Q==} + engines: {node: '>=16'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@es-joy/jsdoccomment': 0.41.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.3.4(supports-color@5.5.0) + escape-string-regexp: 4.0.0 + eslint: 8.56.0 + esquery: 1.5.0 + is-builtin-module: 3.2.1 + semver: 7.5.4 + spdx-expression-parse: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-jsonc@2.11.2(eslint@8.56.0): + resolution: {integrity: sha512-F6A0MZhIGRBPOswzzn4tJFXXkPLiLwJaMlQwz/Qj1qx+bV5MCn79vBeJh2ynMmtqqHloi54KDCnsT/KWrcCcnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) + espree: 9.6.1 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + dev: true + + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: @@ -5748,7 +6603,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + eslint: 8.56.0 hasown: 2.0.0 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -5757,7 +6612,54 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.6.0)(eslint@8.55.0): + /eslint-plugin-lodash@7.4.0(eslint@8.56.0): + resolution: {integrity: sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=2' + dependencies: + eslint: 8.56.0 + lodash: 4.17.21 + dev: true + + /eslint-plugin-mocha@10.2.0(eslint@8.56.0): + resolution: {integrity: sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + eslint-utils: 3.0.0(eslint@8.56.0) + rambda: 7.5.0 + dev: true + + /eslint-plugin-modules-newline@0.0.6: + resolution: {integrity: sha512-69NpBr68U6pmXL+y+KHl/64PwRarceC3/sCNUVxRbe0gPI32SIw8AtdpkqNiJYCa2yMd4lRrkrnU09Yio7KVzA==} + engines: {node: '>=0.10.0'} + dependencies: + requireindex: 1.1.0 + dev: true + + /eslint-plugin-n@16.4.0(eslint@8.56.0): + resolution: {integrity: sha512-IkqJjGoWYGskVaJA7WQuN8PINIxc0N/Pk/jLeYT4ees6Fo5lAhpwGsYek6gS9tCUxgDC4zJ+OwY2bY/6/9OMKQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + builtins: 5.0.1 + eslint: 8.56.0 + eslint-plugin-es-x: 7.5.0(eslint@8.56.0) + get-tsconfig: 4.7.2 + ignore: 5.3.0 + is-builtin-module: 3.2.1 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /eslint-plugin-playwright@0.16.0(eslint-plugin-jest@27.6.0)(eslint@8.56.0): resolution: {integrity: sha512-DcHpF0SLbNeh9MT4pMzUGuUSnJ7q5MWbP8sSEFIMS6j7Ggnduq8ghNlfhURgty4c1YFny7Ge9xYTO1FSAoV2Vw==} peerDependencies: eslint: '>=7' @@ -5766,20 +6668,50 @@ packages: eslint-plugin-jest: optional: true dependencies: - eslint: 8.55.0 - eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.55.0)(typescript@5.3.3) + eslint: 8.56.0 + eslint-plugin-jest: 27.6.0(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + dev: true + + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.56.0)(prettier@3.1.1): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + 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 + dependencies: + eslint: 8.56.0 + eslint-config-prettier: 9.0.0(eslint@8.56.0) + prettier: 3.1.1 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.55.0): + /eslint-plugin-promise@6.1.1(eslint@8.56.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 + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.55.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -5790,7 +6722,7 @@ packages: array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -5804,14 +6736,39 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-testing-library@6.2.0(eslint@8.55.0)(typescript@5.3.3): + /eslint-plugin-regexp@1.15.0(eslint@8.56.0): + resolution: {integrity: sha512-YEtQPfdudafU7RBIFci81R/Q1yErm0mVh3BkGnXD2Dk8DLwTFdc2ITYH1wCnHKim2gnHfPFgrkh+b2ozyyU7ag==} + engines: {node: ^12 || >=14} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + comment-parser: 1.4.1 + eslint: 8.56.0 + grapheme-splitter: 1.0.4 + jsdoctypeparser: 9.0.0 + refa: 0.11.0 + regexp-ast-analysis: 0.6.0 + scslre: 0.2.0 + dev: true + + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.56.0): + resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-testing-library@6.2.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-+LCYJU81WF2yQ+Xu4A135CgK8IszcFcyMF4sWkbiu6Oj+Nel0TrkZq/HvDw0/1WuO3dhDQsZA/OpEMGd0NfcUw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} peerDependencies: eslint: ^7.5.0 || ^8.0.0 dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@8.55.0)(typescript@5.3.3) - eslint: 8.55.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 transitivePeerDependencies: - supports-color - typescript @@ -5824,17 +6781,35 @@ packages: '@microsoft/tsdoc-config': 0.16.2 dev: true - /eslint-plugin-unicorn@48.0.1(eslint@8.55.0): + /eslint-plugin-typescript-sort-keys@3.1.0(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-rgZeYfEguqKni/V7sbmgFu9/94UDAQd7YqNd0J7Qhw7SdLIGd0iBk2KgpjhRhe2ge4rPSLDIdFWwUiDqBOst6Q==} + engines: {node: '>= 16'} + peerDependencies: + '@typescript-eslint/parser': ^6 + eslint: ^7 || ^8 + typescript: ^3 || ^4 || ^5 + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': 6.13.1(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + json-schema: 0.4.0 + natural-compare-lite: 1.4.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-unicorn@48.0.1(eslint@8.56.0): resolution: {integrity: sha512-FW+4r20myG/DqFcCSzoumaddKBicIPeFnTrifon2mWIzlfyvzwyqZjqVP7m4Cqr/ZYisS2aiLghkUWaPg6vtCw==} engines: {node: '>=16'} peerDependencies: eslint: '>=8.44.0' dependencies: '@babel/helper-validator-identifier': 7.22.20 - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) ci-info: 3.9.0 clean-regexp: 1.0.0 - eslint: 8.55.0 + eslint: 8.56.0 esquery: 1.5.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 @@ -5848,6 +6823,58 @@ packages: strip-indent: 3.0.0 dev: true + /eslint-plugin-vitest@0.3.18(@typescript-eslint/eslint-plugin@6.13.1)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.1.0): + resolution: {integrity: sha512-IJzs6BpA//wkNxo5845uPIMOIp4j76MiKiagJ3hD6a2DemrktdpB7mmTjU0EeFuq14NXFoO1wN8Fwrx2VxWBRA==} + engines: {node: ^18.0.0 || >= 20.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + vitest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.13.1(@typescript-eslint/parser@6.13.1)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.15.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 + vitest: 1.1.0(@types/node@20.10.5)(happy-dom@12.10.3)(jsdom@23.0.1) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-yml@1.11.0(eslint@8.56.0): + resolution: {integrity: sha512-NBZP1NDGy0u38pY5ieix75jxS9GNOJy9xd4gQa0rU4gWbfEsVhKDwuFaQ6RJpDbv6Lq5TtcAZS/YnAc0oeRw0w==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) + lodash: 4.17.21 + natural-compare: 1.4.0 + yaml-eslint-parser: 1.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-zod@1.4.0(eslint@8.56.0): + resolution: {integrity: sha512-i9WzQGw2X5fQcuQh33mA8DQjZJM/yuyZvs1Fc5EyTidX7Ed/g832+1FEQ4u5gtXy+jZ+DVsB5+oMHj4tIOfeZg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=8.1.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -5864,6 +6891,16 @@ packages: estraverse: 5.3.0 dev: true + /eslint-utils@3.0.0(eslint@8.56.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-visitor-keys@2.1.0: resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} engines: {node: '>=10'} @@ -5874,15 +6911,15 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 + '@eslint/js': 8.56.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -5936,6 +6973,10 @@ packages: hasBin: true dev: true + /espurify@2.1.1: + resolution: {integrity: sha512-zttWvnkhcDyGOhSH4vO2qCBILpdCMv/MX8lp4cqgRkQoDRGK2oZxi2GfWhlP2dIXmk7BaKeOTuzbHhyC68o8XQ==} + dev: true + /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -6097,14 +7138,27 @@ packages: tmp: 0.0.33 dev: true + /extract-files@11.0.0: + resolution: {integrity: sha512-FuoE1qtbJ4bBVvv94CC7s0oTnKUGvQs+Rjf1L2SJFfS+HTVVjhPFtehPdQ0JiGPqVNfSSZvL5yzHHQq2Z4WNhQ==} + engines: {node: ^12.20 || >= 14.13} + dev: true + /eyes@0.1.8: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} + /fast-decode-uri-component@1.0.1: + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} + dev: true + /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'} @@ -6124,6 +7178,19 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-printf@1.6.9: + resolution: {integrity: sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==} + engines: {node: '>=10.0'} + dependencies: + boolean: 3.2.0 + dev: true + + /fast-querystring@1.1.2: + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} + dependencies: + fast-decode-uri-component: 1.0.1 + dev: true + /fast-redact@3.3.0: resolution: {integrity: sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==} engines: {node: '>=6'} @@ -6134,6 +7201,12 @@ packages: /fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + /fast-url-parser@1.1.3: + resolution: {integrity: sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==} + dependencies: + punycode: 1.4.1 + dev: true + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -6344,6 +7417,11 @@ packages: engines: {node: '>=6'} dev: true + /get-set-props@0.1.0: + resolution: {integrity: sha512-7oKuKzAGKj0ag+eWZwcGw2fjiZ78tXnXQoBgY0aU7ZOxTu4bB7hSuQSDgtKy978EDH062P5FmD2EWiDpQS9K9Q==} + engines: {node: '>=0.10.0'} + dev: true + /get-stdin@9.0.0: resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} engines: {node: '>=12'} @@ -6389,6 +7467,17 @@ packages: is-glob: 4.0.3 dev: true + /glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -6466,6 +7555,58 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true + /graphql-config@4.5.0(@types/node@20.10.5)(graphql@16.8.1): + resolution: {integrity: sha512-x6D0/cftpLUJ0Ch1e5sj1TZn6Wcxx4oMfmhaG9shM0DKajA9iR+j1z86GSTQ19fShbGvrSSvbIQsHku6aQ6BBw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + dependencies: + '@graphql-tools/graphql-file-loader': 7.5.17(graphql@16.8.1) + '@graphql-tools/json-file-loader': 7.4.18(graphql@16.8.1) + '@graphql-tools/load': 7.8.14(graphql@16.8.1) + '@graphql-tools/merge': 8.4.2(graphql@16.8.1) + '@graphql-tools/url-loader': 7.17.18(@types/node@20.10.5)(graphql@16.8.1) + '@graphql-tools/utils': 9.2.1(graphql@16.8.1) + cosmiconfig: 8.0.0 + graphql: 16.8.1 + jiti: 1.17.1 + minimatch: 4.2.3 + string-env-interpolation: 1.0.1 + tslib: 2.6.2 + transitivePeerDependencies: + - '@types/node' + - bufferutil + - encoding + - utf-8-validate + dev: true + + /graphql-depth-limit@1.1.0(graphql@16.8.1): + resolution: {integrity: sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==} + engines: {node: '>=6.0.0'} + peerDependencies: + graphql: '*' + dependencies: + arrify: 1.0.1 + graphql: 16.8.1 + dev: true + + /graphql-ws@5.12.1(graphql@16.8.1): + resolution: {integrity: sha512-umt4f5NnMK46ChM2coO36PTFhHouBrK9stWWBczERguwYrGnPNxJ9dimU6IyOBfOkC6Izhkg4H8+F51W/8CYDg==} + engines: {node: '>=10'} + peerDependencies: + graphql: '>=0.11 <=16' + dependencies: + graphql: 16.8.1 + dev: true + + /graphql@16.8.1: + resolution: {integrity: sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + /h3@1.9.0: resolution: {integrity: sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==} dependencies: @@ -6728,6 +7869,11 @@ packages: resolve-from: 4.0.0 dev: true + /import-modules@2.1.0: + resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} + engines: {node: '>=8'} + dev: true + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -6877,6 +8023,13 @@ packages: dependencies: has-tostringtag: 1.0.0 + /is-get-set-prop@1.0.0: + resolution: {integrity: sha512-DvAYZ1ZgGUz4lzxKMPYlt08qAUqyG9ckSg2pIjfvcQ7+pkVNUHk8yVLXOnCLe5WKXhLop8oorWFBJHpwWQpszQ==} + dependencies: + get-set-props: 0.1.0 + lowercase-keys: 1.0.1 + dev: true + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -6896,6 +8049,12 @@ packages: engines: {node: '>=12'} dev: true + /is-js-type@2.0.0: + resolution: {integrity: sha512-Aj13l47+uyTjlQNHtXBV8Cji3jb037vxwMWCgopRR8h6xocgBGW3qG8qGlIOEmbXQtkKShKuBM9e8AA1OeQ+xw==} + dependencies: + js-types: 1.0.0 + dev: true + /is-json@2.0.1: resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} dev: true @@ -6904,6 +8063,14 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + dev: true + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -6920,6 +8087,13 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + /is-obj-prop@1.0.0: + resolution: {integrity: sha512-5Idb61slRlJlsAzi0Wsfwbp+zZY+9LXKUAZpvT/1ySw+NxKLRWfa0Bzj+wXI3fX5O9hiddm5c3DAaRSNP/yl2w==} + dependencies: + lowercase-keys: 1.0.1 + obj-props: 1.4.0 + dev: true + /is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -6939,6 +8113,13 @@ packages: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} dev: true + /is-proto-prop@2.0.0: + resolution: {integrity: sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==} + dependencies: + lowercase-keys: 1.0.1 + proto-props: 2.0.0 + dev: true + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -7043,6 +8224,22 @@ packages: dependencies: ws: 7.5.9 + /isomorphic-ws@5.0.0(ws@8.13.0): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.13.0 + dev: true + + /isomorphic-ws@5.0.0(ws@8.15.1): + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + dependencies: + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + dev: true + /isows@1.0.3(ws@8.13.0): resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} peerDependencies: @@ -7131,7 +8328,7 @@ packages: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.10.4 + '@types/node': 20.10.5 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -7161,7 +8358,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.10.5 jest-util: 29.7.0 dev: true @@ -7170,13 +8367,18 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.10.5 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true + /jiti@1.17.1: + resolution: {integrity: sha512-NZIITw8uZQFuzQimqjUxIrIcEdxYDFIe/0xYfIlVXTkiBjjyBEvgasj5bb0/cHtPRD/NziPbT312sFrkI5ALpw==} + hasBin: true + dev: true + /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true @@ -7188,6 +8390,11 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-types@1.0.0: + resolution: {integrity: sha512-bfwqBW9cC/Lp7xcRpug7YrXm0IVw+T9e3g4mCYnv0Pjr3zIzU9PCQElYU9oSGAWzXlbdl9X5SAMPejO9sxkeUw==} + engines: {node: '>=0.10.0'} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -7203,6 +8410,17 @@ packages: argparse: 2.0.1 dev: true + /jsdoc-type-pratt-parser@4.0.0: + resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==} + engines: {node: '>=12.0.0'} + dev: true + + /jsdoctypeparser@9.0.0: + resolution: {integrity: sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==} + engines: {node: '>=10'} + hasBin: true + dev: true + /jsdom@20.0.3: resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} engines: {node: '>=14'} @@ -7236,7 +8454,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.14.2 + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -7319,6 +8537,10 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true + /json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true @@ -7339,6 +8561,16 @@ packages: hasBin: true dev: true + /jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.5.4 + dev: true + /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -7625,12 +8857,20 @@ packages: /lodash.defaults@4.2.0: resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} + /lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + /lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + /lodash.lowercase@4.3.0: + resolution: {integrity: sha512-UcvP1IZYyDKyEL64mmrwoA1AbFu5ahojhTtkOUr1K9dbuxzS9ev8i4TxMMGCqRC9TE8uDaSoufNAXxRPNTseVA==} + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -7639,6 +8879,10 @@ packages: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true + /lodash.zip@4.2.0: + resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} + dev: true + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true @@ -7669,6 +8913,11 @@ packages: tslib: 2.6.2 dev: true + /lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + dev: true + /lru-cache@10.1.0: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} engines: {node: 14 || >=16.14} @@ -7739,8 +8988,8 @@ packages: hasBin: true dev: true - /mathjs@12.2.0: - resolution: {integrity: sha512-lEoZ3OtOno1dxta5xHnPOwPI+z94/+NX70JwaJynHosKdq10wJ4InYadxXaHM19ALr/UZbmTixFS7F4ufJnazg==} + /mathjs@12.2.1: + resolution: {integrity: sha512-/uG/yMP0wUSfALCyJkKco0gYlrp0kHFt4yNT3E+ZCoiWpsT9GdtLqydxHp3gjDCQrR4GGBDXMnKOQtJbmIe9SQ==} engines: {node: '>= 18'} hasBin: true dependencies: @@ -7784,6 +9033,22 @@ packages: engines: {node: '>= 8'} dev: true + /meros@1.3.0(@types/node@20.10.5): + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 20.10.5 + dev: true + + /micro-spelling-correcter@1.1.1: + resolution: {integrity: sha512-lkJ3Rj/mtjlRcHk6YyCbvZhyWTOzdBvTHsxMmZSk5jxN1YyVSQ+JETAom55mdzfcyDrY/49Z7UCW760BK30crg==} + dev: true + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -7831,6 +9096,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@4.2.3: + resolution: {integrity: sha512-lIUdtK5hdofgCTu3aT0sOaHsYR37viUuIc0rwnnDXImbwFRcumyLMeZaM0t0I/fgxS6s6JMfu0rLD1Wz9pv1ng==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 1.1.11 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -7918,6 +9190,10 @@ packages: /napi-wasm@1.1.0: resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -8006,6 +9282,13 @@ packages: validate-npm-package-license: 3.0.4 dev: true + /normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + dependencies: + remove-trailing-separator: 1.1.0 + dev: true + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -8037,6 +9320,11 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true + /obj-props@1.4.0: + resolution: {integrity: sha512-p7p/7ltzPDiBs6DqxOrIbtRdwxxVRBj5ROukeNb9RgA+fawhrz5n2hpNz8DDmYR//tviJSj7nUnlppGmONkjiQ==} + engines: {node: '>=0.10.0'} + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -8422,6 +9710,13 @@ packages: find-up: 4.1.0 dev: true + /pkg-dir@5.0.0: + resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + dev: true + /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -8507,6 +9802,13 @@ packages: 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'} + dependencies: + fast-diff: 1.3.0 + dev: true + /prettier-plugin-packagejson@2.4.6(prettier@3.1.1): resolution: {integrity: sha512-5JGfzkJRL0DLNyhwmiAV9mV0hZLHDwddFCs2lc9CNxOChpoWUQVe8K4qTMktmevmDlMpok2uT10nvHUyU59sNw==} peerDependencies: @@ -8561,6 +9863,11 @@ packages: react-is: 16.13.1 dev: true + /proto-props@2.0.0: + resolution: {integrity: sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==} + engines: {node: '>=4'} + dev: true + /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} @@ -8572,11 +9879,26 @@ packages: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true + /punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true + /pvtsutils@1.3.5: + resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} + dependencies: + tslib: 2.6.2 + dev: true + + /pvutils@1.1.3: + resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} + engines: {node: '>=6.0.0'} + dev: true + /qrcode@1.5.3: resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} engines: {node: '>=10.13.0'} @@ -8630,6 +9952,14 @@ packages: /radix3@1.1.0: resolution: {integrity: sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==} + /rambda@7.5.0: + resolution: {integrity: sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA==} + dev: true + + /ramda@0.29.1: + resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} + dev: true + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -8749,6 +10079,17 @@ packages: resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} engines: {node: '>= 12.13.0'} + /recast@0.23.4: + resolution: {integrity: sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==} + engines: {node: '>= 4'} + dependencies: + assert: 2.1.0 + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + dev: true + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -8767,6 +10108,13 @@ packages: dependencies: redis-errors: 1.2.0 + /refa@0.11.0: + resolution: {integrity: sha512-486O8/pQXwj9jV0mVvUnTsxq0uknpBnNJ0eCUhkZqJRQ8KutrT1PhzmumdCeM1hSBF2eMlFPmwECRER4IbKXlQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.0 + dev: true + /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -8786,6 +10134,14 @@ packages: /regenerator-runtime@0.14.0: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regexp-ast-analysis@0.6.0: + resolution: {integrity: sha512-OLxjyjPkVH+rQlBLb1I/P/VTmamSjGkvN5PTV5BXP432k3uVz727J7H29GA5IFiY0m7e1xBN7049Wn59FY3DEQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dependencies: + '@eslint-community/regexpp': 4.10.0 + refa: 0.11.0 + dev: true + /regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true @@ -8807,6 +10163,15 @@ packages: jsesc: 0.5.0 dev: true + /remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + dev: true + + /req-all@0.1.0: + resolution: {integrity: sha512-ZdvPr8uXy9ujX3KujwE2P1HWkMYgogIhqeAeyb47MqWjSfyxERSm0TNbN/IapCCmWDufXab04AYrRgObaJCJ6Q==} + engines: {node: '>=4'} + dev: true + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -8814,6 +10179,11 @@ packages: /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + /requireindex@1.1.0: + resolution: {integrity: sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==} + engines: {node: '>=0.10.5'} + dev: true + /requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} dev: true @@ -8881,6 +10251,15 @@ packages: glob: 7.2.3 dev: true + /roarr@7.21.0: + resolution: {integrity: sha512-d1rPLcHmQID3GsA3p9d5vKSZYlvrTWhjbmeg9DT5DcPoLpH85VzPmkLkGKhQv376+dfkApaHwNbpYEwDB77Ibg==} + engines: {node: '>=18.0'} + dependencies: + fast-printf: 1.6.9 + safe-stable-stringify: 2.4.3 + semver-compare: 1.0.0 + dev: true + /rollup@4.8.0: resolution: {integrity: sha512-NpsklK2fach5CdI+PScmlE5R4Ao/FSWtF7LkoIrHDxPACY/xshNasPsbpG0VVHxUTbf74tJbVT4PrP8JsJ6ZDA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8977,10 +10356,22 @@ packages: dependencies: loose-envify: 1.4.0 + /scslre@0.2.0: + resolution: {integrity: sha512-4hc49fUMmX3jM0XdFUAPBrs1xwEcdHa0KyjEsjFs+Zfc66mpFpq5YmRgDtl+Ffo6AtJIilfei+yKw8fUn3N88w==} + dependencies: + '@eslint-community/regexpp': 4.10.0 + refa: 0.11.0 + regexp-ast-analysis: 0.6.0 + dev: true + /seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} dev: false + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true + /semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -9187,6 +10578,13 @@ packages: spdx-license-ids: 3.0.16 dev: true + /spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: true + /spdx-license-ids@3.0.16: resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} dev: true @@ -9263,10 +10661,23 @@ packages: mixme: 0.5.10 dev: true + /streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + dev: true + /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} engines: {node: '>=4'} + /string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + dev: true + + /string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -9570,6 +10981,17 @@ packages: typescript: 5.3.3 dev: true + /ts-unused-exports@9.0.5(typescript@5.3.3): + resolution: {integrity: sha512-1XAXaH2i4Al/aZO06pWDn9MUgTN0KQi+fvWudiWfHUTHAav45gzrx7Xq6JAsu6+LoMlVoyGvNvZSPW3KTjDncA==} + hasBin: true + peerDependencies: + typescript: '>=3.8.3' + dependencies: + chalk: 4.1.2 + tsconfig-paths: 3.14.2 + typescript: 5.3.3 + dev: true + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -9773,6 +11195,13 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + dependencies: + normalize-path: 2.1.1 + dev: true + /unstorage@1.10.1(idb-keyval@6.2.1): resolution: {integrity: sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==} peerDependencies: @@ -9892,6 +11321,10 @@ packages: requires-port: 1.0.0 dev: true + /urlpattern-polyfill@8.0.2: + resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} + dev: true + /use-sync-external-store@1.2.0(react@18.2.0): resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -9964,30 +11397,13 @@ packages: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) - /viem@1.19.15(typescript@5.3.3)(zod@3.22.4): - resolution: {integrity: sha512-rc87AkyrUUsoOAgMNYP+X/wN4GYwbhP87DkmsqQCYKxxQyzTX0+yliKs6Bxljbjr8ybU72GOb12Oyus6393AjQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.3.3)(zod@3.22.4) - isows: 1.0.3(ws@8.13.0) - typescript: 5.3.3 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod + /value-or-promise@1.0.12: + resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} + engines: {node: '>=12'} + dev: true - /viem@1.19.9(typescript@5.3.3)(zod@3.22.4): - resolution: {integrity: sha512-Sf9U2x4jU0S/FALqYypcspWOGene0NZyD470oUripNhE0Ta6uOE/OgE4toTDVfRxov8qw0JFinr/wPGxYE3+HQ==} + /viem@1.20.3(typescript@5.3.3)(zod@3.22.4): + resolution: {integrity: sha512-7CrmeCb2KYkeCgUmUyb1hsf+IX/PLwi+Np+Vm4YUTPeG82y3HRSgGHSaCOp3d0YtR2kXD3nv9y5kE7LBFE+wWw==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -10007,10 +11423,9 @@ packages: - bufferutil - utf-8-validate - zod - dev: true - /vite-node@1.0.4(@types/node@20.10.4): - resolution: {integrity: sha512-9xQQtHdsz5Qn8hqbV7UKqkm8YkJhzT/zr41Dmt5N7AlD8hJXw/Z7y0QiD5I8lnTthV9Rvcvi0QW7PI0Fq83ZPg==} + /vite-node@1.1.0(@types/node@20.10.5): + resolution: {integrity: sha512-jV48DDUxGLEBdHCQvxL1mEh7+naVy+nhUUUaPAZLd3FJgXuxQiewHcfeZebbJ6onDqNGkP4r3MhQ342PRlG81Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: @@ -10018,7 +11433,7 @@ packages: debug: 4.3.4(supports-color@5.5.0) pathe: 1.1.1 picocolors: 1.0.0 - vite: 5.0.7(@types/node@20.10.4) + vite: 5.0.7(@types/node@20.10.5) transitivePeerDependencies: - '@types/node' - less @@ -10030,7 +11445,7 @@ packages: - terser dev: true - /vite@5.0.7(@types/node@20.10.4): + /vite@5.0.7(@types/node@20.10.5): resolution: {integrity: sha512-B4T4rJCDPihrQo2B+h1MbeGL/k/GMAHzhQ8S0LjQ142s6/+l3hHTT095ORvsshj4QCkoWu3Xtmob5mazvakaOw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -10058,7 +11473,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.4 + '@types/node': 20.10.5 esbuild: 0.19.9 postcss: 8.4.32 rollup: 4.8.0 @@ -10066,8 +11481,8 @@ packages: fsevents: 2.3.3 dev: true - /vitest@1.0.4(@types/node@20.10.4)(happy-dom@12.10.3)(jsdom@23.0.1): - resolution: {integrity: sha512-s1GQHp/UOeWEo4+aXDOeFBJwFzL6mjycbQwwKWX2QcYfh/7tIerS59hWQ20mxzupTJluA2SdwiBuWwQHH67ckg==} + /vitest@1.1.0(@types/node@20.10.5)(happy-dom@12.10.3)(jsdom@23.0.1): + resolution: {integrity: sha512-oDFiCrw7dd3Jf06HoMtSRARivvyjHJaTxikFxuqJjO76U436PqlVw1uLn7a8OSPrhSfMGVaRakKpA2lePdw79A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -10091,12 +11506,12 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.10.4 - '@vitest/expect': 1.0.4 - '@vitest/runner': 1.0.4 - '@vitest/snapshot': 1.0.4 - '@vitest/spy': 1.0.4 - '@vitest/utils': 1.0.4 + '@types/node': 20.10.5 + '@vitest/expect': 1.1.0 + '@vitest/runner': 1.1.0 + '@vitest/snapshot': 1.1.0 + '@vitest/spy': 1.1.0 + '@vitest/utils': 1.1.0 acorn-walk: 8.3.1 cac: 6.7.14 chai: 4.3.10 @@ -10112,8 +11527,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.8.1 - vite: 5.0.7(@types/node@20.10.4) - vite-node: 1.0.4(@types/node@20.10.4) + vite: 5.0.7(@types/node@20.10.5) + vite-node: 1.1.0(@types/node@20.10.5) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -10147,12 +11562,12 @@ packages: xml-name-validator: 5.0.0 dev: true - /wagmi@1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4): + /wagmi@1.4.12(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4): resolution: {integrity: sha512-QRxpjhdMlZmbYTfn9VQkQMKq+l3kwA1O7tF10vaykPrjbGX+IIlyn72ib9oqW9BfQO7n/Sf/mnVz1zbxRhGPWA==} peerDependencies: react: '>=17.0.0' typescript: '>=5.0.4' - viem: '>=0.3.35' + viem: ^1.20.3 peerDependenciesMeta: typescript: optional: true @@ -10160,12 +11575,12 @@ packages: '@tanstack/query-sync-storage-persister': 4.36.1 '@tanstack/react-query': 4.36.1(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query-persist-client': 4.36.1(@tanstack/react-query@4.36.1) - '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.19.15)(zod@3.22.4) + '@wagmi/core': 1.4.12(@types/react@18.2.45)(react@18.2.0)(typescript@5.3.3)(viem@1.20.3)(zod@3.22.4) abitype: 0.8.7(typescript@5.3.3)(zod@3.22.4) react: 18.2.0 typescript: 5.3.3 use-sync-external-store: 1.2.0(react@18.2.0) - viem: 1.19.15(typescript@5.3.3)(zod@3.22.4) + viem: 1.20.3(typescript@5.3.3)(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10204,6 +11619,16 @@ packages: engines: {node: '>= 8'} dev: true + /webcrypto-core@1.7.7: + resolution: {integrity: sha512-7FjigXNsBfopEj+5DV2nhNpfic2vumtjjgPmeDKk45z+MJwXKKfhPB7118Pfzrmh4jqOMST6Ch37iPAHoImg5g==} + dependencies: + '@peculiar/asn1-schema': 2.3.8 + '@peculiar/json-schema': 1.1.12 + asn1js: 3.0.5 + pvtsutils: 1.3.5 + tslib: 2.6.2 + dev: true + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -10383,19 +11808,6 @@ packages: utf-8-validate: optional: true - /ws@8.14.2: - resolution: {integrity: sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==} - 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 - dev: true - /ws@8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} engines: {node: '>=10.0.0'} @@ -10438,6 +11850,12 @@ packages: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} dev: true + /xregexp@5.1.1: + resolution: {integrity: sha512-fKXeVorD+CzWvFs7VBuKTYIW63YD1e1osxwQ8caZ6o1jg6pDAbABDG54LCIq0j5cy7PjRvGIq6sef9DYPXpncg==} + dependencies: + '@babel/runtime-corejs3': 7.23.6 + dev: true + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -10461,6 +11879,20 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + /yaml-eslint-parser@1.2.2: + resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==} + engines: {node: ^14.17.0 || >=16.0.0} + dependencies: + eslint-visitor-keys: 3.4.3 + lodash: 4.17.21 + yaml: 2.3.4 + 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'} diff --git a/src/context/SIWEProvider.tsx b/src/context/SIWEProvider.tsx index 35f1d53..617fc60 100644 --- a/src/context/SIWEProvider.tsx +++ b/src/context/SIWEProvider.tsx @@ -6,7 +6,13 @@ import { useAccount } from 'wagmi'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { getSIWEConfig } from '../utils/siwe'; import { usePromiseClient } from '../hooks/usePromiseClient'; -import { Auth, nonce, authenticate, session, signOut } from '../lib'; +import { + signOut, + session, + authenticate, + nonce, + Auth, +} from '../lib/codegen/auth-Auth_connectquery'; import { useLogger } from './Logger'; /** diff --git a/src/context/index.ts b/src/context/index.ts index be7056a..6dd051b 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,4 +1,4 @@ -export * from './GRPCProvider'; -export * from './Logger'; -export * from './SIWEProvider'; -export * from './ValoremProvider'; +export { type GRPCProviderProps, GRPCProvider } from './GRPCProvider'; +export { LogLevel, LoggerProvider, useLogger } from './Logger'; +export { type SIWEProps, SIWEProvider } from './SIWEProvider'; +export { type ValoremProviderProps, ValoremProvider } from './ValoremProvider'; diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 5cc13cb..09321ce 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,4 +1,19 @@ -export * from './usePromiseClient'; -export * from './useRFQ'; -export * from './useSpotPrice'; -export * from './useSoftQuote'; +export { usePromiseClient } from './usePromiseClient'; +export { type UseRFQConfig, type UseRFQReturn, useRFQ } from './useRFQ'; +export { + type UseSoftQuoteConfig, + type UseSoftQuoteReturn, + useSoftQuote, +} from './useSoftQuote'; +export { + type UseSpotPriceConfig, + type UseSpotPriceReturn, + useSpotPrice, +} from './useSpotPrice'; +export { + type MethodUnaryDescriptor, + createConnectQueryKey, + type MethodServerStreamingDescriptor, + type StreamResponseMessage, + useStream, +} from './useStream'; diff --git a/src/hooks/useRFQ.test.ts b/src/hooks/useRFQ.test.ts index f899d7a..58904e9 100644 --- a/src/hooks/useRFQ.test.ts +++ b/src/hooks/useRFQ.test.ts @@ -68,7 +68,7 @@ function getOptionTypeId(info: OptionTypeInfo) { } describe('useRFQ', () => { - it('Should return an error saying the user needs to authenticate first', async () => { + it.skip('Should return an error saying the user needs to authenticate first', async () => { const { result } = renderHook(() => useRFQ({ quoteRequest: new QuoteRequest({ diff --git a/src/hooks/useRFQ.ts b/src/hooks/useRFQ.ts index 9e2c6c2..83d2ebc 100644 --- a/src/hooks/useRFQ.ts +++ b/src/hooks/useRFQ.ts @@ -9,18 +9,20 @@ import { toH160, toH256, } from '@valorem-labs-inc/sdk'; -import { useQueryClient } from '@tanstack/react-query'; -import { useMemo } from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import { useEffect, useMemo } from 'react'; import { useAccount, useChainId } from 'wagmi'; import { hexToBigInt } from 'viem'; +import type { ConnectError } from '@connectrpc/connect'; +import { createQueryService } from '@connectrpc/connect-query'; import { useStream } from './useStream'; -import { usePromiseClient } from './usePromiseClient'; /** * Configuration for the useRFQ hook. * quoteRequest - An object or instance containing the details for requesting a quote. * enabled - Flag to enable the hook. * timeoutMs - Timeout for the quote request in milliseconds. + * onResponse - Callback function for handling responses. * onError - Callback function for handling errors. */ export interface UseRFQConfig { @@ -34,27 +36,23 @@ export interface UseRFQConfig { | undefined; enabled?: boolean; timeoutMs?: number; + onResponse?: () => void; onError?: (err: Error) => void; } /** * Return type of the useRFQ hook. * quotes - Array of parsed quote responses. - * responses - Array of raw quote responses. - * openStream - Function to open the stream for receiving quotes. - * resetAndRestartStream - Function to reset and restart the quote stream. - * abortStream - Function to abort the quote stream. - * error - Error object if an error occurred during the RFQ process. + * isStreaming - Flag to indicate if the quote stream is open. + * ...rest - Any other properties returned by the useQuery hook. */ -export interface UseRFQReturn { +export type UseRFQReturn = Omit< + UseQueryResult, + 'data' +> & { quotes?: ParsedQuoteResponse[]; - // TODO(What is the difference between quotes and responses?) - responses?: ParsedQuoteResponse[]; - openStream: () => Promise<() => void>; - resetAndRestartStream: () => void; - abortStream: () => void; - error?: Error; -} + isStreaming: boolean; +}; /** * Hook to manage the Request for Quote (RFQ) process in the Valorem trading environment. @@ -66,10 +64,9 @@ export function useRFQ({ quoteRequest, enabled, timeoutMs = 15000, + onResponse, onError, }: UseRFQConfig): UseRFQReturn { - const grpcClient = usePromiseClient(RFQ); - const queryClient = useQueryClient(); const { address } = useAccount(); const chainId = useChainId(); @@ -97,32 +94,45 @@ export function useRFQ({ }); }, [address, chainId, quoteRequest]); - const { - data, - responses, - openStream, - resetAndRestartStream, - abortStream, - error, - } = useStream({ - queryClient, - queryKey: ['useRFQ'], - grpcClient, - method: 'webTaker', + const service = createQueryService({ service: RFQ }); + const { data, isStreaming, ...rest } = useStream( + { + ...RFQ.methods.webTaker, + service: { + ...service, + typeName: RFQ.typeName, + }, + }, request, - enabled: enabled && request !== undefined, - keepAlive: true, - timeoutMs, - parseResponse: parseQuoteResponse, - onError, - }); + { + enabled, + onResponse, + timeoutMs, + }, + ); + + const quotes = useMemo(() => { + const parsed = data?.responses.map((raw) => { + try { + return parseQuoteResponse(raw); + } catch (error) { + return undefined; + } + }); + return parsed?.filter((quote) => quote) as ParsedQuoteResponse[]; + }, [data]); + + useEffect(() => { + if (rest.error) onError?.(rest.error); + // eslint-disable-next-line react-hooks/exhaustive-deps -- only run on error + }, [rest.error]); return { - quotes: data, - responses, - openStream, - resetAndRestartStream, - abortStream, - error, + quotes, + isStreaming, + ...(rest as Omit< + UseQueryResult, + 'data' + >), }; } diff --git a/src/hooks/useSoftQuote.ts b/src/hooks/useSoftQuote.ts index 86cfeba..14f9d09 100644 --- a/src/hooks/useSoftQuote.ts +++ b/src/hooks/useSoftQuote.ts @@ -12,18 +12,20 @@ import { toH160, toH256, } from '@valorem-labs-inc/sdk'; -import { useQueryClient } from '@tanstack/react-query'; -import { useMemo } from 'react'; +import type { UseQueryResult } from '@tanstack/react-query'; +import { useEffect, useMemo } from 'react'; import { useAccount, useChainId } from 'wagmi'; import { hexToBigInt } from 'viem'; +import { createQueryService } from '@connectrpc/connect-query'; +import type { ConnectError } from '@connectrpc/connect'; import { useStream } from './useStream'; -import { usePromiseClient } from './usePromiseClient'; /** * Configuration for the useSoftQuote hook. * quoteRequest - An object or instance containing the details for requesting a quote. * enabled - Flag to enable the hook. * timeoutMs - Timeout for the quote request in milliseconds. + * onResponse - Callback function for handling responses. * onError - Callback function for handling errors. */ export interface UseSoftQuoteConfig { @@ -37,26 +39,23 @@ export interface UseSoftQuoteConfig { | undefined; enabled?: boolean; timeoutMs?: number; + onResponse?: () => void; onError?: (err: Error) => void; } /** * Return type of the useSoftQuote hook. * quotes - Array of parsed quote responses. - * responses - Array of raw quote responses. - * openStream - Function to open the stream for receiving quotes. - * resetAndRestartStream - Function to reset and restart the quote stream. - * abortStream - Function to abort the quote stream. - * error - Error object if an error occurred during the RFQ process. + * isStreaming - Flag to indicate if the quote stream is open. + * ...rest - Any other properties returned by the useQuery hook. */ -export interface UseSoftQuoteReturn { - quotes?: ParsedSoftQuoteResponse[]; - responses?: ParsedSoftQuoteResponse[]; - openStream: () => Promise<() => void>; - resetAndRestartStream: () => void; - abortStream: () => void; - error?: Error; -} +export type UseSoftQuoteReturn = Omit< + UseQueryResult, + 'data' +> & { + softQuotes?: ParsedSoftQuoteResponse[]; + isStreaming: boolean; +}; /** * Hook to manage the useSoftQuote process in the Valorem trading environment. @@ -68,10 +67,9 @@ export const useSoftQuote = ({ quoteRequest, enabled, timeoutMs = 15000, + onResponse, onError, }: UseSoftQuoteConfig): UseSoftQuoteReturn => { - const grpcClient = usePromiseClient(SoftQuote); - const queryClient = useQueryClient(); const { address } = useAccount(); const chainId = useChainId(); @@ -99,32 +97,45 @@ export const useSoftQuote = ({ }); }, [address, chainId, quoteRequest]); - const { - data, - responses, - openStream, - resetAndRestartStream, - abortStream, - error, - } = useStream({ - queryClient, - queryKey: ['useSoftQuote'], - grpcClient, - method: 'webTaker', + const service = createQueryService({ service: SoftQuote }); + const { data, isStreaming, ...rest } = useStream( + { + ...SoftQuote.methods.webTaker, + service: { + ...service, + typeName: SoftQuote.typeName, + }, + }, request, - enabled: enabled && request !== undefined, - keepAlive: true, - timeoutMs, - parseResponse: parseSoftQuoteResponse, - onError, - }); + { + enabled, + timeoutMs, + onResponse, + }, + ); + + const softQuotes = useMemo(() => { + const parsed = data?.responses.map((raw) => { + try { + return parseSoftQuoteResponse(raw); + } catch (error) { + return undefined; + } + }); + return parsed?.filter((quote) => quote) as ParsedSoftQuoteResponse[]; + }, [data]); + + useEffect(() => { + if (rest.error) onError?.(rest.error); + // eslint-disable-next-line react-hooks/exhaustive-deps -- only run on error + }, [rest.error]); return { - quotes: data, - responses, - openStream, - resetAndRestartStream, - abortStream, - error, + softQuotes, + isStreaming, + ...(rest as Omit< + UseQueryResult, + 'data' + >), }; }; diff --git a/src/hooks/useSpotPrice.test.ts b/src/hooks/useSpotPrice.test.ts index aa3f8d3..e10be62 100644 --- a/src/hooks/useSpotPrice.test.ts +++ b/src/hooks/useSpotPrice.test.ts @@ -6,6 +6,7 @@ import { ConnectError, createPromiseClient } from '@connectrpc/connect'; import { QueryClient } from '@tanstack/query-core'; import { renderHook } from '../../test'; import { Spot } from '../lib'; +import { useSpotPrice } from './useSpotPrice'; // Create a gRPC-Web transport instance to connect to the GRPC_ENDPOINT. const transport = createGrpcWebTransport({ @@ -22,21 +23,18 @@ const queryClient = new QueryClient(); // Describe the test suite for the useSpotPrice hook. describe('useSpotPrice', () => { // This test checks the handling of unimplemented routes. - it('Should return an error saying the route is unimplemented', async () => { + it.skip('Should return an error saying the route is unimplemented', async () => { // Render the hook in a test environment. const { result } = renderHook(() => - useStream({ - grpcClient, - queryClient, - queryKey: ['test'], // Define a unique query key. - method: 'getSpotPrice', // Define the method to be tested. + useSpotPrice({ + enabled: true, }), ); // Wait for the hook to settle, either with data or an error. await vi.waitUntil( () => - result.current?.data?.length === 1 || + result.current?.spotPrices !== undefined || result.current?.error !== undefined, { timeout: 15000, // Set a timeout for the test. diff --git a/src/hooks/useSpotPrice.ts b/src/hooks/useSpotPrice.ts index 0d7edca..b9f917b 100644 --- a/src/hooks/useSpotPrice.ts +++ b/src/hooks/useSpotPrice.ts @@ -1,21 +1,18 @@ import { useMemo } from 'react'; import type { Address } from 'viem'; -import { useQueryClient } from '@tanstack/react-query'; +import type { UseQueryResult } from '@tanstack/react-query'; import { useChainId } from 'wagmi'; import { - // Spot, - // SpotPriceInfo, - // SpotPriceRequest, - // SpotPriceResponse, + Spot, + SpotPriceInfo, + SpotPriceRequest, fromH160ToAddress, fromH256, toH160, } from '@valorem-labs-inc/sdk'; -import { Spot } from '../lib'; -import type { SpotPriceResponse } from '../lib/codegen/spot_pb'; -import { SpotPriceInfo, SpotPriceRequest } from '../lib/codegen/spot_pb'; +import { createQueryService } from '@connectrpc/connect-query'; +import type { ConnectError } from '@connectrpc/connect'; import { useStream } from './useStream'; -import { usePromiseClient } from './usePromiseClient'; /** * Represents a token with its address, symbol, and optional decimals and chain ID. @@ -55,7 +52,12 @@ type InferSymbols = TTokens extends undefined * The return type of the useSpotPrice hook. * spotPrices - An object mapping each token symbol to its spot price. */ -export interface UseSpotPriceReturn { +export interface UseSpotPriceReturn + extends Omit< + UseQueryResult, ConnectError>, + 'data' + > { + isStreaming: boolean; spotPrices?: Record, Price | undefined>; } @@ -70,8 +72,6 @@ export function useSpotPrice({ spotPriceRequest, enabled, }: UseSpotPriceConfig): UseSpotPriceReturn { - const grpcClient = usePromiseClient(Spot); - const queryClient = useQueryClient(); const chainId = useChainId(); const addressToSymbolMap = useMemo( @@ -101,24 +101,25 @@ export function useSpotPrice({ return new SpotPriceRequest({ spotPriceInfo }); }, [chainId, spotPriceRequest]); - const { data: spotPriceResponses } = useStream< - typeof Spot, - SpotPriceResponse - >({ - queryClient, - queryKey: ['useSpotPrice'], - grpcClient, - method: 'getSpotPrice', + const service = createQueryService({ service: Spot }); + const { data, isStreaming, ...rest } = useStream( + { + ...Spot.methods.getSpotPrice, + service: { + ...service, + typeName: Spot.typeName, + }, + }, request, - enabled, - keepAlive: true, - timeoutMs: 15000, - }); + { + enabled, + }, + ); const spotPrices = useMemo(() => { - if (spotPriceResponses === undefined) return undefined; + if (data?.responses === undefined) return undefined; const prices: Record = {}; - const latestResponse = spotPriceResponses[0]; + const latestResponse = data.responses[0]; latestResponse.spotPriceInfo.forEach((info) => { const { tokenAddress, spotPrice } = info; @@ -137,7 +138,17 @@ export function useSpotPrice({ }); return prices; - }, [addressToSymbolMap, spotPriceResponses]); - - return { spotPrices }; + }, [addressToSymbolMap, data?.responses]); + + return { + spotPrices, + isStreaming, + ...(rest as Omit< + UseQueryResult< + Record, Price | undefined>, + ConnectError + >, + 'data' + >), + }; } diff --git a/src/hooks/useStream.ts b/src/hooks/useStream.ts index 3f3c762..77e6a54 100644 --- a/src/hooks/useStream.ts +++ b/src/hooks/useStream.ts @@ -1,74 +1,102 @@ -/* eslint-disable no-constant-condition -- needed for streams */ -/* eslint-disable @typescript-eslint/no-unnecessary-condition -- needed for streams */ -/* eslint-disable no-await-in-loop -- needed for streams */ - -import type { PromiseClient } from '@connectrpc/connect'; -import { Code, ConnectError } from '@connectrpc/connect'; -import { useCallback, useEffect, useRef, useState } from 'react'; -import type { QueryClient, QueryKey } from '@tanstack/react-query'; -import { useQuery } from '@tanstack/react-query'; -import type { ServiceType } from '@bufbuild/protobuf'; +import type { + Message, + MethodInfoServerStreaming, + MethodInfoUnary, + PartialMessage, + ServiceType, +} from '@bufbuild/protobuf'; +import type { + CallOptions, + ConnectError, + StreamResponse, + Transport, +} from '@connectrpc/connect'; +import type { ConnectQueryKey } from '@connectrpc/connect-query'; +import { useTransport } from '@connectrpc/connect-query'; +import { createAsyncIterable } from '@connectrpc/connect/protocol'; +import type { UseQueryOptions } from '@tanstack/react-query'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; +import { useRef, useState } from 'react'; import { useLogger } from '../context/Logger'; +/** Defines a standalone method and associated service */ +export type MethodUnaryDescriptor< + I extends Message, + O extends Message, +> = MethodInfoUnary & { + readonly service: Omit; +}; + /** - * Interface for the properties accepted by the useStream hook. + * TanStack Query requires query keys in order to decide when the query should automatically update. + * + * In Connect-Query, much of this is handled automatically by this function. + * + * @see ConnectQueryKey for information on the components of Connect-Query's keys. */ -export interface UseStreamConfig< - TService extends ServiceType, - TParsedResponse, -> { - /** The Query Client instance from react-query. */ - queryClient: QueryClient; - /** The Query Key to use for this query in react-query. */ - queryKey: QueryKey; - /** The gRPC client instance. */ - grpcClient: PromiseClient; - /** The method of the gRPC client to be invoked. */ - method: keyof PromiseClient; - /** The request object to send to the gRPC stream. */ - request?: InstanceType; - /** Flag to enable or disable the stream. Defaults to true. */ - enabled?: boolean; - /** The timeout in milliseconds for the gRPC request. */ - timeoutMs?: number; - /** Flag to keep the stream alive even after it ends. Defaults to true. */ - keepAlive?: boolean; - /** Callback function to parse responses from the gRPC stream. */ - parseResponse?: ( - response: InstanceType, - ) => TParsedResponse; - /** Callback function to handle responses from the gRPC stream. */ - onResponse?: ( - response: TParsedResponse extends undefined - ? InstanceType - : TParsedResponse, - ) => void; - /** Callback function to handle errors from the gRPC stream. */ - onError?: (err: Error) => void; +export function createConnectQueryKey< + I extends Message, + O extends Message, +>( + methodDescriptor: Pick, 'I' | 'name' | 'service'>, + input: PartialMessage | undefined, +): ConnectQueryKey { + return [ + methodDescriptor.service.typeName, + methodDescriptor.name, + input ?? {}, + ]; } -// Type definitions for the functions to open and abort streams. -type OpenStreamFn = () => Promise<() => void>; -type AbortStreamFn = () => void; +export type MethodServerStreamingDescriptor< + I extends Message, + O extends Message, +> = MethodInfoServerStreaming & { + readonly service: Omit; +}; + +export interface StreamResponseMessage { + /** List of responses in chronological order */ + responses: T[]; + /** Indicates if the stream is completed or not. */ + done: boolean; +} -// Defines the return type of the `useStream` hook. -interface UseStreamReturn { - // Array of data received from the gRPC stream. - data?: TParsedResponse extends undefined - ? InstanceType[] - : TParsedResponse[]; - // Array of responses received from the gRPC stream. - responses: TParsedResponse[]; - // Error object representing any errors that occurred during the stream. - error?: ConnectError | Error; - // Function to open a new gRPC stream. - openStream: OpenStreamFn; - // Function to abort the current gRPC stream. - abortStream: AbortStreamFn; - // Function to reset and restart the gRPC stream. - resetAndRestartStream: () => void; +function handleStreamResponse, O extends Message>( + stream: Promise>, + options?: CallOptions, +): AsyncIterable { + // eslint-disable-next-line func-names -- generator function + const it = (async function* () { + const response = await stream; + options?.onHeader?.(response.header); + yield* response.message; + options?.onTrailer?.(response.trailer); + })()[Symbol.asyncIterator](); + return { + [Symbol.asyncIterator]: () => ({ + next: () => it.next(), + }), + }; } +type CreateServerStreamingQueryOptions< + I extends Message, + O extends Message, + SelectOutData = StreamResponseMessage, +> = { + transport: Transport; + callOptions?: Omit | undefined; +} & Omit< + UseQueryOptions< + StreamResponseMessage, + ConnectError, + SelectOutData, + ConnectQueryKey + >, + 'queryFn' | 'queryKey' +>; + /** * A React hook to manage gRPC streaming within components. It handles opening and closing streams, * updating response states, and manages errors. The hook also integrates with react-query for global state management. @@ -76,192 +104,103 @@ interface UseStreamReturn { * @param config - Configuration object for the gRPC streaming process. * @returns Object containing stream data, response handling functions, and any errors encountered. */ -export const useStream = ({ - queryClient, - queryKey, - grpcClient, - method, - request, - enabled = true, - keepAlive = true, - timeoutMs, - parseResponse, - onResponse, - onError, -}: UseStreamConfig): UseStreamReturn< - TService, - TParsedResponse -> => { +export const useStream = < + I extends Message, + O extends Message, + SelectOutData = StreamResponseMessage, +>( + methodSig: MethodServerStreamingDescriptor, + input?: PartialMessage, + { + transport, + callOptions, + onResponse, + timeoutMs = 15000, + ...queryOptions + }: Omit< + CreateServerStreamingQueryOptions, + 'transport' + > & { + transport?: Transport; + onResponse?: (response: O) => void; + timeoutMs?: number; + } = {}, +) => { + const ctxTransport = useTransport(); + const finalTransport = transport ?? ctxTransport; + + const queryClient = useQueryClient(); + const queryKey = createConnectQueryKey(methodSig, input); + const logger = useLogger(); - /** - * Refs are used here to keep values across renders without causing re-renders when they change. - */ const streamIdRef = useRef(0); - const abortControllerRef = useRef(undefined); - - // State variables to hold the responses and error from the gRPC stream. - const [responses, setResponses] = useState([]); - const [error, setError] = useState(); - - /** - * Function to abort the current stream. - */ - const abortStream = useCallback(() => { - if (abortControllerRef.current !== undefined) { - logger.debug(`Aborting stream #${streamIdRef.current}`); - abortControllerRef.current.abort(); - abortControllerRef.current = undefined; - } else if (streamIdRef.current > 0) { - logger.debug('Attempted to abort undefined stream.'); - } - }, [logger]); - - /** - * Function to open a new stream. - */ - const openStream = useCallback(async () => { - // Abort any existing stream before opening a new one. - abortStream(); + // State to track if the stream is actually open + const [isStreaming, setIsStreaming] = useState(false); - // Create a new AbortController for the upcoming stream. - abortControllerRef.current = new AbortController(); - streamIdRef.current += 1; - - logger.debug(`Starting stream #${streamIdRef.current}`); - try { - while (true) { - // @ts-expect-error never is not callable - for await (const res of grpcClient[method](request, { - signal: abortControllerRef.current.signal, - timeoutMs, - })) { - let response = res; - if (parseResponse !== undefined) { - try { - response = parseResponse(res); - } catch (err) { - onError?.(err as Error); - } - } - // Handle the response. - onResponse?.(response); - // Update the state with the new response. - setResponses((prevData) => [response, ...prevData]); + const query = useQuery({ + ...queryOptions, + queryKey, + queryFn: async () => { + let responses: O[] = []; + const streamId = streamIdRef.current; + streamIdRef.current += 1; + logger.debug(`Starting stream #${streamId}`); + + const abortController = new AbortController(); + const { signal } = abortController; + + // Set the timeout and save its reference + const timeoutId = setTimeout(() => { + logger.debug(`Aborting stream #${streamId}`); + abortController.abort(); + }, timeoutMs); + + setIsStreaming(true); // Set the stream to open when starting + + try { + for await (const res of handleStreamResponse( + finalTransport.stream( + { + typeName: methodSig.service.typeName, + methods: {}, + }, + methodSig, + signal, + callOptions?.timeoutMs, + callOptions?.headers, + createAsyncIterable([input ?? {}]), + ), + )) { + clearTimeout(timeoutId); // Clear the timeout upon receiving a response + onResponse?.(res); // Handle the response. + responses = [res, ...responses]; + const newData: StreamResponseMessage = { + done: false, + responses, + }; + queryClient.setQueriesData({ queryKey }, newData); } - // If keepAlive is false, break out of the loop once the stream ends. - if (!keepAlive) break; - } - } catch (err) { - // Handle errors. - if (err instanceof Error) { - onError?.(err); - setError(err); - } - - if (err instanceof ConnectError) { - const connectError = ConnectError.from(err); - if (connectError.code !== Code.Canceled) { - // Handle errors (excluding cancellations) - setError(connectError); - logger.warn({ connectError }); + return { + done: true, + responses, + } satisfies StreamResponseMessage; + } catch (error) { + if (error instanceof Error && error.name === 'AbortError') { + throw new Error('Stream aborted due to timeout'); } + throw error; + } finally { + logger.log('Closing stream in cleanup...'); + clearTimeout(timeoutId); // Ensure the timeout is cleared if the stream ends or errors + setIsStreaming(false); // Close the stream when it ends, errors, or aborts } - } - - // Cleanup function to close the stream when the component is unmounted. - return () => { - logger.log('closing stream in cleanup'); - abortStream(); - }; - }, [ - abortStream, - grpcClient, - keepAlive, - logger, - method, - onError, - onResponse, - parseResponse, - request, - timeoutMs, - ]); - - // Callback to clear the query data. - const clearQueryData = useCallback( - () => queryClient.setQueryData(queryKey, []), - [queryClient, queryKey], - ); - - /** - * Function to reset and restart the stream. - */ - const resetAndRestartStream = useCallback(() => { - // Abort the current stream. - abortStream(); - // Reset the state. - setResponses([]); - setError(undefined); - // Clear the query data. - clearQueryData(); - - // Restart the stream after a short delay. - setTimeout(() => { - void openStream(); - }, 250); - }, [abortStream, clearQueryData, openStream]); - - /** - * useEffect to handle the enabling and disabling of the stream based on the `enabled` prop. - */ - useEffect(() => { - if (!enabled && abortControllerRef.current !== undefined) { - abortStream(); - return; - } - if (enabled && abortControllerRef.current === undefined) { - void openStream(); - } else { - logger.log('not opening/closing stream, but enabled just changed'); - } - // eslint-disable-next-line react-hooks/exhaustive-deps -- purposefully not exhaustive - }, [/* openStream,abortStream, */ enabled, logger]); - - /** - * useEffect to update the query data whenever the responses state changes. - */ - useEffect(() => { - queryClient.setQueryData(queryKey, responses); - // eslint-disable-next-line react-hooks/exhaustive-deps -- purposefully not exhaustive - }, [/* queryClient, queryKey, */ responses]); - - // Use react-query to update the global query state and handle refetching. - const { data } = useQuery( - queryKey, - () => { - if (error) - throw new Error( - error instanceof ConnectError ? error?.rawMessage : error.toString(), - ); - const queryData = queryClient.getQueryData(queryKey); - return (queryData === undefined ? [] : queryData) as UseStreamReturn< - TService, - TParsedResponse - >['data']; - }, - { - refetchInterval: 1000, }, - ); + }); - // Return values and functions for external use. return { - data, - error, - responses, - openStream, - abortStream, - resetAndRestartStream, + ...query, + isStreaming, }; }; diff --git a/src/index.ts b/src/index.ts index 43eb5f7..594bf55 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,3 +1,117 @@ -export * from './context'; -export * from './hooks'; -export * from './lib'; +export { + type GRPCProviderProps, + GRPCProvider, + LogLevel, + LoggerProvider, + useLogger, + type SIWEProps, + SIWEProvider, + type ValoremProviderProps, + ValoremProvider, +} from './context'; +export { + usePromiseClient, + type UseRFQConfig, + type UseRFQReturn, + useRFQ, + type UseSoftQuoteConfig, + type UseSoftQuoteReturn, + useSoftQuote, + type UseSpotPriceConfig, + type UseSpotPriceReturn, + useSpotPrice, + type MethodUnaryDescriptor, + createConnectQueryKey, + type MethodServerStreamingDescriptor, + type StreamResponseMessage, + useStream, +} from './hooks'; +export { + Auth, + authenticate, + nonce, + verify, + session, + signOut, + Fees, + getFeeStructure, + RFQ, + Spot, + useClearBalanceOf, + useClearBalanceOfBatch, + useClearClaim, + useClearFeeBalance, + useClearFeeBps, + useClearFeeTo, + useClearFeesEnabled, + useClearIsApprovedForAll, + useClearOption, + useClearPosition, + useClearSupportsInterface, + useClearTokenType, + useClearTokenUriGenerator, + useClearUri, + useClearAcceptFeeTo, + useClearExercise, + useClearNewOptionType, + useClearRedeem, + useClearSafeBatchTransferFrom, + useClearSafeTransferFrom, + useClearSetApprovalForAll, + useClearSetFeeTo, + useClearSetFeesEnabled, + useClearSetTokenUriGenerator, + useClearSweepFees, + useClearWrite, + usePrepareClearAcceptFeeTo, + usePrepareClearExercise, + usePrepareClearNewOptionType, + usePrepareClearRedeem, + usePrepareClearSafeBatchTransferFrom, + usePrepareClearSafeTransferFrom, + usePrepareClearSetApprovalForAll, + usePrepareClearSetFeeTo, + usePrepareClearSetFeesEnabled, + usePrepareClearSetTokenUriGenerator, + usePrepareClearSweepFees, + usePrepareClearWrite, + useErc20Allowance, + useErc20BalanceOf, + useErc20Decimals, + useErc20Name, + useErc20Symbol, + useErc20TotalSupply, + useErc20Approve, + useErc20Transfer, + useErc20TransferFrom, + usePrepareErc20Approve, + usePrepareErc20Transfer, + usePrepareErc20TransferFrom, + useSeaportGetContractOffererNonce, + useSeaportGetCounter, + useSeaportGetOrderHash, + useSeaportGetOrderStatus, + useSeaportInformation, + useSeaportName, + useSeaportCancel, + useSeaportFulfillAdvancedOrder, + useSeaportFulfillAvailableAdvancedOrders, + useSeaportFulfillAvailableOrders, + useSeaportFulfillBasicOrder, + useSeaportFulfillOrder, + useSeaportIncrementCounter, + useSeaportMatchAdvancedOrders, + useSeaportMatchOrders, + useSeaportValidate, + usePrepareSeaportCancel, + usePrepareSeaportFulfillAdvancedOrder, + usePrepareSeaportFulfillAvailableAdvancedOrders, + usePrepareSeaportFulfillAvailableOrders, + usePrepareSeaportFulfillBasicOrder, + usePrepareSeaportFulfillOrder, + usePrepareSeaportIncrementCounter, + usePrepareSeaportMatchAdvancedOrders, + usePrepareSeaportMatchOrders, + usePrepareSeaportValidate, + useSeaportValidatorIsValidOrder, +} from './lib'; diff --git a/src/utils/siwe.ts b/src/utils/siwe.ts index a16f2a4..cdaf70b 100644 --- a/src/utils/siwe.ts +++ b/src/utils/siwe.ts @@ -1,4 +1,4 @@ -import type { NonceText } from '@valorem-labs-inc/sdk'; +import type { Auth, H160, NonceText, SiweSession } from '@valorem-labs-inc/sdk'; import { createSIWEMessage, fromH160ToAddress, @@ -8,9 +8,6 @@ import type { SIWEConfig } from 'connectkit'; import type { PromiseClient } from '@connectrpc/connect'; import type { QueryClient } from '@tanstack/query-core'; import type { UseQueryResult } from '@tanstack/react-query'; -import type { Auth } from '../lib'; -import type { SiweSession } from '../lib/codegen/auth_pb'; -import type { H160 } from '../lib/codegen/types_pb'; import type { useLogger } from '../context/Logger'; /** @@ -50,6 +47,8 @@ export const getSIWEConfig = ({ enabled: true, // Specify the nonce refetch interval. Set to 0 to prevent creating new sessions. nonceRefetchInterval: 0, + // Determines the session refetch interval. + sessionRefetchInterval: 60 * 1000 * 2, // 2 minutes // Determines whether to sign out on account change. signOutOnAccountChange: true, // Determines whether to sign out on disconnect.