From 5e1a52511428c10d65904c651a3c146b8e6a219e Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Fri, 23 May 2025 15:40:33 -0300 Subject: [PATCH 01/33] chore: switch to pnpm and update Node.js to v20 --- .nvmrc | 2 +- package.json | 23 +- pnpm-lock.yaml | 12548 ++++++++++++++++++++++++++++ scripts/generateTradingSchemas.ts | 1 + yarn.lock | 11004 ------------------------ 5 files changed, 12565 insertions(+), 11013 deletions(-) create mode 100644 pnpm-lock.yaml delete mode 100644 yarn.lock diff --git a/.nvmrc b/.nvmrc index e2d5170d9..731231b5f 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v14.* \ No newline at end of file +v20.* \ No newline at end of file diff --git a/package.json b/package.json index 73518a093..d95383f44 100644 --- a/package.json +++ b/package.json @@ -14,28 +14,34 @@ }, "types": "dist/index.d.ts", "scripts": { - "prebuild": "rm -rf dist && yarn run codegen", + "prebuild": "rm -rf dist && pnpm run codegen", "build": "microbundle -f modern,esm,cjs", "start": "microbundle -f modern,esm,cjs watch", "copy-md-files": "npx cpx \"**/*.md\" dist", - "postbuild": "cp package.json dist && yarn copy-md-files && yarn run trading:generateSchemas", + "postbuild": "cp package.json dist && pnpm copy-md-files && pnpm run trading:generateSchemas", "lint": "eslint ./src", "format": "prettier --write \"src/**/*.+(ts|json)\"", "test": "jest", "test:coverage": "jest --coverage --json --outputFile=jest.results.json && cat ./coverage/lcov.info | coveralls", "test:coverage:html": "jest --silent=false --coverage --coverageReporters html", - "codegen": "npm run swagger:codegen && npm run typechain:codegen", - "prepare": "npm run build", - "prepublishOnly": "npm test && npm run lint", + "codegen": "pnpm run swagger:codegen && pnpm run typechain:codegen", + "prepare": "pnpm run build", + "prepublishOnly": "pnpm test && pnpm run lint", "graphql:codegen": "graphql-codegen --config graphql-codegen.yml", - "swagger:codegen": " openapi --input https://raw.githubusercontent.com/cowprotocol/services/v2.291.0/crates/orderbook/openapi.yml --output src/order-book/generated --exportServices false --exportCore false", + "swagger:codegen": "openapi --input https://raw.githubusercontent.com/cowprotocol/services/v2.291.0/crates/orderbook/openapi.yml --output src/order-book/generated --exportServices false --exportCore false", "typechain:codegen": "typechain --target ethers-v5 --out-dir ./src/common/generated './abi/*.json'", "trading:generateSchemas": "ts-node scripts/generateTradingSchemas.ts" }, "dependencies": { "@cowprotocol/app-data": "^3.1.0", "@cowprotocol/contracts": "^1.8.0", + "@ethersproject/abi": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/contracts": "^5.8.0", + "@ethersproject/providers": "^5.8.0", + "@ethersproject/units": "^5.8.0", + "@ethersproject/wallet": "^5.8.0", "@openzeppelin/merkle-tree": "^1.0.8", "@weiroll/weiroll.js": "^0.3.0", "cross-fetch": "^3.2.0", @@ -105,5 +111,6 @@ "crypto", "typescript", "subgraph" - ] -} \ No newline at end of file + ], + "packageManager": "pnpm@10.8.0+sha512.0e82714d1b5b43c74610193cb20734897c1d00de89d0e18420aebc5977fa13d780a9cb05734624e81ebd81cc876cd464794850641c48b9544326b5622ca29971" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..4db8f99e9 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,12548 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@cowprotocol/app-data': + specifier: ^3.1.0 + version: 3.1.0(cross-fetch@3.2.0)(ethers@5.8.0)(ipfs-only-hash@4.0.0)(multiformats@9.9.0) + '@cowprotocol/contracts': + specifier: ^1.8.0 + version: 1.8.0(ethers@5.8.0) + '@ethersproject/abi': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/abstract-signer': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/constants': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/contracts': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/providers': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/units': + specifier: ^5.8.0 + version: 5.8.0 + '@ethersproject/wallet': + specifier: ^5.8.0 + version: 5.8.0 + '@openzeppelin/merkle-tree': + specifier: ^1.0.8 + version: 1.0.8 + '@weiroll/weiroll.js': + specifier: ^0.3.0 + version: 0.3.0 + cross-fetch: + specifier: ^3.2.0 + version: 3.2.0 + deepmerge: + specifier: ^4.3.1 + version: 4.3.1 + ethers: + specifier: ^5.8.0 + version: 5.8.0 + exponential-backoff: + specifier: ^3.1.2 + version: 3.1.2 + graphql: + specifier: ^16.11.0 + version: 16.11.0 + graphql-request: + specifier: ^4.3.0 + version: 4.3.0(graphql@16.11.0) + limiter: + specifier: ^3.0.0 + version: 3.0.0 + devDependencies: + '@babel/plugin-proposal-nullish-coalescing-operator': + specifier: ^7.18.6 + version: 7.18.6(@babel/core@7.27.1) + '@babel/plugin-proposal-private-methods': + specifier: ^7.18.6 + version: 7.18.6(@babel/core@7.27.1) + '@babel/preset-env': + specifier: ^7.27.2 + version: 7.27.2(@babel/core@7.27.1) + '@babel/preset-typescript': + specifier: ^7.27.1 + version: 7.27.1(@babel/core@7.27.1) + '@eslint/js': + specifier: ^9.26.0 + version: 9.27.0 + '@graphql-codegen/cli': + specifier: 5.0.6 + version: 5.0.6(@types/node@22.15.21)(graphql@16.11.0)(typescript@5.8.3) + '@graphql-codegen/typescript': + specifier: 4.1.6 + version: 4.1.6(graphql@16.11.0) + '@graphql-codegen/typescript-operations': + specifier: ^4.6.1 + version: 4.6.1(graphql@16.11.0) + '@typechain/ethers-v5': + specifier: ^11.1.2 + version: 11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0)(ethers@5.8.0)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/node': + specifier: ^22.15.17 + version: 22.15.21 + babel-plugin-inline-import: + specifier: ^3.0.0 + version: 3.0.0 + coveralls: + specifier: ^3.1.1 + version: 3.1.1 + cpx: + specifier: ^1.5.0 + version: 1.5.0 + eslint: + specifier: ^9.26.0 + version: 9.27.0(jiti@2.4.2) + eslint-plugin-unused-imports: + specifier: ^4.1.4 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + microbundle: + specifier: ^0.15.1 + version: 0.15.1(@types/babel__core@7.20.5)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + openapi-typescript-codegen: + specifier: ^0.29.0 + version: 0.29.0 + prettier: + specifier: ^3.5.3 + version: 3.5.3 + ts-json-schema-generator: + specifier: ^2.4.0 + version: 2.4.0 + ts-mockito: + specifier: ^2.6.1 + version: 2.6.1 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + tsc-watch: + specifier: ^6.2.1 + version: 6.3.1(typescript@5.8.3) + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.8.3) + typescript: + specifier: ^5.8.3 + version: 5.8.3 + typescript-eslint: + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + +packages: + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@apidevtools/json-schema-ref-parser@11.9.3': + resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} + engines: {node: '>= 16'} + + '@ardatan/relay-compiler@12.0.3': + resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} + hasBin: true + peerDependencies: + graphql: '*' + + '@assemblyscript/loader@0.9.4': + resolution: {integrity: sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.27.2': + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.1': + resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.27.1': + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.27.1': + resolution: {integrity: sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.4': + resolution: {integrity: sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.27.1': + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.27.1': + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.27.1': + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.27.1': + resolution: {integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.27.1': + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.27.1': + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.27.1': + resolution: {integrity: sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.27.1': + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.27.2': + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': + resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': + resolution: {integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': + resolution: {integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': + resolution: {integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1': + resolution: {integrity: sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.12.1': + resolution: {integrity: sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.27.1': + resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.27.1': + resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.27.1': + resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.27.1': + resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.27.1': + resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.27.1': + resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.27.1': + resolution: {integrity: sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.27.1': + resolution: {integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.27.1': + resolution: {integrity: sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.27.1': + resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.27.1': + resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.27.1': + resolution: {integrity: sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.27.1': + resolution: {integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.27.1': + resolution: {integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.27.1': + resolution: {integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.27.1': + resolution: {integrity: sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.27.1': + resolution: {integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.27.1': + resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.27.1': + resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.27.1': + resolution: {integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.27.1': + resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1': + resolution: {integrity: sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.27.1': + resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.27.1': + resolution: {integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.27.1': + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.27.1': + resolution: {integrity: sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.27.1': + resolution: {integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': + resolution: {integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.27.1': + resolution: {integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': + resolution: {integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.27.1': + resolution: {integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.27.2': + resolution: {integrity: sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.27.1': + resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.27.1': + resolution: {integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.27.1': + resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.27.1': + resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.27.1': + resolution: {integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.27.1': + resolution: {integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.27.1': + resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.27.1': + resolution: {integrity: sha512-p9+Vl3yuHPmkirRrg021XiP+EETmPMQTLr6Ayjj85RLNEbb3Eya/4VI0vAdzQG9SEAl2Lnt7fy5lZyMzjYoZQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.27.1': + resolution: {integrity: sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.27.1': + resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.27.1': + resolution: {integrity: sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.27.1': + resolution: {integrity: sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.27.1': + resolution: {integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.27.1': + resolution: {integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.27.1': + resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.27.1': + resolution: {integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.27.1': + resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.27.1': + resolution: {integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.27.1': + resolution: {integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.27.1': + resolution: {integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.27.1': + resolution: {integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1': + resolution: {integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.27.1': + resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.27.1': + resolution: {integrity: sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.27.1': + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.27.1': + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cowprotocol/app-data@3.1.0': + resolution: {integrity: sha512-hdIWp6fGz/vx3gdoJgwd8Dx8rYAblpZEBiXss5mNzgF/LBb21VVhF075sDl9oxyesKuJayKjgiAgaFiZYVgblA==} + peerDependencies: + cross-fetch: ^3.x + ethers: ^5.0.0 + ipfs-only-hash: ^4.x + multiformats: ^9.x + + '@cowprotocol/contracts@1.8.0': + resolution: {integrity: sha512-rMEHo1UBB6k4kRoWejHZNGggg6IBVt7vAd8x0FhEvjxhbq3zlAex61f9HpAcDExJNuvfwwDjsOc/7UGztCzhSw==} + peerDependencies: + ethers: ^5.4.0 + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@envelop/core@5.2.3': + resolution: {integrity: sha512-KfoGlYD/XXQSc3BkM1/k15+JQbkQ4ateHazeZoWl9P71FsLTDXSjGy6j7QqfhpIDSbxNISqhPMfZHYSbDFOofQ==} + engines: {node: '>=18.0.0'} + + '@envelop/instrumentation@1.0.0': + resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} + engines: {node: '>=18.0.0'} + + '@envelop/types@5.2.1': + resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} + engines: {node: '>=18.0.0'} + + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.20.0': + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.2': + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.14.0': + resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.27.0': + resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.3.1': + resolution: {integrity: sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@ethereumjs/common@3.2.0': + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/tx@4.2.0': + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.8.0': + resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==} + + '@ethersproject/abstract-provider@5.8.0': + resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==} + + '@ethersproject/abstract-signer@5.8.0': + resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==} + + '@ethersproject/address@5.8.0': + resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==} + + '@ethersproject/base64@5.8.0': + resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==} + + '@ethersproject/basex@5.8.0': + resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==} + + '@ethersproject/bignumber@5.8.0': + resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} + + '@ethersproject/bytes@5.8.0': + resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} + + '@ethersproject/constants@5.8.0': + resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} + + '@ethersproject/contracts@5.8.0': + resolution: {integrity: sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==} + + '@ethersproject/hash@5.8.0': + resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + + '@ethersproject/hdnode@5.8.0': + resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==} + + '@ethersproject/json-wallets@5.8.0': + resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==} + + '@ethersproject/keccak256@5.8.0': + resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} + + '@ethersproject/logger@5.8.0': + resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} + + '@ethersproject/networks@5.8.0': + resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==} + + '@ethersproject/pbkdf2@5.8.0': + resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==} + + '@ethersproject/properties@5.8.0': + resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==} + + '@ethersproject/providers@5.8.0': + resolution: {integrity: sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==} + + '@ethersproject/random@5.8.0': + resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} + + '@ethersproject/rlp@5.8.0': + resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + + '@ethersproject/sha2@5.8.0': + resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + + '@ethersproject/signing-key@5.8.0': + resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + + '@ethersproject/solidity@5.8.0': + resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==} + + '@ethersproject/strings@5.8.0': + resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} + + '@ethersproject/transactions@5.8.0': + resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} + + '@ethersproject/units@5.8.0': + resolution: {integrity: sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==} + + '@ethersproject/wallet@5.8.0': + resolution: {integrity: sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==} + + '@ethersproject/web@5.8.0': + resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==} + + '@ethersproject/wordlists@5.8.0': + resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==} + + '@fastify/busboy@3.1.1': + resolution: {integrity: sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw==} + + '@graphql-codegen/add@5.0.3': + resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/cli@5.0.6': + resolution: {integrity: sha512-1r5dtZ2l1jiCF/4qLMTcT7mEoWWWeqQlmn7HcPHgnV/OXIEodwox7XRGAmOKUygoabRjFF3S0jd0TWbkq5Otsw==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + '@parcel/watcher': ^2.1.0 + 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 + peerDependenciesMeta: + '@parcel/watcher': + optional: true + + '@graphql-codegen/client-preset@4.8.1': + resolution: {integrity: sha512-XLF2V7WKLnepvrGE44JP+AvjS+Oz9AT0oYgTl/6d9btQ+2VYFcmwQPjNAuMVHipqE9I6h8hSEfH9hUrzUptB1g==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-sock: ^1.0.0 + peerDependenciesMeta: + graphql-sock: + optional: true + + '@graphql-codegen/core@4.0.2': + resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/gql-tag-operations@4.0.17': + resolution: {integrity: sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/plugin-helpers@5.1.0': + resolution: {integrity: sha512-Y7cwEAkprbTKzVIe436TIw4w03jorsMruvCvu0HJkavaKMQbWY+lQ1RIuROgszDbxAyM35twB5/sUvYG5oW+yg==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/schema-ast@4.1.0': + resolution: {integrity: sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/typed-document-node@5.1.1': + resolution: {integrity: sha512-Bp/BrMZDKRwzuVeLv+pSljneqONM7gqu57ZaV34Jbncu2hZWMRDMfizTKghoEwwZbRCYYfJO9tA0sYVVIfI1kg==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/typescript-operations@4.6.1': + resolution: {integrity: sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-sock: ^1.0.0 + peerDependenciesMeta: + graphql-sock: + optional: true + + '@graphql-codegen/typescript@4.1.6': + resolution: {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-codegen/visitor-plugin-common@5.8.0': + resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + '@graphql-hive/signal@1.0.0': + resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} + engines: {node: '>=18.0.0'} + + '@graphql-tools/apollo-engine-loader@8.0.20': + resolution: {integrity: sha512-m5k9nXSyjq31yNsEqDXLyykEjjn3K3Mo73oOKI+Xjy8cpnsgbT4myeUJIYYQdLrp7fr9Y9p7ZgwT5YcnwmnAbA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/batch-execute@9.0.16': + resolution: {integrity: sha512-sLAzEPrmrMTJrlNqmmsc34DtMA//FsoTsGC3V5bHA+EnNlwbwhsSQBSNXvIwsPLRSRwSjGKOpDG7KSxldDe2Rg==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/code-file-loader@8.1.20': + resolution: {integrity: sha512-GzIbjjWJIc04KWnEr8VKuPe0FA2vDTlkaeub5p4lLimljnJ6C0QSkOyCUnFmsB9jetQcHm0Wfmn/akMnFUG+wA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/delegate@10.2.18': + resolution: {integrity: sha512-UynhjLwBZUapjNSHJ7FhGMd7/sRjqB7nk6EcYDZFWQkACTaQKa14Vkv2y2O6rEu61xQxP3/E1+fr/mLn46Zf9A==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/documents@1.0.1': + resolution: {integrity: sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-common@0.0.4': + resolution: {integrity: sha512-SEH/OWR+sHbknqZyROCFHcRrbZeUAyjCsgpVWCRjqjqRbiJiXq6TxNIIOmpXgkrXWW/2Ev4Wms6YSGJXjdCs6Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-graphql-ws@2.0.5': + resolution: {integrity: sha512-gI/D9VUzI1Jt1G28GYpvm5ckupgJ5O8mi5Y657UyuUozX34ErfVdZ81g6oVcKFQZ60LhCzk7jJeykK48gaLhDw==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-http@1.3.3': + resolution: {integrity: sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor-legacy-ws@1.1.17': + resolution: {integrity: sha512-TvltY6eL4DY1Vt66Z8kt9jVmNcI+WkvVPQZrPbMCM3rv2Jw/sWvSwzUBezRuWX0sIckMifYVh23VPcGBUKX/wg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/executor@1.4.7': + resolution: {integrity: sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/git-loader@8.0.24': + resolution: {integrity: sha512-ypLC9N2bKNC0QNbrEBTbWKwbV607f7vK2rSGi9uFeGr8E29tWplo6or9V/+TM0ZfIkUsNp/4QX/zKTgo8SbwQg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/github-loader@8.0.20': + resolution: {integrity: sha512-Icch8bKZ1iP3zXCB9I0ded1hda9NPskSSalw7ZM21kXvLiOR5nZhdqPF65gCFkIKo+O4NR4Bp51MkKj+wl+vpg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/graphql-file-loader@8.0.19': + resolution: {integrity: sha512-kyEZL4rRJ5LelfCXL3GLgbMiu5Zd7memZaL8ZxPXGI7DA8On1e5IVBH3zZJwf7LzhjSVnPaHM7O/bRzGvTbXzQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/graphql-tag-pluck@8.3.19': + resolution: {integrity: sha512-LEw/6IYOUz48HjbWntZXDCzSXsOIM1AyWZrlLoJOrA8QAlhFd8h5Tny7opCypj8FO9VvpPFugWoNDh5InPOEQA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/import@7.0.18': + resolution: {integrity: sha512-1tw1/1QLB0n5bPWfIrhCRnrHIlbMvbwuifDc98g4FPhJ7OXD+iUQe+IpmD5KHVwYWXWhZOuJuq45DfV/WLNq3A==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/json-file-loader@8.0.18': + resolution: {integrity: sha512-JjjIxxewgk8HeMR3npR3YbOkB7fxmdgmqB9kZLWdkRKBxrRXVzhryyq+mhmI0Evzt6pNoHIc3vqwmSctG2sddg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/load@8.1.0': + resolution: {integrity: sha512-OGfOm09VyXdNGJS/rLqZ6ztCiG2g6AMxhwtET8GZXTbnjptFc17GtKwJ3Jv5w7mjJ8dn0BHydvIuEKEUK4ciYw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/merge@9.0.24': + resolution: {integrity: sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/optimize@2.0.0': + resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/prisma-loader@8.0.17': + resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/relay-operation-optimizer@7.0.19': + resolution: {integrity: sha512-xnjLpfzw63yIX1bo+BVh4j1attSwqEkUbpJ+HAhdiSUa3FOQFfpWgijRju+3i87CwhjBANqdTZbcsqLT1hEXig==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/schema@10.0.23': + resolution: {integrity: sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/url-loader@8.0.31': + resolution: {integrity: sha512-QGP3py6DAdKERHO5D38Oi+6j+v0O3rkBbnLpyOo87rmIRbwE6sOkL5JeHegHs7EEJ279fBX6lMt8ry0wBMGtyA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/utils@10.8.6': + resolution: {integrity: sha512-Alc9Vyg0oOsGhRapfL3xvqh1zV8nKoFUdtLhXX7Ki4nClaIJXckrA86j+uxEuG3ic6j4jlM1nvcWXRn/71AVLQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-tools/wrap@10.0.36': + resolution: {integrity: sha512-sLm9j/T6mlKklSMOCDjrGMi39MRAUzRXsc8tTugZZl0yJEtfU7tX1UaYJQNVsar7vkjLofaWtS7Jf6vcWgGYgQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@graphql-typed-document-node/core@3.2.0': + 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 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + + '@metamask/abi-utils@2.0.4': + resolution: {integrity: sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==} + engines: {node: '>=16.0.0'} + + '@metamask/superstruct@3.2.1': + resolution: {integrity: sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@9.3.0': + resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} + engines: {node: '>=16.0.0'} + + '@multiformats/base-x@4.0.1': + resolution: {integrity: sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==} + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/curves@1.9.0': + resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@openzeppelin/merkle-tree@1.0.8': + resolution: {integrity: sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@repeaterjs/repeater@3.0.6': + resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} + + '@rollup/plugin-alias@3.1.9': + resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} + engines: {node: '>=8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/plugin-babel@5.3.1': + resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} + engines: {node: '>= 10.0.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@types/babel__core': ^7.1.9 + rollup: ^1.20.0||^2.0.0 + peerDependenciesMeta: + '@types/babel__core': + optional: true + + '@rollup/plugin-commonjs@17.1.0': + resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^2.30.0 + + '@rollup/plugin-json@4.1.0': + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + + '@rollup/plugin-node-resolve@11.2.1': + resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@3.1.0': + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + + '@rollup/pluginutils@4.2.1': + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/base@1.2.5': + resolution: {integrity: sha512-9rE6EOVeIQzt5TSu4v+K523F8u6DhBsoZWPGKlnCshhlDhy0kJzUX4V+tr2dWmzF1GdekvThABoEQBGBQI7xZw==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@surma/rollup-plugin-off-main-thread@2.2.3': + resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@typechain/ethers-v5@11.1.2': + resolution: {integrity: sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ==} + peerDependencies: + '@ethersproject/abi': ^5.0.0 + '@ethersproject/providers': ^5.0.0 + ethers: ^5.1.3 + typechain: ^8.3.2 + typescript: '>=4.3.0' + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/estree@0.0.39': + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/js-yaml@4.0.9': + resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/long@4.0.2': + resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/node@22.15.21': + resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/resolve@1.17.1': + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@typescript-eslint/eslint-plugin@8.32.1': + resolution: {integrity: sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/parser@8.32.1': + resolution: {integrity: sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.32.1': + resolution: {integrity: sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.32.1': + resolution: {integrity: sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.32.1': + resolution: {integrity: sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.32.1': + resolution: {integrity: sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.32.1': + resolution: {integrity: sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.32.1': + resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@weiroll/weiroll.js@0.3.0': + resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} + engines: {node: '>=14'} + + '@whatwg-node/disposablestack@0.0.6': + resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/fetch@0.10.8': + resolution: {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/node-fetch@0.7.21': + resolution: {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} + engines: {node: '>=18.0.0'} + + '@whatwg-node/promise-helpers@1.3.2': + resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} + engines: {node: '>=16.0.0'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.14.1: + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + engines: {node: '>=0.4.0'} + hasBin: true + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@1.3.2: + resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + arr-diff@2.0.0: + resolution: {integrity: sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==} + engines: {node: '>=0.10.0'} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + + array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.2.1: + resolution: {integrity: sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==} + engines: {node: '>=0.10.0'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-each@1.0.6: + resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + asyncro@3.0.0: + resolution: {integrity: sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + auto-bind@4.0.0: + resolution: {integrity: sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==} + engines: {node: '>=8'} + + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-inline-import@3.0.0: + resolution: {integrity: sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ==} + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.13: + resolution: {integrity: sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.11.1: + resolution: {integrity: sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.4: + resolution: {integrity: sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-async-to-promises@0.8.18: + resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} + + babel-plugin-transform-replace-expressions@0.2.0: + resolution: {integrity: sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + binary-extensions@1.13.1: + resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} + engines: {node: '>=0.10.0'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@1.8.5: + resolution: {integrity: sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==} + engines: {node: '>=0.10.0'} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + brotli-size@4.0.0: + resolution: {integrity: sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA==} + engines: {node: '>= 10.16.0'} + + browserslist@4.24.5: + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001718: + resolution: {integrity: sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + change-case-all@1.0.15: + resolution: {integrity: sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ==} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + chokidar@1.7.0: + resolution: {integrity: sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cids@1.1.9: + resolution: {integrity: sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==} + engines: {node: '>=4.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by the multiformats module + + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + + command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@13.1.0: + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} + engines: {node: '>=18'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-with-sourcemaps@1.1.0: + resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + core-js-compat@3.42.0: + resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + coveralls@3.1.1: + resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} + engines: {node: '>=6'} + hasBin: true + + cpx@1.5.0: + resolution: {integrity: sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA==} + hasBin: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-inspect@1.0.1: + resolution: {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} + engines: {node: '>=16.0.0'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-declaration-sorter@6.4.1: + resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} + engines: {node: ^10 || ^12 || >=14} + peerDependencies: + postcss: ^8.0.9 + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@5.2.14: + resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano-utils@3.1.0: + resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + cssnano@5.1.15: + resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + dependency-graph@0.11.0: + resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} + engines: {node: '>= 0.6.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + + dset@3.1.4: + resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} + engines: {node: '>=4'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.1: + resolution: {integrity: sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q==} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.157: + resolution: {integrity: sha512-/0ybgsQd1muo8QlnuTpKwtl0oX5YMlUGbm8xyqgDU00motRkKFFbUJySAQBWcY79rVqNLWIWa87BGVGClwAB2w==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + err-code@3.0.1: + resolution: {integrity: sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-abstract@1.23.10: + resolution: {integrity: sha512-MtUbM072wlJNyeYAe0mhzrD+M6DIJa96CZAOBBrhDbgKnB4MApIKefcyAB1eOdYn8cUNZgvwBvEzdoAYsxgEIw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.27.0: + resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + + estree-walker@1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereum-cryptography@3.2.0: + resolution: {integrity: sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg==} + engines: {node: ^14.21.3 || >=16, npm: '>=9'} + + ethers@5.8.0: + resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-brackets@0.1.5: + resolution: {integrity: sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==} + engines: {node: '>=0.10.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expand-range@1.8.2: + resolution: {integrity: sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==} + engines: {node: '>=0.10.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + exponential-backoff@3.1.2: + resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@0.3.2: + resolution: {integrity: sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==} + engines: {node: '>=0.10.0'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbjs-css-vars@1.0.2: + resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} + + fbjs@3.0.5: + resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + figures@1.7.0: + resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==} + engines: {node: '>=0.10.0'} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filename-regex@2.0.1: + resolution: {integrity: sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==} + engines: {node: '>=0.10.0'} + + filesize@6.4.0: + resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} + engines: {node: '>= 0.4.0'} + + fill-range@2.2.4: + resolution: {integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==} + engines: {node: '>=0.10.0'} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-index@0.1.1: + resolution: {integrity: sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg==} + + find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + for-own@0.1.5: + resolution: {integrity: sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@3.0.3: + resolution: {integrity: sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generic-names@4.0.0: + resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + glob-base@0.3.0: + resolution: {integrity: sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==} + engines: {node: '>=0.10.0'} + + glob-parent@2.0.0: + resolution: {integrity: sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob2base@0.0.12: + resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} + engines: {node: '>= 0.10'} + + glob@11.0.2: + resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} + engines: {node: 20 || >=22} + hasBin: true + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + graphql-config@5.1.5: + resolution: {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} + engines: {node: '>= 16.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 + + graphql-request@4.3.0: + resolution: {integrity: sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==} + peerDependencies: + graphql: 14 - 16 + + graphql-request@6.1.0: + resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} + peerDependencies: + graphql: 14 - 16 + + graphql-tag@2.12.6: + resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} + engines: {node: '>=10'} + peerDependencies: + graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + + graphql-ws@6.0.5: + resolution: {integrity: sha512-HzYw057ch0hx2gZjkbgk1pur4kAtgljlWRP+Gccudqm3BRrTpExjWCQ9OHdIsq47Y6lHL++1lTvuQHhgRRcevw==} + engines: {node: '>=20'} + peerDependencies: + '@fastify/websocket': ^10 || ^11 + crossws: ~0.3 + graphql: ^15.10.1 || ^16 + uWebSockets.js: ^20 + ws: ^8 + peerDependenciesMeta: + '@fastify/websocket': + optional: true + crossws: + optional: true + uWebSockets.js: + optional: true + ws: + optional: true + + graphql@16.11.0: + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + gzip-size@3.0.0: + resolution: {integrity: sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w==} + engines: {node: '>=0.12.0'} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + hamt-sharding@2.0.1: + resolution: {integrity: sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==} + engines: {node: '>=10.0.0', npm: '>=6.0.0'} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + icss-replace-symbols@1.1.0: + resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.4: + resolution: {integrity: sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==} + engines: {node: '>= 4'} + + immutable@3.7.6: + resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} + engines: {node: '>=0.8.0'} + + import-cwd@3.0.0: + resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} + engines: {node: '>=8'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-from@3.0.0: + resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} + engines: {node: '>=8'} + + import-from@4.0.0: + resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==} + engines: {node: '>=12.2'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + interface-ipld-format@1.0.1: + resolution: {integrity: sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg==} + deprecated: This module has been superseded by the multiformats module + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ipfs-only-hash@4.0.0: + resolution: {integrity: sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA==} + hasBin: true + + ipfs-unixfs-importer@7.0.3: + resolution: {integrity: sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + + ipfs-unixfs@4.0.3: + resolution: {integrity: sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + + ipld-dag-pb@0.22.3: + resolution: {integrity: sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg==} + engines: {node: '>=6.0.0', npm: '>=3.0.0'} + deprecated: This module has been superseded by @ipld/dag-pb and multiformats + + is-absolute@1.0.0: + resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==} + engines: {node: '>=0.10.0'} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-binary-path@1.0.1: + resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} + engines: {node: '>=0.10.0'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-dotfile@1.0.3: + resolution: {integrity: sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==} + engines: {node: '>=0.10.0'} + + is-equal-shallow@0.1.3: + resolution: {integrity: sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==} + engines: {node: '>=0.10.0'} + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@1.0.0: + resolution: {integrity: sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} + engines: {node: '>= 0.4'} + + is-glob@2.0.1: + resolution: {integrity: sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lower-case@2.0.2: + resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@2.1.0: + resolution: {integrity: sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==} + engines: {node: '>=0.10.0'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@4.0.0: + resolution: {integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-posix-bracket@0.1.1: + resolution: {integrity: sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==} + engines: {node: '>=0.10.0'} + + is-primitive@2.0.0: + resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} + engines: {node: '>=0.10.0'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-relative@1.0.0: + resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==} + engines: {node: '>=0.10.0'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unc-path@1.0.0: + resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-upper-case@2.0.2: + resolution: {integrity: sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ==} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + it-all@1.0.6: + resolution: {integrity: sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==} + + it-batch@1.0.9: + resolution: {integrity: sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA==} + + it-first@1.0.7: + resolution: {integrity: sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==} + + it-parallel-batch@1.0.11: + resolution: {integrity: sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==} + + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-fetch-mock@3.0.3: + resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jose@5.10.0: + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-deterministic@1.0.12: + resolution: {integrity: sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g==} + engines: {node: '>= 4'} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json-to-pretty-yaml@1.2.2: + resolution: {integrity: sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A==} + engines: {node: '>= 0.2.0'} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + + lcov-parse@1.0.0: + resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + limiter@3.0.0: + resolution: {integrity: sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listr2@4.0.5: + resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} + engines: {node: '>=12'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + loader-utils@3.3.1: + resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} + engines: {node: '>= 12.13.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-driver@1.2.7: + resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} + engines: {node: '>=0.8.6'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lower-case-first@2.0.2: + resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + math-random@1.0.4: + resolution: {integrity: sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==} + + maxmin@2.1.0: + resolution: {integrity: sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw==} + engines: {node: '>=0.12'} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + meow@9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + + merge-options@3.0.4: + resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + meros@1.3.0: + resolution: {integrity: sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + microbundle@0.15.1: + resolution: {integrity: sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q==} + hasBin: true + + micromatch@2.3.11: + resolution: {integrity: sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==} + engines: {node: '>=0.10.0'} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multibase@4.0.6: + resolution: {integrity: sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + deprecated: This module has been superseded by the multiformats module + + multicodec@3.2.1: + resolution: {integrity: sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==} + deprecated: This module has been superseded by the multiformats module + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + multihashes@4.0.3: + resolution: {integrity: sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + + multihashing-async@2.1.4: + resolution: {integrity: sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==} + engines: {node: '>=12.0.0', npm: '>=6.0.0'} + + murmurhash3js-revisited@3.0.0: + resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} + engines: {node: '>=8.0.0'} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-cleanup@2.1.2: + resolution: {integrity: sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + number-is-nan@1.0.1: + resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==} + engines: {node: '>=0.10.0'} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.omit@2.0.1: + resolution: {integrity: sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==} + engines: {node: '>=0.10.0'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + openapi-typescript-codegen@0.29.0: + resolution: {integrity: sha512-/wC42PkD0LGjDTEULa/XiWQbv4E9NwLjwLjsaJ/62yOsoYhwvmBR31kPttn1DzQ2OlGe5stACcF/EIkZk43M6w==} + hasBin: true + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-filepath@1.0.2: + resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==} + engines: {node: '>=0.8'} + + parse-glob@3.0.4: + resolution: {integrity: sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==} + engines: {node: '>=0.10.0'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-extra@1.0.3: + resolution: {integrity: sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw==} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-root-regex@0.1.2: + resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==} + engines: {node: '>=0.10.0'} + + path-root@0.1.1: + resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} + engines: {node: '>=0.10.0'} + + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss-calc@8.2.4: + resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} + peerDependencies: + postcss: ^8.2.2 + + postcss-colormin@5.3.1: + resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-convert-values@5.1.3: + resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-comments@5.1.2: + resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-duplicates@5.1.0: + resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-empty@5.1.1: + resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-discard-overridden@5.1.0: + resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-merge-longhand@5.1.7: + resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-merge-rules@5.1.4: + resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-font-values@5.1.0: + resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-gradients@5.1.1: + resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-params@5.1.4: + resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-minify-selectors@5.2.1: + resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules@4.3.1: + resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} + peerDependencies: + postcss: ^8.0.0 + + postcss-normalize-charset@5.1.0: + resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-display-values@5.1.0: + resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-positions@5.1.1: + resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-repeat-style@5.1.1: + resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-string@5.1.0: + resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-timing-functions@5.1.0: + resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-unicode@5.1.1: + resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-url@5.1.0: + resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-normalize-whitespace@5.1.1: + resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-ordered-values@5.1.3: + resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-initial@5.1.2: + resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-reduce-transforms@5.1.0: + resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-svgo@5.1.0: + resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-unique-selectors@5.1.1: + resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + preserve@0.2.0: + resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} + engines: {node: '>=0.10.0'} + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@3.0.1: + resolution: {integrity: sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow==} + engines: {node: '>=0.10.0'} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-polyfill@8.3.0: + resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} + + promise.series@0.2.0: + resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} + engines: {node: '>=0.12'} + + promise@7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + protobufjs@6.11.4: + resolution: {integrity: sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==} + hasBin: true + + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + rabin-wasm@0.1.5: + resolution: {integrity: sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==} + hasBin: true + + randomatic@3.1.1: + resolution: {integrity: sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==} + engines: {node: '>= 0.10.0'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@2.2.1: + resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} + engines: {node: '>=0.10'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regex-cache@0.4.4: + resolution: {integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==} + engines: {node: '>=0.10.0'} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + regexpu-core@6.2.0: + resolution: {integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==} + engines: {node: '>=4'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + + relay-runtime@12.0.0: + resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} + + remedial@1.0.8: + resolution: {integrity: sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + remove-trailing-spaces@1.0.9: + resolution: {integrity: sha512-xzG7w5IRijvIkHIjDk65URsJJ7k4J95wmcArY5PRcmjldIOl7oTvG8+X2Ag690R7SfwiOcHrWZKVc1Pp5WIOzA==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-resolve@0.0.2: + resolution: {integrity: sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} + engines: {node: '>=10'} + + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rollup-plugin-bundle-size@1.0.3: + resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} + + rollup-plugin-postcss@4.0.2: + resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} + engines: {node: '>=10'} + peerDependencies: + postcss: 8.x + + rollup-plugin-terser@7.0.2: + resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser + peerDependencies: + rollup: ^2.0.0 + + rollup-plugin-typescript2@0.32.1: + resolution: {integrity: sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw==} + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' + + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true + + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} + engines: {node: '>=10.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-identifier@0.4.2: + resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + scuid@1.1.0: + resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + engines: {node: '>=10'} + hasBin: true + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + signedsource@1.0.0: + resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + sparse-array@1.3.2: + resolution: {integrity: sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + sponge-case@1.0.1: + resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-env-interpolation@1.0.1: + resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} + + string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + style-inject@0.3.0: + resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} + + stylehacks@5.1.1: + resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} + engines: {node: ^10 || ^12 || >=14.0} + peerDependencies: + postcss: ^8.2.15 + + subarg@1.0.0: + resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + swap-case@2.0.2: + resolution: {integrity: sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw==} + + sync-fetch@0.6.0-2: + resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} + engines: {node: '>=18'} + + table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + + terser@5.39.2: + resolution: {integrity: sha512-yEPUmWve+VA78bI71BW70Dh0TuV4HHd+I5SHOAfS1+QBOmvmCiiffgjR8ryyEd3KIfvPGFqoADt8LdQ6XpXIvg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + timeout-signal@2.0.0: + resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} + engines: {node: '>=16'} + + tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + + title-case@3.0.3: + resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + + ts-json-schema-generator@2.4.0: + resolution: {integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==} + engines: {node: '>=18.0.0'} + hasBin: true + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + ts-mockito@2.6.1: + resolution: {integrity: sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsc-watch@6.3.1: + resolution: {integrity: sha512-x1hNJ/m1Cln2OvNJJLPsnWI1pObm+Jq9jF6kyz0flEy/ym7Y9TvU9edg6lXLuGVkhDClwBWi8aWAFE0qgzEkzw==} + engines: {node: '>=12.12.0'} + hasBin: true + peerDependencies: + typescript: '*' + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typechain@8.3.2: + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.32.1: + resolution: {integrity: sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + engines: {node: '>=14.17'} + hasBin: true + + typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + + typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + + ua-parser-js@1.0.40: + resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} + hasBin: true + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + uint8arrays@2.1.10: + resolution: {integrity: sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + unc-path-regex@0.1.2: + resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} + engines: {node: '>=0.10.0'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unixify@1.0.0: + resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} + engines: {node: '>=0.10.0'} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + urlpattern-polyfill@10.1.0: + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + varint@5.0.2: + resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} + + varint@6.0.0: + resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + 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 + + x-path@0.0.2: + resolution: {integrity: sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.8.0: + resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@apidevtools/json-schema-ref-parser@11.9.3': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.0 + + '@ardatan/relay-compiler@12.0.3(graphql@16.11.0)': + dependencies: + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/runtime': 7.27.1 + chalk: 4.1.2 + fb-watchman: 2.0.2 + graphql: 16.11.0 + immutable: 3.7.6 + invariant: 2.2.4 + nullthrows: 1.1.1 + relay-runtime: 12.0.0 + signedsource: 1.0.0 + transitivePeerDependencies: + - encoding + + '@assemblyscript/loader@0.9.4': {} + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.27.2': {} + + '@babel/core@7.27.1': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helpers': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.27.1': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.1': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.24.5 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.27.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + regexpu-core: 6.2.0 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.1 + lodash.debounce: 4.0.8 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.27.1': + dependencies: + '@babel/types': 7.27.1 + + '@babel/helper-plugin-utils@7.27.1': {} + + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-wrap-function': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': + dependencies: + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.27.1': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.27.1': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/parser@7.27.2': + dependencies: + '@babel/types': 7.27.1 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.12.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-block-scoping@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + + '@babel/plugin-transform-destructuring@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.27.1) + + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-object-rest-spread@7.27.2(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) + + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-display-name@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/types': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regenerator@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.27.2(@babel/core@7.27.1)': + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/core': 7.27.1 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoping': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-destructuring': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-object-rest-spread': 7.27.2(@babel/core@7.27.1) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.42.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-flow@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.1) + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.27.1 + esutils: 2.0.3 + + '@babel/preset-react@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-transform-react-display-name': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.27.1': {} + + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@babel/traverse@7.27.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.27.1': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + + '@bcoe/v8-coverage@0.2.3': {} + + '@cowprotocol/app-data@3.1.0(cross-fetch@3.2.0)(ethers@5.8.0)(ipfs-only-hash@4.0.0)(multiformats@9.9.0)': + dependencies: + ajv: 8.17.1 + cross-fetch: 3.2.0 + ethers: 5.8.0 + ipfs-only-hash: 4.0.0 + json-stringify-deterministic: 1.0.12 + multiformats: 9.9.0 + + '@cowprotocol/contracts@1.8.0(ethers@5.8.0)': + dependencies: + ethers: 5.8.0 + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@envelop/core@5.2.3': + dependencies: + '@envelop/instrumentation': 1.0.0 + '@envelop/types': 5.2.1 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@envelop/instrumentation@1.0.0': + dependencies: + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@envelop/types@5.2.1': + dependencies: + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.27.0': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.3.1': + dependencies: + '@eslint/core': 0.14.0 + levn: 0.4.1 + + '@ethereumjs/common@3.2.0': + dependencies: + '@ethereumjs/util': 8.1.0 + crc-32: 1.2.2 + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/tx@4.2.0': + dependencies: + '@ethereumjs/common': 3.2.0 + '@ethereumjs/rlp': 4.0.1 + '@ethereumjs/util': 8.1.0 + ethereum-cryptography: 2.2.1 + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/abstract-provider@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + + '@ethersproject/abstract-signer@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/address@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/base64@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + + '@ethersproject/basex@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/bignumber@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.2 + + '@ethersproject/bytes@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/constants@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + + '@ethersproject/contracts@5.8.0': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + + '@ethersproject/hash@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hdnode@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/json-wallets@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.8.0': {} + + '@ethersproject/networks@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/pbkdf2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + + '@ethersproject/properties@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/providers@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bech32: 1.1.4 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/rlp@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/sha2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.2 + elliptic: 6.6.1 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/strings@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/transactions@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/units@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/wallet@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/web@5.8.0': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/wordlists@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@fastify/busboy@3.1.1': {} + + '@graphql-codegen/add@5.0.3(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.6.3 + + '@graphql-codegen/cli@5.0.6(@types/node@22.15.21)(graphql@16.11.0)(typescript@5.8.3)': + dependencies: + '@babel/generator': 7.27.1 + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@graphql-codegen/client-preset': 4.8.1(graphql@16.11.0) + '@graphql-codegen/core': 4.0.2(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-tools/apollo-engine-loader': 8.0.20(graphql@16.11.0) + '@graphql-tools/code-file-loader': 8.1.20(graphql@16.11.0) + '@graphql-tools/git-loader': 8.0.24(graphql@16.11.0) + '@graphql-tools/github-loader': 8.0.20(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/graphql-file-loader': 8.0.19(graphql@16.11.0) + '@graphql-tools/json-file-loader': 8.0.18(graphql@16.11.0) + '@graphql-tools/load': 8.1.0(graphql@16.11.0) + '@graphql-tools/prisma-loader': 8.0.17(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.31(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/fetch': 0.10.8 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.8.3) + debounce: 1.2.1 + detect-indent: 6.1.0 + graphql: 16.11.0 + graphql-config: 5.1.5(@types/node@22.15.21)(graphql@16.11.0)(typescript@5.8.3) + inquirer: 8.2.6 + is-glob: 4.0.3 + jiti: 1.21.7 + json-to-pretty-yaml: 1.2.2 + listr2: 4.0.5 + log-symbols: 4.1.0 + micromatch: 4.0.8 + shell-quote: 1.8.2 + string-env-interpolation: 1.0.1 + ts-log: 2.2.7 + tslib: 2.8.1 + yaml: 2.8.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - cosmiconfig-toml-loader + - crossws + - encoding + - enquirer + - graphql-sock + - supports-color + - typescript + - uWebSockets.js + - utf-8-validate + + '@graphql-codegen/client-preset@4.8.1(graphql@16.11.0)': + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 + '@graphql-codegen/add': 5.0.3(graphql@16.11.0) + '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-codegen/typed-document-node': 5.1.1(graphql@16.11.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.11.0) + '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + '@graphql-tools/documents': 1.0.1(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-codegen/core@4.0.2(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-tools/schema': 10.0.23(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.6.3 + + '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + auto-bind: 4.0.0 + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-codegen/plugin-helpers@5.1.0(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + change-case-all: 1.0.15 + common-tags: 1.8.2 + graphql: 16.11.0 + import-from: 4.0.0 + lodash: 4.17.21 + tslib: 2.6.3 + + '@graphql-codegen/schema-ast@4.1.0(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.6.3 + + '@graphql-codegen/typed-document-node@5.1.1(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-codegen/typescript-operations@4.6.1(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + auto-bind: 4.0.0 + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-codegen/typescript@4.1.6(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-codegen/schema-ast': 4.1.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.11.0) + auto-bind: 4.0.0 + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.11.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 5.1.0(graphql@16.11.0) + '@graphql-tools/optimize': 2.0.0(graphql@16.11.0) + '@graphql-tools/relay-operation-optimizer': 7.0.19(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + auto-bind: 4.0.0 + change-case-all: 1.0.15 + dependency-graph: 0.11.0 + graphql: 16.11.0 + graphql-tag: 2.12.6(graphql@16.11.0) + parse-filepath: 1.0.2 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-hive/signal@1.0.0': {} + + '@graphql-tools/apollo-engine-loader@8.0.20(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/fetch': 0.10.8 + graphql: 16.11.0 + sync-fetch: 0.6.0-2 + tslib: 2.8.1 + + '@graphql-tools/batch-execute@9.0.16(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/code-file-loader@8.1.20(graphql@16.11.0)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + globby: 11.1.0 + graphql: 16.11.0 + tslib: 2.8.1 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@graphql-tools/delegate@10.2.18(graphql@16.11.0)': + dependencies: + '@graphql-tools/batch-execute': 9.0.16(graphql@16.11.0) + '@graphql-tools/executor': 1.4.7(graphql@16.11.0) + '@graphql-tools/schema': 10.0.23(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + dset: 3.1.4 + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/documents@1.0.1(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + lodash.sortby: 4.7.0 + tslib: 2.8.1 + + '@graphql-tools/executor-common@0.0.4(graphql@16.11.0)': + dependencies: + '@envelop/core': 5.2.3 + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + + '@graphql-tools/executor-graphql-ws@2.0.5(graphql@16.11.0)': + dependencies: + '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/disposablestack': 0.0.6 + graphql: 16.11.0 + graphql-ws: 6.0.5(graphql@16.11.0)(ws@8.18.2) + isomorphic-ws: 5.0.0(ws@8.18.2) + tslib: 2.8.1 + ws: 8.18.2 + transitivePeerDependencies: + - '@fastify/websocket' + - bufferutil + - crossws + - uWebSockets.js + - utf-8-validate + + '@graphql-tools/executor-http@1.3.3(@types/node@22.15.21)(graphql@16.11.0)': + dependencies: + '@graphql-hive/signal': 1.0.0 + '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/fetch': 0.10.8 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.11.0 + meros: 1.3.0(@types/node@22.15.21) + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + + '@graphql-tools/executor-legacy-ws@1.1.17(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@types/ws': 8.18.1 + graphql: 16.11.0 + isomorphic-ws: 5.0.0(ws@8.18.2) + tslib: 2.8.1 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@graphql-tools/executor@1.4.7(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/git-loader@8.0.24(graphql@16.11.0)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + tslib: 2.8.1 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + + '@graphql-tools/github-loader@8.0.20(@types/node@22.15.21)(graphql@16.11.0)': + dependencies: + '@graphql-tools/executor-http': 1.3.3(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/fetch': 0.10.8 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.11.0 + sync-fetch: 0.6.0-2 + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + - supports-color + + '@graphql-tools/graphql-file-loader@8.0.19(graphql@16.11.0)': + dependencies: + '@graphql-tools/import': 7.0.18(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + globby: 11.1.0 + graphql: 16.11.0 + tslib: 2.8.1 + unixify: 1.0.0 + + '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.11.0)': + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.1 + '@babel/types': 7.27.1 + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + + '@graphql-tools/import@7.0.18(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + resolve-from: 5.0.0 + tslib: 2.8.1 + + '@graphql-tools/json-file-loader@8.0.18(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + globby: 11.1.0 + graphql: 16.11.0 + tslib: 2.8.1 + unixify: 1.0.0 + + '@graphql-tools/load@8.1.0(graphql@16.11.0)': + dependencies: + '@graphql-tools/schema': 10.0.23(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + p-limit: 3.1.0 + tslib: 2.8.1 + + '@graphql-tools/merge@9.0.24(graphql@16.11.0)': + dependencies: + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/optimize@2.0.0(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + tslib: 2.6.3 + + '@graphql-tools/prisma-loader@8.0.17(@types/node@22.15.21)(graphql@16.11.0)': + dependencies: + '@graphql-tools/url-loader': 8.0.31(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@types/js-yaml': 4.0.9 + '@whatwg-node/fetch': 0.10.8 + chalk: 4.1.2 + debug: 4.4.1 + dotenv: 16.5.0 + graphql: 16.11.0 + graphql-request: 6.1.0(graphql@16.11.0) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + jose: 5.10.0 + js-yaml: 4.1.0 + lodash: 4.17.21 + scuid: 1.1.0 + tslib: 2.8.1 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - encoding + - supports-color + - uWebSockets.js + - utf-8-validate + + '@graphql-tools/relay-operation-optimizer@7.0.19(graphql@16.11.0)': + dependencies: + '@ardatan/relay-compiler': 12.0.3(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.6.3 + transitivePeerDependencies: + - encoding + + '@graphql-tools/schema@10.0.23(graphql@16.11.0)': + dependencies: + '@graphql-tools/merge': 9.0.24(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/url-loader@8.0.31(@types/node@22.15.21)(graphql@16.11.0)': + dependencies: + '@graphql-tools/executor-graphql-ws': 2.0.5(graphql@16.11.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/executor-legacy-ws': 1.1.17(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@graphql-tools/wrap': 10.0.36(graphql@16.11.0) + '@types/ws': 8.18.1 + '@whatwg-node/fetch': 0.10.8 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.11.0 + isomorphic-ws: 5.0.0(ws@8.18.2) + sync-fetch: 0.6.0-2 + tslib: 2.8.1 + ws: 8.18.2 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - uWebSockets.js + - utf-8-validate + + '@graphql-tools/utils@10.8.6(graphql@16.11.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + '@whatwg-node/promise-helpers': 1.3.2 + cross-inspect: 1.0.1 + dset: 3.1.4 + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-tools/wrap@10.0.36(graphql@16.11.0)': + dependencies: + '@graphql-tools/delegate': 10.2.18(graphql@16.11.0) + '@graphql-tools/schema': 10.0.23(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.11.0 + tslib: 2.8.1 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.15.21 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@29.7.0': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + '@types/node': 22.15.21 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.3.0 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@29.6.3': + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + callsites: 3.1.0 + graceful-fs: 4.2.11 + + '@jest/test-result@29.7.0': + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@29.7.0': + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.15.21 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jridgewell/gen-mapping@0.3.8': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsdevtools/ono@7.1.3': {} + + '@metamask/abi-utils@2.0.4': + dependencies: + '@metamask/superstruct': 3.2.1 + '@metamask/utils': 9.3.0 + transitivePeerDependencies: + - supports-color + + '@metamask/superstruct@3.2.1': {} + + '@metamask/utils@9.3.0': + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.2.1 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + '@types/debug': 4.1.12 + debug: 4.4.1 + pony-cause: 2.1.11 + semver: 7.7.2 + uuid: 9.0.1 + transitivePeerDependencies: + - supports-color + + '@multiformats/base-x@4.0.1': {} + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.9.0': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 + + '@openzeppelin/merkle-tree@1.0.8': + dependencies: + '@metamask/abi-utils': 2.0.4 + ethereum-cryptography: 3.2.0 + transitivePeerDependencies: + - supports-color + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@repeaterjs/repeater@3.0.6': {} + + '@rollup/plugin-alias@3.1.9(rollup@2.79.2)': + dependencies: + rollup: 2.79.2 + slash: 3.0.0 + + '@rollup/plugin-babel@5.3.1(@babel/core@7.27.1)(@types/babel__core@7.20.5)(rollup@2.79.2)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-module-imports': 7.27.1 + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 + optionalDependencies: + '@types/babel__core': 7.20.5 + transitivePeerDependencies: + - supports-color + + '@rollup/plugin-commonjs@17.1.0(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.3 + is-reference: 1.2.1 + magic-string: 0.25.9 + resolve: 1.22.10 + rollup: 2.79.2 + + '@rollup/plugin-json@4.1.0(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + rollup: 2.79.2 + + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': + dependencies: + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) + '@types/resolve': 1.17.1 + builtin-modules: 3.3.0 + deepmerge: 4.3.1 + is-module: 1.0.0 + resolve: 1.22.10 + rollup: 2.79.2 + + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.79.2 + + '@rollup/pluginutils@4.2.1': + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + + '@scure/base@1.1.9': {} + + '@scure/base@1.2.5': {} + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.5 + + '@sinclair/typebox@0.27.8': {} + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@surma/rollup-plugin-off-main-thread@2.2.3': + dependencies: + ejs: 3.1.10 + json5: 2.2.3 + magic-string: 0.25.9 + string.prototype.matchall: 4.0.12 + + '@trysound/sax@0.2.0': {} + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0)(ethers@5.8.0)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3)': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/providers': 5.8.0 + ethers: 5.8.0 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.8.3) + typechain: 8.3.2(typescript@5.8.3) + typescript: 5.8.3 + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.7 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.27.1 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.27.2 + '@babel/types': 7.27.1 + + '@types/babel__traverse@7.20.7': + dependencies: + '@babel/types': 7.27.1 + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/estree@0.0.39': {} + + '@types/estree@1.0.7': {} + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.15.21 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/js-yaml@4.0.9': {} + + '@types/json-schema@7.0.15': {} + + '@types/long@4.0.2': {} + + '@types/minimist@1.2.5': {} + + '@types/ms@2.1.0': {} + + '@types/node@22.15.21': + dependencies: + undici-types: 6.21.0 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/prettier@2.7.3': {} + + '@types/resolve@1.17.1': + dependencies: + '@types/node': 22.15.21 + + '@types/stack-utils@2.0.3': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.15.21 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 9.27.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + debug: 4.4.1 + eslint: 9.27.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.32.1': {} + + '@typescript-eslint/typescript-estree@8.32.1(typescript@5.8.3)': + dependencies: + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.2 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.32.1': + dependencies: + '@typescript-eslint/types': 8.32.1 + eslint-visitor-keys: 4.2.0 + + '@weiroll/weiroll.js@0.3.0': + dependencies: + ethers: 5.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@whatwg-node/disposablestack@0.0.6': + dependencies: + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@whatwg-node/fetch@0.10.8': + dependencies: + '@whatwg-node/node-fetch': 0.7.21 + urlpattern-polyfill: 10.1.0 + + '@whatwg-node/node-fetch@0.7.21': + dependencies: + '@fastify/busboy': 3.1.1 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + + '@whatwg-node/promise-helpers@1.3.2': + dependencies: + tslib: 2.8.1 + + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.14.1 + + acorn@8.14.1: {} + + aes-js@3.0.0: {} + + agent-base@7.1.3: {} + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-regex@2.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + anymatch@1.3.2: + dependencies: + micromatch: 2.3.11 + normalize-path: 2.1.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + arr-diff@2.0.0: + dependencies: + arr-flatten: 1.1.0 + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-back@3.1.0: {} + + array-back@4.0.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-union@2.1.0: {} + + array-unique@0.2.1: {} + + array-unique@0.3.2: {} + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + arrify@1.0.1: {} + + asap@2.0.6: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assign-symbols@1.0.0: {} + + astral-regex@2.0.0: {} + + async-each@1.0.6: {} + + async-function@1.0.0: {} + + async@3.2.6: {} + + asynckit@0.4.0: {} + + asyncro@3.0.0: {} + + atob@2.1.2: {} + + auto-bind@4.0.0: {} + + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + babel-jest@29.7.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-inline-import@3.0.0: + dependencies: + require-resolve: 0.0.2 + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.27.1 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@29.6.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.27.1 + cosmiconfig: 7.1.0 + resolve: 1.22.10 + + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): + dependencies: + '@babel/compat-data': 7.27.2 + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.42.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-async-to-promises@0.8.18: {} + + babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.27.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.27.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.27.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + + babel-preset-jest@29.6.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + balanced-match@1.0.2: {} + + base64-js@1.5.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bech32@1.1.4: {} + + binary-extensions@1.13.1: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blakejs@1.2.1: {} + + bn.js@4.12.2: {} + + bn.js@5.2.2: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@1.8.5: + dependencies: + expand-range: 1.8.2 + preserve: 0.2.0 + repeat-element: 1.1.4 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + brotli-size@4.0.0: + dependencies: + duplexer: 0.1.1 + + browserslist@4.24.5: + dependencies: + caniuse-lite: 1.0.30001718 + electron-to-chromium: 1.5.157 + node-releases: 2.0.19 + update-browserslist-db: 1.1.3(browserslist@4.24.5) + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtin-modules@3.3.0: {} + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.5 + caniuse-lite: 1.0.30001718 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001718: {} + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + caseless@0.12.0: {} + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + change-case-all@1.0.15: + dependencies: + change-case: 4.1.2 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lower-case: 2.0.2 + lower-case-first: 2.0.2 + sponge-case: 1.0.1 + swap-case: 2.0.2 + title-case: 3.0.3 + upper-case: 2.0.2 + upper-case-first: 2.0.2 + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.8.1 + + char-regex@1.0.2: {} + + chardet@0.7.0: {} + + chokidar@1.7.0: + dependencies: + anymatch: 1.3.2 + async-each: 1.0.6 + glob-parent: 2.0.0 + inherits: 2.0.4 + is-binary-path: 1.0.1 + is-glob: 2.0.1 + path-is-absolute: 1.0.1 + readdirp: 2.2.1 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + ci-info@3.9.0: {} + + cids@1.1.9: + dependencies: + multibase: 4.0.6 + multicodec: 3.2.1 + multihashes: 4.0.3 + uint8arrays: 3.1.1 + + cjs-module-lexer@1.4.3: {} + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + clean-stack@2.2.0: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + cli-width@3.0.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + co@4.6.0: {} + + collect-v8-coverage@1.0.2: {} + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colord@2.9.3: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + command-line-usage@6.1.3: + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + + commander@12.1.0: {} + + commander@13.1.0: {} + + commander@2.20.3: {} + + commander@7.2.0: {} + + common-tags@1.8.2: {} + + commondir@1.0.1: {} + + component-emitter@1.3.1: {} + + concat-map@0.0.1: {} + + concat-with-sourcemaps@1.1.0: + dependencies: + source-map: 0.6.1 + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case: 2.0.2 + + convert-source-map@2.0.0: {} + + copy-descriptor@0.1.1: {} + + core-js-compat@3.42.0: + dependencies: + browserslist: 4.24.5 + + core-js@2.6.12: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.1 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.8.3): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.8.3 + + coveralls@3.1.1: + dependencies: + js-yaml: 3.14.1 + lcov-parse: 1.0.0 + log-driver: 1.2.7 + minimist: 1.2.8 + request: 2.88.2 + + cpx@1.5.0: + dependencies: + babel-runtime: 6.26.0 + chokidar: 1.7.0 + duplexer: 0.1.2 + glob: 7.2.3 + glob2base: 0.0.12 + minimatch: 3.1.2 + mkdirp: 0.5.6 + resolve: 1.22.10 + safe-buffer: 5.2.1 + shell-quote: 1.8.2 + subarg: 1.0.0 + transitivePeerDependencies: + - supports-color + + crc-32@1.2.2: {} + + create-jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + create-require@1.1.1: {} + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-inspect@1.0.1: + dependencies: + tslib: 2.8.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-declaration-sorter@6.4.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-what@6.1.0: {} + + cssesc@3.0.0: {} + + cssnano-preset-default@5.2.14(postcss@8.5.3): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.3) + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-calc: 8.2.4(postcss@8.5.3) + postcss-colormin: 5.3.1(postcss@8.5.3) + postcss-convert-values: 5.1.3(postcss@8.5.3) + postcss-discard-comments: 5.1.2(postcss@8.5.3) + postcss-discard-duplicates: 5.1.0(postcss@8.5.3) + postcss-discard-empty: 5.1.1(postcss@8.5.3) + postcss-discard-overridden: 5.1.0(postcss@8.5.3) + postcss-merge-longhand: 5.1.7(postcss@8.5.3) + postcss-merge-rules: 5.1.4(postcss@8.5.3) + postcss-minify-font-values: 5.1.0(postcss@8.5.3) + postcss-minify-gradients: 5.1.1(postcss@8.5.3) + postcss-minify-params: 5.1.4(postcss@8.5.3) + postcss-minify-selectors: 5.2.1(postcss@8.5.3) + postcss-normalize-charset: 5.1.0(postcss@8.5.3) + postcss-normalize-display-values: 5.1.0(postcss@8.5.3) + postcss-normalize-positions: 5.1.1(postcss@8.5.3) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.3) + postcss-normalize-string: 5.1.0(postcss@8.5.3) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.3) + postcss-normalize-unicode: 5.1.1(postcss@8.5.3) + postcss-normalize-url: 5.1.0(postcss@8.5.3) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.3) + postcss-ordered-values: 5.1.3(postcss@8.5.3) + postcss-reduce-initial: 5.1.2(postcss@8.5.3) + postcss-reduce-transforms: 5.1.0(postcss@8.5.3) + postcss-svgo: 5.1.0(postcss@8.5.3) + postcss-unique-selectors: 5.1.1(postcss@8.5.3) + + cssnano-utils@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + cssnano@5.1.15(postcss@8.5.3): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.3) + lilconfig: 2.1.0 + postcss: 8.5.3 + yaml: 1.10.2 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-uri-to-buffer@4.0.1: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + dataloader@2.2.3: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.1: + dependencies: + ms: 2.1.3 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decode-uri-component@0.2.2: {} + + dedent@1.6.0(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-lazy-prop@2.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + delayed-stream@1.0.0: {} + + dependency-graph@0.11.0: {} + + detect-indent@6.1.0: {} + + detect-newline@3.1.0: {} + + diff-sequences@29.6.3: {} + + diff@4.0.2: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@2.3.0: {} + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dotenv@16.5.0: {} + + dset@3.1.4: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.1: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.157: {} + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emittery@0.13.1: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + entities@2.2.0: {} + + err-code@3.0.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-abstract@1.23.10: + dependencies: + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 + globalthis: 1.0.4 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + has-proto: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 + is-callable: 1.2.7 + is-data-view: 1.0.2 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 + object-keys: 1.1.1 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): + dependencies: + eslint: 9.27.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.27.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.20.0 + '@eslint/config-helpers': 0.2.2 + '@eslint/core': 0.14.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.27.0 + '@eslint/plugin-kit': 0.3.1 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@0.6.1: {} + + estree-walker@1.0.1: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereum-cryptography@3.2.0: + dependencies: + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.0 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + + ethers@5.8.0: + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/contracts': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/providers': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/solidity': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/units': 5.8.0 + '@ethersproject/wallet': 5.8.0 + '@ethersproject/web': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + eventemitter3@4.0.7: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + exit@0.1.2: {} + + expand-brackets@0.1.5: + dependencies: + is-posix-bracket: 0.1.1 + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expand-range@1.8.2: + dependencies: + fill-range: 2.2.4 + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + exponential-backoff@3.1.2: {} + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@0.3.2: + dependencies: + is-extglob: 1.0.0 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + extract-files@9.0.0: {} + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.6: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbjs-css-vars@1.0.2: {} + + fbjs@3.0.5: + dependencies: + cross-fetch: 3.2.0 + fbjs-css-vars: 1.0.2 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 1.0.40 + transitivePeerDependencies: + - encoding + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + figures@1.7.0: + dependencies: + escape-string-regexp: 1.0.5 + object-assign: 4.1.1 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: + optional: true + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filename-regex@2.0.1: {} + + filesize@6.4.0: {} + + fill-range@2.2.4: + dependencies: + is-number: 2.1.0 + isobject: 2.1.0 + randomatic: 3.1.1 + repeat-element: 1.1.4 + repeat-string: 1.6.1 + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-index@0.1.1: {} + + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + for-own@0.1.5: + dependencies: + for-in: 1.0.2 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@3.0.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + from@0.1.7: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.3.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.22.2 + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generic-names@4.0.0: + dependencies: + loader-utils: 3.3.1 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stream@6.0.1: {} + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-value@2.0.6: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + glob-base@0.3.0: + dependencies: + glob-parent: 2.0.0 + is-glob: 2.0.1 + + glob-parent@2.0.0: + dependencies: + is-glob: 2.0.1 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob2base@0.0.12: + dependencies: + find-index: 0.1.1 + + glob@11.0.2: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + + glob@7.1.7: + 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 + + glob@7.2.3: + 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 + + globals@11.12.0: {} + + globals@14.0.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + globalyzer@0.1.0: {} + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globrex@0.1.2: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + graphql-config@5.1.5(@types/node@22.15.21)(graphql@16.11.0)(typescript@5.8.3): + dependencies: + '@graphql-tools/graphql-file-loader': 8.0.19(graphql@16.11.0) + '@graphql-tools/json-file-loader': 8.0.18(graphql@16.11.0) + '@graphql-tools/load': 8.1.0(graphql@16.11.0) + '@graphql-tools/merge': 9.0.24(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.31(@types/node@22.15.21)(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + cosmiconfig: 8.3.6(typescript@5.8.3) + graphql: 16.11.0 + jiti: 2.4.2 + minimatch: 9.0.5 + string-env-interpolation: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - typescript + - uWebSockets.js + - utf-8-validate + + graphql-request@4.3.0(graphql@16.11.0): + dependencies: + cross-fetch: 3.2.0 + extract-files: 9.0.0 + form-data: 3.0.3 + graphql: 16.11.0 + transitivePeerDependencies: + - encoding + + graphql-request@6.1.0(graphql@16.11.0): + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + cross-fetch: 3.2.0 + graphql: 16.11.0 + transitivePeerDependencies: + - encoding + + graphql-tag@2.12.6(graphql@16.11.0): + dependencies: + graphql: 16.11.0 + tslib: 2.6.3 + + graphql-ws@6.0.5(graphql@16.11.0)(ws@8.18.2): + dependencies: + graphql: 16.11.0 + optionalDependencies: + ws: 8.18.2 + + graphql@16.11.0: {} + + gzip-size@3.0.0: + dependencies: + duplexer: 0.1.2 + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + hamt-sharding@2.0.1: + dependencies: + sparse-array: 1.3.2 + uint8arrays: 3.1.1 + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + hard-rejection@2.1.0: {} + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-bigints@1.1.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.8.1 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-escaper@2.0.2: {} + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.3 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + icss-replace-symbols@1.1.0: {} + + icss-utils@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.4: {} + + immutable@3.7.6: {} + + import-cwd@3.0.0: + dependencies: + import-from: 3.0.0 + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-from@3.0.0: + dependencies: + resolve-from: 5.0.0 + + import-from@4.0.0: {} + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.2 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + interface-ipld-format@1.0.1: + dependencies: + cids: 1.1.9 + multicodec: 3.2.1 + multihashes: 4.0.3 + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ipfs-only-hash@4.0.0: + dependencies: + ipfs-unixfs-importer: 7.0.3 + meow: 9.0.0 + transitivePeerDependencies: + - encoding + - supports-color + + ipfs-unixfs-importer@7.0.3: + dependencies: + bl: 5.1.0 + cids: 1.1.9 + err-code: 3.0.1 + hamt-sharding: 2.0.1 + ipfs-unixfs: 4.0.3 + ipld-dag-pb: 0.22.3 + it-all: 1.0.6 + it-batch: 1.0.9 + it-first: 1.0.7 + it-parallel-batch: 1.0.11 + merge-options: 3.0.4 + multihashing-async: 2.1.4 + rabin-wasm: 0.1.5 + uint8arrays: 2.1.10 + transitivePeerDependencies: + - encoding + - supports-color + + ipfs-unixfs@4.0.3: + dependencies: + err-code: 3.0.1 + protobufjs: 6.11.4 + + ipld-dag-pb@0.22.3: + dependencies: + cids: 1.1.9 + interface-ipld-format: 1.0.1 + multicodec: 3.2.1 + multihashing-async: 2.1.4 + protobufjs: 6.11.4 + stable: 0.1.8 + uint8arrays: 2.1.10 + + is-absolute@1.0.0: + dependencies: + is-relative: 1.0.0 + is-windows: 1.0.2 + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-arrayish@0.2.1: {} + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-binary-path@1.0.1: + dependencies: + binary-extensions: 1.13.1 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-docker@2.2.1: {} + + is-dotfile@1.0.3: {} + + is-equal-shallow@0.1.3: + dependencies: + is-primitive: 2.0.0 + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@1.0.0: {} + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-generator-function@1.1.0: + dependencies: + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@2.0.1: + dependencies: + is-extglob: 1.0.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-interactive@1.0.0: {} + + is-lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + is-map@2.0.3: {} + + is-module@1.0.0: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@2.1.0: + dependencies: + kind-of: 3.2.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@4.0.0: {} + + is-number@7.0.0: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@2.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-posix-bracket@0.1.1: {} + + is-primitive@2.0.0: {} + + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.7 + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-relative@1.0.0: + dependencies: + is-unc-path: 1.0.0 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-stream@2.0.1: {} + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-typedarray@1.0.0: {} + + is-unc-path@1.0.0: + dependencies: + unc-path-regex: 0.1.2 + + is-unicode-supported@0.1.0: {} + + is-upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isomorphic-ws@5.0.0(ws@8.18.2): + dependencies: + ws: 8.18.2 + + isstream@0.1.2: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@6.0.3: + dependencies: + '@babel/core': 7.27.1 + '@babel/parser': 7.27.2 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.4.1 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + it-all@1.0.6: {} + + it-batch@1.0.9: {} + + it-first@1.0.7: {} + + it-parallel-batch@1.0.11: + dependencies: + it-batch: 1.0.9 + + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-changed-files@29.7.0: + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + + jest-circus@29.7.0(babel-plugin-macros@3.1.0): + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.6.0(babel-plugin-macros@3.1.0) + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.1.0 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-cli@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jest-config@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 22.15.21 + ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@29.7.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@29.7.0: + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + + jest-environment-node@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + jest-fetch-mock@3.0.3: + dependencies: + cross-fetch: 3.2.0 + promise-polyfill: 8.3.0 + transitivePeerDependencies: + - encoding + + jest-get-type@29.6.3: {} + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.15.21 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-leak-detector@29.7.0: + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: + jest-resolve: 29.7.0 + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@29.7.0: + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + jest-resolve@29.7.0: + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.10 + resolve.exports: 2.0.3 + slash: 3.0.0 + + jest-runner@29.7.0: + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + + jest-runtime@29.7.0: + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) + '@babel/types': 7.27.1 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@29.7.0: + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + + jest-watcher@29.7.0: + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.15.21 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + + jest-worker@26.6.2: + dependencies: + '@types/node': 22.15.21 + merge-stream: 2.0.0 + supports-color: 7.2.0 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.15.21 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + + jiti@1.21.7: {} + + jiti@2.4.2: {} + + jose@5.10.0: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsesc@3.0.2: {} + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-deterministic@1.0.12: {} + + json-stringify-safe@5.0.1: {} + + json-to-pretty-yaml@1.2.2: + dependencies: + remedial: 1.0.8 + remove-trailing-spaces: 1.0.9 + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + kleur@4.1.5: {} + + lcov-parse@1.0.0: {} + + leven@3.1.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + limiter@3.0.0: {} + + lines-and-columns@1.2.4: {} + + listr2@4.0.5: + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.4.1 + rxjs: 7.8.2 + through: 2.3.8 + wrap-ansi: 7.0.0 + + loader-utils@3.3.1: {} + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.debounce@4.0.8: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.sortby@4.7.0: {} + + lodash.uniq@4.5.0: {} + + lodash@4.17.21: {} + + log-driver@1.2.7: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@4.0.0: + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + + long@4.0.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lower-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lru-cache@11.1.0: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.7.2 + + make-error@1.3.6: {} + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-cache@0.2.2: {} + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + map-stream@0.1.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + math-intrinsics@1.1.0: {} + + math-random@1.0.4: {} + + maxmin@2.1.0: + dependencies: + chalk: 1.1.3 + figures: 1.7.0 + gzip-size: 3.0.0 + pretty-bytes: 3.0.1 + + mdn-data@2.0.14: {} + + meow@9.0.0: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-options@3.0.4: + dependencies: + is-plain-obj: 2.1.0 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + meros@1.3.0(@types/node@22.15.21): + optionalDependencies: + '@types/node': 22.15.21 + + micro-ftch@0.3.1: {} + + microbundle@0.15.1(@types/babel__core@7.20.5)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-proposal-class-properties': 7.12.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1) + '@babel/preset-env': 7.27.2(@babel/core@7.27.1) + '@babel/preset-flow': 7.27.1(@babel/core@7.27.1) + '@babel/preset-react': 7.27.1(@babel/core@7.27.1) + '@rollup/plugin-alias': 3.1.9(rollup@2.79.2) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.1)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-commonjs': 17.1.0(rollup@2.79.2) + '@rollup/plugin-json': 4.1.0(rollup@2.79.2) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + asyncro: 3.0.0 + autoprefixer: 10.4.21(postcss@8.5.3) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-async-to-promises: 0.8.18 + babel-plugin-transform-replace-expressions: 0.2.0(@babel/core@7.27.1) + brotli-size: 4.0.0 + builtin-modules: 3.3.0 + camelcase: 6.3.0 + escape-string-regexp: 4.0.0 + filesize: 6.4.0 + gzip-size: 6.0.0 + kleur: 4.1.5 + lodash.merge: 4.6.2 + postcss: 8.5.3 + pretty-bytes: 5.6.0 + rollup: 2.79.2 + rollup-plugin-bundle-size: 1.0.3 + rollup-plugin-postcss: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + rollup-plugin-terser: 7.0.2(rollup@2.79.2) + rollup-plugin-typescript2: 0.32.1(rollup@2.79.2)(typescript@4.9.5) + rollup-plugin-visualizer: 5.14.0(rollup@2.79.2) + sade: 1.8.1 + terser: 5.39.2 + tiny-glob: 0.2.9 + tslib: 2.8.1 + typescript: 4.9.5 + transitivePeerDependencies: + - '@types/babel__core' + - rolldown + - supports-color + - ts-node + + micromatch@2.3.11: + dependencies: + arr-diff: 2.0.0 + array-unique: 0.2.1 + braces: 1.8.5 + expand-brackets: 0.1.5 + extglob: 0.3.2 + filename-regex: 2.0.1 + is-extglob: 1.0.0 + is-glob: 2.0.1 + kind-of: 3.2.2 + normalize-path: 2.1.1 + object.omit: 2.0.1 + parse-glob: 3.0.4 + regex-cache: 0.4.4 + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + min-indent@1.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mri@1.2.0: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + multibase@4.0.6: + dependencies: + '@multiformats/base-x': 4.0.1 + + multicodec@3.2.1: + dependencies: + uint8arrays: 3.1.1 + varint: 6.0.0 + + multiformats@9.9.0: {} + + multihashes@4.0.3: + dependencies: + multibase: 4.0.6 + uint8arrays: 3.1.1 + varint: 5.0.2 + + multihashing-async@2.1.4: + dependencies: + blakejs: 1.2.1 + err-code: 3.0.1 + js-sha3: 0.8.0 + multihashes: 4.0.3 + murmurhash3js-revisited: 3.0.0 + uint8arrays: 3.1.1 + + murmurhash3js-revisited@3.0.0: {} + + mute-stream@0.0.8: {} + + nan@2.22.2: + optional: true + + nanoid@3.3.11: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + natural-compare@1.4.0: {} + + neo-async@2.6.2: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + node-cleanup@2.1.2: {} + + node-domexception@1.0.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-int64@0.4.0: {} + + node-releases@2.0.19: {} + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.10 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.16.1 + semver: 7.7.2 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@6.1.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + nullthrows@1.1.1: {} + + number-is-nan@1.0.1: {} + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.omit@2.0.1: + dependencies: + for-own: 0.1.5 + is-extendable: 0.1.1 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + openapi-typescript-codegen@0.29.0: + dependencies: + '@apidevtools/json-schema-ref-parser': 11.9.3 + camelcase: 6.3.0 + commander: 12.1.0 + fs-extra: 11.3.0 + handlebars: 4.7.8 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + os-tmpdir@1.0.2: {} + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-filepath@1.0.2: + dependencies: + is-absolute: 1.0.0 + map-cache: 0.2.2 + path-root: 0.1.1 + + parse-glob@3.0.4: + dependencies: + glob-base: 0.3.0 + is-dotfile: 1.0.3 + is-extglob: 1.0.0 + is-glob: 2.0.1 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + pascalcase@0.1.1: {} + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + path-exists@4.0.0: {} + + path-extra@1.0.3: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-root-regex@0.1.2: {} + + path-root@0.1.1: + dependencies: + path-root-regex: 0.1.2 + + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + + path-type@4.0.0: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + performance-now@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@5.0.0: {} + + pirates@4.0.7: {} + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pony-cause@2.1.11: {} + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.1.0: {} + + postcss-calc@8.2.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-colormin@5.3.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + colord: 2.9.3 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-convert-values@5.1.3(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-discard-comments@5.1.2(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-duplicates@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-empty@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-discard-overridden@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + + postcss-merge-longhand@5.1.7(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + stylehacks: 5.1.1(postcss@8.5.3) + + postcss-merge-rules@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-minify-font-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-gradients@5.1.1(postcss@8.5.3): + dependencies: + colord: 2.9.3 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-params@5.1.4(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-minify-selectors@5.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-modules@4.3.1(postcss@8.5.3): + dependencies: + generic-names: 4.0.0 + icss-replace-symbols: 1.1.0 + lodash.camelcase: 4.3.0 + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + string-hash: 1.1.3 + + postcss-normalize-charset@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-normalize-display-values@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-positions@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-repeat-style@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-string@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-timing-functions@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-unicode@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-url@5.1.0(postcss@8.5.3): + dependencies: + normalize-url: 6.1.0 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-normalize-whitespace@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-ordered-values@5.1.3(postcss@8.5.3): + dependencies: + cssnano-utils: 3.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-reduce-initial@5.1.2(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + caniuse-api: 3.0.0 + postcss: 8.5.3 + + postcss-reduce-transforms@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + svgo: 2.8.0 + + postcss-unique-selectors@5.1.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + preserve@0.2.0: {} + + prettier@2.8.8: {} + + prettier@3.5.3: {} + + pretty-bytes@3.0.1: + dependencies: + number-is-nan: 1.0.1 + + pretty-bytes@5.6.0: {} + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + process-nextick-args@2.0.1: {} + + promise-polyfill@8.3.0: {} + + promise.series@0.2.0: {} + + promise@7.3.1: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + protobufjs@6.11.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/long': 4.0.2 + '@types/node': 22.15.21 + long: 4.0.0 + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + psl@1.15.0: + dependencies: + punycode: 2.3.1 + + punycode@2.3.1: {} + + pure-rand@6.1.0: {} + + qs@6.5.3: {} + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + rabin-wasm@0.1.5: + dependencies: + '@assemblyscript/loader': 0.9.4 + bl: 5.1.0 + debug: 4.4.1 + minimist: 1.2.8 + node-fetch: 2.7.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - encoding + - supports-color + + randomatic@3.1.1: + dependencies: + is-number: 4.0.0 + kind-of: 6.0.3 + math-random: 1.0.4 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + react-is@18.3.1: {} + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@2.2.1: + dependencies: + graceful-fs: 4.2.11 + micromatch: 3.1.10 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reduce-flatten@2.0.0: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regex-cache@0.4.4: + dependencies: + is-equal-shallow: 0.1.3 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + regexpu-core@6.2.0: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.12.0 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + regjsgen@0.8.0: {} + + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + + relay-runtime@12.0.0: + dependencies: + '@babel/runtime': 7.27.1 + fbjs: 3.0.5 + invariant: 2.2.4 + transitivePeerDependencies: + - encoding + + remedial@1.0.8: {} + + remove-trailing-separator@1.1.0: {} + + remove-trailing-spaces@1.0.9: {} + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-resolve@0.0.2: + dependencies: + x-path: 0.0.2 + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-url@0.2.1: {} + + resolve.exports@2.0.3: {} + + resolve@1.22.10: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rollup-plugin-bundle-size@1.0.3: + dependencies: + chalk: 1.1.3 + maxmin: 2.1.0 + + rollup-plugin-postcss@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.5.3) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.5.3 + postcss-load-config: 3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + postcss-modules: 4.3.1(postcss@8.5.3) + promise.series: 0.2.0 + resolve: 1.22.10 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + + rollup-plugin-terser@7.0.2(rollup@2.79.2): + dependencies: + '@babel/code-frame': 7.27.1 + jest-worker: 26.6.2 + rollup: 2.79.2 + serialize-javascript: 4.0.0 + terser: 5.39.2 + + rollup-plugin-typescript2@0.32.1(rollup@2.79.2)(typescript@4.9.5): + dependencies: + '@rollup/pluginutils': 4.2.1 + find-cache-dir: 3.3.2 + fs-extra: 10.1.0 + resolve: 1.22.10 + rollup: 2.79.2 + tslib: 2.8.1 + typescript: 4.9.5 + + rollup-plugin-visualizer@5.14.0(rollup@2.79.2): + dependencies: + open: 8.4.2 + picomatch: 4.0.2 + source-map: 0.7.4 + yargs: 17.7.2 + optionalDependencies: + rollup: 2.79.2 + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + + rollup@2.79.2: + optionalDependencies: + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-identifier@0.4.2: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scrypt-js@3.0.1: {} + + scuid@1.1.0: {} + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.2: {} + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + serialize-javascript@4.0.0: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + setimmediate@1.0.5: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.2: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + signedsource@1.0.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.13: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + sourcemap-codec@1.4.8: {} + + sparse-array@1.3.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.21 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + + spdx-license-ids@3.0.21: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split@0.3.3: + dependencies: + through: 2.3.8 + + sponge-case@1.0.1: + dependencies: + tslib: 2.8.1 + + sprintf-js@1.0.3: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stable@0.1.8: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + string-argv@0.3.2: {} + + string-env-interpolation@1.0.1: {} + + string-format@2.0.0: {} + + string-hash@1.1.3: {} + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.23.10 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + style-inject@0.3.0: {} + + stylehacks@5.1.1(postcss@8.5.3): + dependencies: + browserslist: 4.24.5 + postcss: 8.5.3 + postcss-selector-parser: 6.1.2 + + subarg@1.0.0: + dependencies: + minimist: 1.2.8 + + supports-color@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + swap-case@2.0.2: + dependencies: + tslib: 2.8.1 + + sync-fetch@0.6.0-2: + dependencies: + node-fetch: 3.3.2 + timeout-signal: 2.0.0 + whatwg-mimetype: 4.0.0 + + table-layout@1.0.2: + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + + terser@5.39.2: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.14.1 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + + through@2.3.8: {} + + timeout-signal@2.0.0: {} + + tiny-glob@0.2.9: + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + + title-case@3.0.3: + dependencies: + tslib: 2.8.1 + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmpl@1.0.5: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + + tr46@0.0.3: {} + + trim-newlines@3.0.1: {} + + ts-api-utils@2.1.0(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-command-line-args@2.5.1: + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + + ts-essentials@7.0.3(typescript@5.8.3): + dependencies: + typescript: 5.8.3 + + ts-json-schema-generator@2.4.0: + dependencies: + '@types/json-schema': 7.0.15 + commander: 13.1.0 + glob: 11.0.2 + json5: 2.2.3 + normalize-path: 3.0.0 + safe-stable-stringify: 2.5.0 + tslib: 2.8.1 + typescript: 5.8.3 + + ts-log@2.2.7: {} + + ts-mockito@2.6.1: + dependencies: + lodash: 4.17.21 + + ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 22.15.21 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + tsc-watch@6.3.1(typescript@5.8.3): + dependencies: + cross-spawn: 7.0.6 + node-cleanup: 2.1.2 + ps-tree: 1.2.0 + string-argv: 0.3.2 + typescript: 5.8.3 + + tslib@2.6.3: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-fest@0.18.1: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + typechain@8.3.2(typescript@5.8.3): + dependencies: + '@types/prettier': 2.7.3 + debug: 4.4.1 + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint: 9.27.0(jiti@2.4.2) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + typescript@4.9.5: {} + + typescript@5.8.3: {} + + typical@4.0.0: {} + + typical@5.2.0: {} + + ua-parser-js@1.0.40: {} + + uglify-js@3.19.3: + optional: true + + uint8arrays@2.1.10: + dependencies: + multiformats: 9.9.0 + + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + unc-path-regex@0.1.2: {} + + undici-types@6.21.0: {} + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unixify@1.0.0: + dependencies: + normalize-path: 2.1.1 + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + update-browserslist-db@1.1.3(browserslist@4.24.5): + dependencies: + browserslist: 4.24.5 + escalade: 3.2.0 + picocolors: 1.1.1 + + upper-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + urlpattern-polyfill@10.1.0: {} + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + uuid@3.4.0: {} + + uuid@9.0.1: {} + + v8-compile-cache-lib@3.0.1: {} + + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + varint@5.0.2: {} + + varint@6.0.0: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.0 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wordwrapjs@4.0.1: + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + ws@8.18.0: {} + + ws@8.18.2: {} + + x-path@0.0.2: + dependencies: + path-extra: 1.0.3 + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml-ast-parser@0.0.43: {} + + yaml@1.10.2: {} + + yaml@2.8.0: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} diff --git a/scripts/generateTradingSchemas.ts b/scripts/generateTradingSchemas.ts index 949245259..312ff098a 100644 --- a/scripts/generateTradingSchemas.ts +++ b/scripts/generateTradingSchemas.ts @@ -6,6 +6,7 @@ const config: Config = { tsconfig: './tsconfig.json', expose: 'none', topRef: false, + skipTypeCheck: true, } const types = [ diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index d13d9ac3d..000000000 --- a/yarn.lock +++ /dev/null @@ -1,11004 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@apidevtools/json-schema-ref-parser@^11.5.4": - version "11.9.3" - resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.9.3.tgz#0e0c9061fc41cf03737d499a4e6a8299fdd2bfa7" - integrity sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ== - dependencies: - "@jsdevtools/ono" "^7.1.3" - "@types/json-schema" "^7.0.15" - js-yaml "^4.1.0" - -"@ardatan/relay-compiler@^12.0.3": - version "12.0.3" - resolved "https://registry.yarnpkg.com/@ardatan/relay-compiler/-/relay-compiler-12.0.3.tgz#a60824672da7f7cef2a3879ed833b120d292fa08" - integrity sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ== - dependencies: - "@babel/generator" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/runtime" "^7.26.10" - chalk "^4.0.0" - fb-watchman "^2.0.0" - immutable "~3.7.6" - invariant "^2.2.4" - nullthrows "^1.1.1" - relay-runtime "12.0.0" - signedsource "^1.0.0" - -"@assemblyscript/loader@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" - integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== - dependencies: - "@babel/helper-validator-identifier" "^7.25.9" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/code-frame@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" - integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== - dependencies: - "@babel/helper-validator-identifier" "^7.27.1" - js-tokens "^4.0.0" - picocolors "^1.1.1" - -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" - integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== - -"@babel/core@^7.11.6": - version "7.20.12" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" - integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helpers" "^7.20.7" - "@babel/parser" "^7.20.7" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.12" - "@babel/types" "^7.20.7" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.12.10": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.0.tgz#1341aefdcc14ccc7553fcc688dd8986a2daffc13" - integrity sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.21.0" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.21.0" - "@babel/helpers" "^7.21.0" - "@babel/parser" "^7.21.0" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" - -"@babel/core@^7.12.3": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.26.10": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6" - integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.1" - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helpers" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/template" "^7.27.1" - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - -"@babel/generator@^7.18.13", "@babel/generator@^7.18.9", "@babel/generator@^7.20.7", "@babel/generator@^7.21.0", "@babel/generator@^7.26.10", "@babel/generator@^7.27.0", "@babel/generator@^7.27.1", "@babel/generator@^7.7.2": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" - integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== - dependencies: - "@babel/parser" "^7.27.1" - "@babel/types" "^7.27.1" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^3.0.2" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-annotate-as-pure@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" - integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" - integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== - dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-validator-option" "^7.27.1" - browserslist "^4.24.0" - lru-cache "^5.1.1" - semver "^6.3.1" - -"@babel/helper-create-class-features-plugin@^7.12.1": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz#64f49ecb0020532f19b1d014b03bccaa1ab85fb9" - integrity sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.21.0" - "@babel/helper-member-expression-to-functions" "^7.21.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-class-features-plugin@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-class-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" - integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/traverse" "^7.27.1" - semver "^6.3.1" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" - integrity sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.2.1" - -"@babel/helper-create-regexp-features-plugin@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" - integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - regexpu-core "^6.2.0" - semver "^6.3.1" - -"@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4": - version "0.6.4" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz#15e8746368bfa671785f5926ff74b3064c291fab" - integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw== - dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-function-name@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/types" "^7.21.0" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-member-expression-to-functions@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" - integrity sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw== - dependencies: - "@babel/types" "^7.20.7" - -"@babel/helper-member-expression-to-functions@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5" - integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q== - dependencies: - "@babel/types" "^7.21.0" - -"@babel/helper-member-expression-to-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" - integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-imports@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" - integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-module-transforms@^7.20.11": - version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" - integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.10" - "@babel/types" "^7.20.7" - -"@babel/helper-module-transforms@^7.21.0": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2" - integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.2" - "@babel/types" "^7.21.2" - -"@babel/helper-module-transforms@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" - integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-optimise-call-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" - integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" - integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== - -"@babel/helper-remap-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" - integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-wrap-function" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" - integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/helper-replace-supers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" - integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.27.1" - "@babel/helper-optimise-call-expression" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" - integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== - dependencies: - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" - integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-identifier@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" - integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== - -"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" - integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== - -"@babel/helper-wrap-function@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" - integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== - dependencies: - "@babel/template" "^7.27.1" - "@babel/traverse" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helpers@^7.20.7": - version "7.20.13" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" - integrity sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.13" - "@babel/types" "^7.20.7" - -"@babel/helpers@^7.21.0": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e" - integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA== - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.21.0" - "@babel/types" "^7.21.0" - -"@babel/helpers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" - integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== - dependencies: - "@babel/template" "^7.27.1" - "@babel/types" "^7.27.1" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== - -"@babel/parser@^7.20.7": - version "7.20.15" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" - integrity sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg== - -"@babel/parser@^7.21.0", "@babel/parser@^7.3.3": - version "7.21.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" - integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== - -"@babel/parser@^7.26.10", "@babel/parser@^7.27.1", "@babel/parser@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" - integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== - dependencies: - "@babel/types" "^7.27.1" - -"@babel/parser@^7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" - integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== - dependencies: - "@babel/types" "^7.27.0" - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" - integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" - integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" - integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" - integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" - integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-proposal-class-properties@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" - integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.12.1" - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": - version "7.21.0-placeholder-for-preset-env.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" - integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-flow@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1" - integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-assertions@^7.26.0", "@babel/plugin-syntax-import-assertions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" - integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-attributes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" - integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.12.1", "@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.27.1", "@babel/plugin-syntax-jsx@^7.7.2": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" - integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" - integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" - integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-arrow-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" - integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-async-generator-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz#ca433df983d68e1375398e7ca71bf2a4f6fd89d7" - integrity sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-async-to-generator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" - integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== - dependencies: - "@babel/helper-module-imports" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-remap-async-to-generator" "^7.27.1" - -"@babel/plugin-transform-block-scoped-functions@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" - integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-block-scoping@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz#bc0dbe8ac6de5602981ba58ef68c6df8ef9bfbb3" - integrity sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" - integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-class-static-block@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" - integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-classes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz#03bb04bea2c7b2f711f0db7304a8da46a85cced4" - integrity sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - "@babel/traverse" "^7.27.1" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" - integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/template" "^7.27.1" - -"@babel/plugin-transform-destructuring@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz#d5916ef7089cb254df0418ae524533c1b72ba656" - integrity sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-dotall-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" - integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-keys@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" - integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" - integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-dynamic-import@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" - integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-exponentiation-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" - integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-export-namespace-from@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" - integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-flow-strip-types@^7.12.10", "@babel/plugin-transform-flow-strip-types@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" - integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-flow" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" - integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-function-name@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" - integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== - dependencies: - "@babel/helper-compilation-targets" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-json-strings@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" - integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" - integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-logical-assignment-operators@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" - integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-member-expression-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" - integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-amd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" - integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-commonjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" - integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-modules-systemjs@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" - integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - "@babel/traverse" "^7.27.1" - -"@babel/plugin-transform-modules-umd@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" - integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== - dependencies: - "@babel/helper-module-transforms" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" - integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-new-target@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" - integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" - integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-numeric-separator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" - integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-object-rest-spread@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz#67f9ab822347aa2bcee91e8996763da79bdea973" - integrity sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g== - dependencies: - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.27.1" - "@babel/plugin-transform-parameters" "^7.27.1" - -"@babel/plugin-transform-object-super@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" - integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-replace-supers" "^7.27.1" - -"@babel/plugin-transform-optional-catch-binding@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" - integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-optional-chaining@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" - integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-parameters@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz#80334b54b9b1ac5244155a0c8304a187a618d5a7" - integrity sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-methods@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" - integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-private-property-in-object@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" - integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-property-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" - integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-react-display-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" - integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-react-jsx-development@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" - integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== - dependencies: - "@babel/plugin-transform-react-jsx" "^7.18.6" - -"@babel/plugin-transform-react-jsx@^7.12.11", "@babel/plugin-transform-react-jsx@^7.18.6": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2" - integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-jsx" "^7.18.6" - "@babel/types" "^7.21.0" - -"@babel/plugin-transform-react-pure-annotations@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" - integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.12.1", "@babel/plugin-transform-regenerator@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz#0a471df9213416e44cd66bf67176b66f65768401" - integrity sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-regexp-modifiers@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" - integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-reserved-words@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" - integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-shorthand-properties@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" - integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-spread@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" - integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - -"@babel/plugin-transform-sticky-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" - integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-template-literals@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" - integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-typeof-symbol@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" - integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz#d3bb65598bece03f773111e88cc4e8e5070f1140" - integrity sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.27.1" - "@babel/helper-create-class-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" - "@babel/plugin-syntax-typescript" "^7.27.1" - -"@babel/plugin-transform-unicode-escapes@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" - integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-property-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" - integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" - integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/plugin-transform-unicode-sets-regex@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" - integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.27.1" - "@babel/helper-plugin-utils" "^7.27.1" - -"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.27.2": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.27.2.tgz#106e6bfad92b591b1f6f76fd4cf13b7725a7bf9a" - integrity sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ== - dependencies: - "@babel/compat-data" "^7.27.2" - "@babel/helper-compilation-targets" "^7.27.2" - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.27.1" - "@babel/plugin-syntax-import-attributes" "^7.27.1" - "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.27.1" - "@babel/plugin-transform-async-generator-functions" "^7.27.1" - "@babel/plugin-transform-async-to-generator" "^7.27.1" - "@babel/plugin-transform-block-scoped-functions" "^7.27.1" - "@babel/plugin-transform-block-scoping" "^7.27.1" - "@babel/plugin-transform-class-properties" "^7.27.1" - "@babel/plugin-transform-class-static-block" "^7.27.1" - "@babel/plugin-transform-classes" "^7.27.1" - "@babel/plugin-transform-computed-properties" "^7.27.1" - "@babel/plugin-transform-destructuring" "^7.27.1" - "@babel/plugin-transform-dotall-regex" "^7.27.1" - "@babel/plugin-transform-duplicate-keys" "^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-dynamic-import" "^7.27.1" - "@babel/plugin-transform-exponentiation-operator" "^7.27.1" - "@babel/plugin-transform-export-namespace-from" "^7.27.1" - "@babel/plugin-transform-for-of" "^7.27.1" - "@babel/plugin-transform-function-name" "^7.27.1" - "@babel/plugin-transform-json-strings" "^7.27.1" - "@babel/plugin-transform-literals" "^7.27.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" - "@babel/plugin-transform-member-expression-literals" "^7.27.1" - "@babel/plugin-transform-modules-amd" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-modules-systemjs" "^7.27.1" - "@babel/plugin-transform-modules-umd" "^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" - "@babel/plugin-transform-new-target" "^7.27.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" - "@babel/plugin-transform-numeric-separator" "^7.27.1" - "@babel/plugin-transform-object-rest-spread" "^7.27.2" - "@babel/plugin-transform-object-super" "^7.27.1" - "@babel/plugin-transform-optional-catch-binding" "^7.27.1" - "@babel/plugin-transform-optional-chaining" "^7.27.1" - "@babel/plugin-transform-parameters" "^7.27.1" - "@babel/plugin-transform-private-methods" "^7.27.1" - "@babel/plugin-transform-private-property-in-object" "^7.27.1" - "@babel/plugin-transform-property-literals" "^7.27.1" - "@babel/plugin-transform-regenerator" "^7.27.1" - "@babel/plugin-transform-regexp-modifiers" "^7.27.1" - "@babel/plugin-transform-reserved-words" "^7.27.1" - "@babel/plugin-transform-shorthand-properties" "^7.27.1" - "@babel/plugin-transform-spread" "^7.27.1" - "@babel/plugin-transform-sticky-regex" "^7.27.1" - "@babel/plugin-transform-template-literals" "^7.27.1" - "@babel/plugin-transform-typeof-symbol" "^7.27.1" - "@babel/plugin-transform-unicode-escapes" "^7.27.1" - "@babel/plugin-transform-unicode-property-regex" "^7.27.1" - "@babel/plugin-transform-unicode-regex" "^7.27.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.11.0" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.40.0" - semver "^6.3.1" - -"@babel/preset-flow@^7.12.1": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.18.6.tgz#83f7602ba566e72a9918beefafef8ef16d2810cb" - integrity sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-flow-strip-types" "^7.18.6" - -"@babel/preset-modules@0.1.6-no-external-plugins": - version "0.1.6-no-external-plugins" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" - integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-react@^7.12.10": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" - integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-react-display-name" "^7.18.6" - "@babel/plugin-transform-react-jsx" "^7.18.6" - "@babel/plugin-transform-react-jsx-development" "^7.18.6" - "@babel/plugin-transform-react-pure-annotations" "^7.18.6" - -"@babel/preset-typescript@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" - integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== - dependencies: - "@babel/helper-plugin-utils" "^7.27.1" - "@babel/helper-validator-option" "^7.27.1" - "@babel/plugin-syntax-jsx" "^7.27.1" - "@babel/plugin-transform-modules-commonjs" "^7.27.1" - "@babel/plugin-transform-typescript" "^7.27.1" - -"@babel/regjsgen@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== - -"@babel/runtime@^7.0.0": - version "7.22.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.10.tgz#ae3e9631fd947cb7e3610d3e9d8fef5f76696682" - integrity sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.12.5": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673" - integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw== - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/runtime@^7.26.10": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.1.tgz#9fce313d12c9a77507f264de74626e87fd0dc541" - integrity sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog== - -"@babel/template@^7.18.10", "@babel/template@^7.18.6", "@babel/template@^7.20.7", "@babel/template@^7.27.0", "@babel/template@^7.27.1", "@babel/template@^7.3.3": - version "7.27.2" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" - integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/parser" "^7.27.2" - "@babel/types" "^7.27.1" - -"@babel/traverse@^7.18.9", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" - integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.27.0" - "@babel/parser" "^7.27.0" - "@babel/template" "^7.27.0" - "@babel/types" "^7.27.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.26.10", "@babel/traverse@^7.27.1": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" - integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== - dependencies: - "@babel/code-frame" "^7.27.1" - "@babel/generator" "^7.27.1" - "@babel/parser" "^7.27.1" - "@babel/template" "^7.27.1" - "@babel/types" "^7.27.1" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.26.10", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.27.1" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" - integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== - dependencies: - "@babel/helper-string-parser" "^7.27.1" - "@babel/helper-validator-identifier" "^7.27.1" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@cowprotocol/app-data@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/app-data/-/app-data-3.1.0.tgz#2ba5ec7d958b2510f17b08c7e18e05157032c4da" - integrity sha512-hdIWp6fGz/vx3gdoJgwd8Dx8rYAblpZEBiXss5mNzgF/LBb21VVhF075sDl9oxyesKuJayKjgiAgaFiZYVgblA== - dependencies: - ajv "^8.11.0" - cross-fetch "^3.1.5" - ipfs-only-hash "^4.0.0" - json-stringify-deterministic "^1.0.8" - multiformats "^9.6.4" - -"@cowprotocol/contracts@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@cowprotocol/contracts/-/contracts-1.8.0.tgz#daffbd9846231c11a74b15a186bb754627e420b0" - integrity sha512-rMEHo1UBB6k4kRoWejHZNGggg6IBVt7vAd8x0FhEvjxhbq3zlAex61f9HpAcDExJNuvfwwDjsOc/7UGztCzhSw== - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@envelop/core@^5.2.3": - version "5.2.3" - resolved "https://registry.yarnpkg.com/@envelop/core/-/core-5.2.3.tgz#ede1dd20b4397c7465ae2190e718829303bcef00" - integrity sha512-KfoGlYD/XXQSc3BkM1/k15+JQbkQ4ateHazeZoWl9P71FsLTDXSjGy6j7QqfhpIDSbxNISqhPMfZHYSbDFOofQ== - dependencies: - "@envelop/instrumentation" "^1.0.0" - "@envelop/types" "^5.2.1" - "@whatwg-node/promise-helpers" "^1.2.4" - tslib "^2.5.0" - -"@envelop/instrumentation@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@envelop/instrumentation/-/instrumentation-1.0.0.tgz#43268392e065d8ba975cacbdf4fc297dfe3e11e5" - integrity sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw== - dependencies: - "@whatwg-node/promise-helpers" "^1.2.1" - tslib "^2.5.0" - -"@envelop/types@^5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@envelop/types/-/types-5.2.1.tgz#6bc9713f2aea56d7de3ea39e8bb70035c0475b36" - integrity sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg== - dependencies: - "@whatwg-node/promise-helpers" "^1.0.0" - tslib "^2.5.0" - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" - integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@eslint/config-array@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" - integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== - dependencies: - "@eslint/object-schema" "^2.1.6" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/config-helpers@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" - integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== - -"@eslint/core@^0.13.0": - version "0.13.0" - resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.13.0.tgz#bf02f209846d3bf996f9e8009db62df2739b458c" - integrity sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/eslintrc@^3.3.1": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" - integrity sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@9.26.0", "@eslint/js@^9.26.0": - version "9.26.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.26.0.tgz#1e13126b67a3db15111d2dcc61f69a2acff70bd5" - integrity sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ== - -"@eslint/object-schema@^2.1.6": - version "2.1.6" - resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.6.tgz#58369ab5b5b3ca117880c0f6c0b0f32f6950f24f" - integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== - -"@eslint/plugin-kit@^0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz#47488d8f8171b5d4613e833313f3ce708e3525f8" - integrity sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA== - dependencies: - "@eslint/core" "^0.13.0" - levn "^0.4.1" - -"@ethereumjs/common@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-3.2.0.tgz#b71df25845caf5456449163012074a55f048e0a0" - integrity sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA== - dependencies: - "@ethereumjs/util" "^8.1.0" - crc-32 "^1.2.0" - -"@ethereumjs/rlp@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" - integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== - -"@ethereumjs/tx@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-4.2.0.tgz#5988ae15daf5a3b3c815493bc6b495e76009e853" - integrity sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw== - dependencies: - "@ethereumjs/common" "^3.2.0" - "@ethereumjs/rlp" "^4.0.1" - "@ethereumjs/util" "^8.1.0" - ethereum-cryptography "^2.0.0" - -"@ethereumjs/util@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" - integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== - dependencies: - "@ethereumjs/rlp" "^4.0.1" - ethereum-cryptography "^2.0.0" - micro-ftch "^0.3.1" - -"@ethersproject/abi@5.8.0", "@ethersproject/abi@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.8.0.tgz#e79bb51940ac35fe6f3262d7fe2cdb25ad5f07d9" - integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/abstract-provider@5.8.0", "@ethersproject/abstract-provider@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz#7581f9be601afa1d02b95d26b9d9840926a35b0c" - integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - -"@ethersproject/abstract-signer@5.8.0", "@ethersproject/abstract-signer@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz#8d7417e95e4094c1797a9762e6789c7356db0754" - integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - -"@ethersproject/address@5.8.0", "@ethersproject/address@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.8.0.tgz#3007a2c352eee566ad745dca1dbbebdb50a6a983" - integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - -"@ethersproject/base64@5.8.0", "@ethersproject/base64@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.8.0.tgz#61c669c648f6e6aad002c228465d52ac93ee83eb" - integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== - dependencies: - "@ethersproject/bytes" "^5.8.0" - -"@ethersproject/basex@5.8.0", "@ethersproject/basex@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.8.0.tgz#1d279a90c4be84d1c1139114a1f844869e57d03a" - integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - -"@ethersproject/bignumber@5.8.0", "@ethersproject/bignumber@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7" - integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" - integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/constants@5.8.0", "@ethersproject/constants@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704" - integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - -"@ethersproject/contracts@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.8.0.tgz#243a38a2e4aa3e757215ea64e276f8a8c9d8ed73" - integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== - dependencies: - "@ethersproject/abi" "^5.8.0" - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - -"@ethersproject/hash@5.8.0", "@ethersproject/hash@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.8.0.tgz#b8893d4629b7f8462a90102572f8cd65a0192b4c" - integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/hdnode@5.8.0", "@ethersproject/hdnode@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.8.0.tgz#a51ae2a50bcd48ef6fd108c64cbae5e6ff34a761" - integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - -"@ethersproject/json-wallets@5.8.0", "@ethersproject/json-wallets@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" - integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== - dependencies: - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/pbkdf2" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.8.0", "@ethersproject/keccak256@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a" - integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== - dependencies: - "@ethersproject/bytes" "^5.8.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.8.0", "@ethersproject/logger@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" - integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== - -"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" - integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/pbkdf2@5.8.0", "@ethersproject/pbkdf2@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz#cd2621130e5dd51f6a0172e63a6e4a0c0a0ec37e" - integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - -"@ethersproject/properties@5.8.0", "@ethersproject/properties@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.8.0.tgz#405a8affb6311a49a91dabd96aeeae24f477020e" - integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== - dependencies: - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/providers@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.8.0.tgz#6c2ae354f7f96ee150439f7de06236928bc04cb4" - integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/base64" "^5.8.0" - "@ethersproject/basex" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/networks" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/web" "^5.8.0" - bech32 "1.1.4" - ws "8.18.0" - -"@ethersproject/random@5.8.0", "@ethersproject/random@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" - integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/rlp@5.8.0", "@ethersproject/rlp@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.8.0.tgz#5a0d49f61bc53e051532a5179472779141451de5" - integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/sha2@5.8.0", "@ethersproject/sha2@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" - integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.8.0", "@ethersproject/signing-key@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.8.0.tgz#9797e02c717b68239c6349394ea85febf8893119" - integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - bn.js "^5.2.1" - elliptic "6.6.1" - hash.js "1.1.7" - -"@ethersproject/solidity@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.8.0.tgz#429bb9fcf5521307a9448d7358c26b93695379b9" - integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/sha2" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" - integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/transactions@5.8.0", "@ethersproject/transactions@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.8.0.tgz#1e518822403abc99def5a043d1c6f6fe0007e46b" - integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== - dependencies: - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/rlp" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - -"@ethersproject/units@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.8.0.tgz#c12f34ba7c3a2de0e9fa0ed0ee32f3e46c5c2c6a" - integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== - dependencies: - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/constants" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - -"@ethersproject/wallet@5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.8.0.tgz#49c300d10872e6986d953e8310dc33d440da8127" - integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== - dependencies: - "@ethersproject/abstract-provider" "^5.8.0" - "@ethersproject/abstract-signer" "^5.8.0" - "@ethersproject/address" "^5.8.0" - "@ethersproject/bignumber" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/hdnode" "^5.8.0" - "@ethersproject/json-wallets" "^5.8.0" - "@ethersproject/keccak256" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/random" "^5.8.0" - "@ethersproject/signing-key" "^5.8.0" - "@ethersproject/transactions" "^5.8.0" - "@ethersproject/wordlists" "^5.8.0" - -"@ethersproject/web@5.8.0", "@ethersproject/web@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.8.0.tgz#3e54badc0013b7a801463a7008a87988efce8a37" - integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== - dependencies: - "@ethersproject/base64" "^5.8.0" - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@ethersproject/wordlists@5.8.0", "@ethersproject/wordlists@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.8.0.tgz#7a5654ee8d1bb1f4dbe43f91d217356d650ad821" - integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== - dependencies: - "@ethersproject/bytes" "^5.8.0" - "@ethersproject/hash" "^5.8.0" - "@ethersproject/logger" "^5.8.0" - "@ethersproject/properties" "^5.8.0" - "@ethersproject/strings" "^5.8.0" - -"@fastify/busboy@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-3.1.1.tgz#af3aea7f1e52ec916d8b5c9dcc0f09d4c060a3fc" - integrity sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw== - -"@graphql-codegen/add@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@graphql-codegen/add/-/add-5.0.3.tgz#1ede6bac9a93661ed7fa5808b203d079e1b1d215" - integrity sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.0.3" - tslib "~2.6.0" - -"@graphql-codegen/cli@5.0.6": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@graphql-codegen/cli/-/cli-5.0.6.tgz#586bd45ef7620406950687d0ed080ff383340e0a" - integrity sha512-1r5dtZ2l1jiCF/4qLMTcT7mEoWWWeqQlmn7HcPHgnV/OXIEodwox7XRGAmOKUygoabRjFF3S0jd0TWbkq5Otsw== - dependencies: - "@babel/generator" "^7.18.13" - "@babel/template" "^7.18.10" - "@babel/types" "^7.18.13" - "@graphql-codegen/client-preset" "^4.8.1" - "@graphql-codegen/core" "^4.0.2" - "@graphql-codegen/plugin-helpers" "^5.0.3" - "@graphql-tools/apollo-engine-loader" "^8.0.0" - "@graphql-tools/code-file-loader" "^8.0.0" - "@graphql-tools/git-loader" "^8.0.0" - "@graphql-tools/github-loader" "^8.0.0" - "@graphql-tools/graphql-file-loader" "^8.0.0" - "@graphql-tools/json-file-loader" "^8.0.0" - "@graphql-tools/load" "^8.1.0" - "@graphql-tools/prisma-loader" "^8.0.0" - "@graphql-tools/url-loader" "^8.0.0" - "@graphql-tools/utils" "^10.0.0" - "@whatwg-node/fetch" "^0.10.0" - chalk "^4.1.0" - cosmiconfig "^8.1.3" - debounce "^1.2.0" - detect-indent "^6.0.0" - graphql-config "^5.1.1" - inquirer "^8.0.0" - is-glob "^4.0.1" - jiti "^1.17.1" - json-to-pretty-yaml "^1.2.2" - listr2 "^4.0.5" - log-symbols "^4.0.0" - micromatch "^4.0.5" - shell-quote "^1.7.3" - string-env-interpolation "^1.0.1" - ts-log "^2.2.3" - tslib "^2.4.0" - yaml "^2.3.1" - yargs "^17.0.0" - -"@graphql-codegen/client-preset@^4.8.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/client-preset/-/client-preset-4.8.1.tgz#2743875bb4884f9936c875d903f507c6aa77a5e6" - integrity sha512-XLF2V7WKLnepvrGE44JP+AvjS+Oz9AT0oYgTl/6d9btQ+2VYFcmwQPjNAuMVHipqE9I6h8hSEfH9hUrzUptB1g== - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/template" "^7.20.7" - "@graphql-codegen/add" "^5.0.3" - "@graphql-codegen/gql-tag-operations" "4.0.17" - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-codegen/typed-document-node" "^5.1.1" - "@graphql-codegen/typescript" "^4.1.6" - "@graphql-codegen/typescript-operations" "^4.6.1" - "@graphql-codegen/visitor-plugin-common" "^5.8.0" - "@graphql-tools/documents" "^1.0.0" - "@graphql-tools/utils" "^10.0.0" - "@graphql-typed-document-node/core" "3.2.0" - tslib "~2.6.0" - -"@graphql-codegen/core@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@graphql-codegen/core/-/core-4.0.2.tgz#7e6ec266276f54bbf02f60599d9e518f4a59d85e" - integrity sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.0.3" - "@graphql-tools/schema" "^10.0.0" - "@graphql-tools/utils" "^10.0.0" - tslib "~2.6.0" - -"@graphql-codegen/gql-tag-operations@4.0.17": - version "4.0.17" - resolved "https://registry.yarnpkg.com/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-4.0.17.tgz#3ad59148adbe65741476c96735818de0c1ad70e5" - integrity sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-codegen/visitor-plugin-common" "5.8.0" - "@graphql-tools/utils" "^10.0.0" - auto-bind "~4.0.0" - tslib "~2.6.0" - -"@graphql-codegen/plugin-helpers@^5.0.3", "@graphql-codegen/plugin-helpers@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/plugin-helpers/-/plugin-helpers-5.1.0.tgz#5c4ace748b9761d082ec1a0c19a82047bacce553" - integrity sha512-Y7cwEAkprbTKzVIe436TIw4w03jorsMruvCvu0HJkavaKMQbWY+lQ1RIuROgszDbxAyM35twB5/sUvYG5oW+yg== - dependencies: - "@graphql-tools/utils" "^10.0.0" - change-case-all "1.0.15" - common-tags "1.8.2" - import-from "4.0.0" - lodash "~4.17.0" - tslib "~2.6.0" - -"@graphql-codegen/schema-ast@^4.0.2": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/schema-ast/-/schema-ast-4.1.0.tgz#a1e71f99346495b9272161a9ed07756e82648726" - integrity sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.0.3" - "@graphql-tools/utils" "^10.0.0" - tslib "~2.6.0" - -"@graphql-codegen/typed-document-node@^5.1.1": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typed-document-node/-/typed-document-node-5.1.1.tgz#454f2cd717c895d1471807d0731af03f48d9dd51" - integrity sha512-Bp/BrMZDKRwzuVeLv+pSljneqONM7gqu57ZaV34Jbncu2hZWMRDMfizTKghoEwwZbRCYYfJO9tA0sYVVIfI1kg== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-codegen/visitor-plugin-common" "5.8.0" - auto-bind "~4.0.0" - change-case-all "1.0.15" - tslib "~2.6.0" - -"@graphql-codegen/typescript-operations@^4.6.1": - version "4.6.1" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript-operations/-/typescript-operations-4.6.1.tgz#763eda28c77fddee2b9ae9bd7baad050cffff0a5" - integrity sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-codegen/typescript" "^4.1.6" - "@graphql-codegen/visitor-plugin-common" "5.8.0" - auto-bind "~4.0.0" - tslib "~2.6.0" - -"@graphql-codegen/typescript@4.1.6", "@graphql-codegen/typescript@^4.1.6": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@graphql-codegen/typescript/-/typescript-4.1.6.tgz#f3481ccc1656e96892d629671fb2cff5dabc458b" - integrity sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-codegen/schema-ast" "^4.0.2" - "@graphql-codegen/visitor-plugin-common" "5.8.0" - auto-bind "~4.0.0" - tslib "~2.6.0" - -"@graphql-codegen/visitor-plugin-common@5.8.0", "@graphql-codegen/visitor-plugin-common@^5.8.0": - version "5.8.0" - resolved "https://registry.yarnpkg.com/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-5.8.0.tgz#1b796453eb96d8e6ad5d4d3acff304e4672781a0" - integrity sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA== - dependencies: - "@graphql-codegen/plugin-helpers" "^5.1.0" - "@graphql-tools/optimize" "^2.0.0" - "@graphql-tools/relay-operation-optimizer" "^7.0.0" - "@graphql-tools/utils" "^10.0.0" - auto-bind "~4.0.0" - change-case-all "1.0.15" - dependency-graph "^0.11.0" - graphql-tag "^2.11.0" - parse-filepath "^1.0.2" - tslib "~2.6.0" - -"@graphql-hive/signal@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@graphql-hive/signal/-/signal-1.0.0.tgz#6e2193660a47c925abadbe72293dfc9430e24f8f" - integrity sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag== - -"@graphql-tools/apollo-engine-loader@^8.0.0": - version "8.0.20" - resolved "https://registry.yarnpkg.com/@graphql-tools/apollo-engine-loader/-/apollo-engine-loader-8.0.20.tgz#dbb7d294a3fbf01ecb05004bd6e34a01029718cd" - integrity sha512-m5k9nXSyjq31yNsEqDXLyykEjjn3K3Mo73oOKI+Xjy8cpnsgbT4myeUJIYYQdLrp7fr9Y9p7ZgwT5YcnwmnAbA== - dependencies: - "@graphql-tools/utils" "^10.8.6" - "@whatwg-node/fetch" "^0.10.0" - sync-fetch "0.6.0-2" - tslib "^2.4.0" - -"@graphql-tools/batch-execute@^9.0.15": - version "9.0.15" - resolved "https://registry.yarnpkg.com/@graphql-tools/batch-execute/-/batch-execute-9.0.15.tgz#bd23d95ef6157c39416a35308cf295583d6c09e1" - integrity sha512-qlWUl6yi87FU5WvyJ0uD81R4Y30oQIuW3mJCjOrEvifyT+f/rEqSZFOhYrofYoZAoTcwqOhy6WgH+b9+AtRYjA== - dependencies: - "@graphql-tools/utils" "^10.8.1" - "@whatwg-node/promise-helpers" "^1.3.0" - dataloader "^2.2.3" - tslib "^2.8.1" - -"@graphql-tools/code-file-loader@^8.0.0": - version "8.1.20" - resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-8.1.20.tgz#83f1af7b051e0e2a91d9f6412e368a536eabb86c" - integrity sha512-GzIbjjWJIc04KWnEr8VKuPe0FA2vDTlkaeub5p4lLimljnJ6C0QSkOyCUnFmsB9jetQcHm0Wfmn/akMnFUG+wA== - dependencies: - "@graphql-tools/graphql-tag-pluck" "8.3.19" - "@graphql-tools/utils" "^10.8.6" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/delegate@^10.2.17": - version "10.2.17" - resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-10.2.17.tgz#e245d18c5772608822108283491e24b4b1268747" - integrity sha512-z+LpZrTQCEXA4fbdJcSsvhaMqT4xi/O8B0mP30ENGyTbSfa20QamOQx9jgCiw2ii/ucwxfGMhygwlpZG36EU4w== - dependencies: - "@graphql-tools/batch-execute" "^9.0.15" - "@graphql-tools/executor" "^1.4.7" - "@graphql-tools/schema" "^10.0.11" - "@graphql-tools/utils" "^10.8.1" - "@repeaterjs/repeater" "^3.0.6" - "@whatwg-node/promise-helpers" "^1.3.0" - dataloader "^2.2.3" - dset "^3.1.2" - tslib "^2.8.1" - -"@graphql-tools/documents@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@graphql-tools/documents/-/documents-1.0.1.tgz#ae19cd5667d22c23b331d3a1429443ed7130faee" - integrity sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA== - dependencies: - lodash.sortby "^4.7.0" - tslib "^2.4.0" - -"@graphql-tools/executor-common@^0.0.4": - version "0.0.4" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-common/-/executor-common-0.0.4.tgz#763603a6d7a22bb09d67ce682e84a0d730ff2bf9" - integrity sha512-SEH/OWR+sHbknqZyROCFHcRrbZeUAyjCsgpVWCRjqjqRbiJiXq6TxNIIOmpXgkrXWW/2Ev4Wms6YSGJXjdCs6Q== - dependencies: - "@envelop/core" "^5.2.3" - "@graphql-tools/utils" "^10.8.1" - -"@graphql-tools/executor-graphql-ws@^2.0.1": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-2.0.5.tgz#4e58fc96c2f080338ee5b9afaee8d5e26681d732" - integrity sha512-gI/D9VUzI1Jt1G28GYpvm5ckupgJ5O8mi5Y657UyuUozX34ErfVdZ81g6oVcKFQZ60LhCzk7jJeykK48gaLhDw== - dependencies: - "@graphql-tools/executor-common" "^0.0.4" - "@graphql-tools/utils" "^10.8.1" - "@whatwg-node/disposablestack" "^0.0.6" - graphql-ws "^6.0.3" - isomorphic-ws "^5.0.0" - tslib "^2.8.1" - ws "^8.17.1" - -"@graphql-tools/executor-http@^1.1.9": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-http/-/executor-http-1.3.3.tgz#057de79ebc90edbd242259cccb1268d37ee6c579" - integrity sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A== - dependencies: - "@graphql-hive/signal" "^1.0.0" - "@graphql-tools/executor-common" "^0.0.4" - "@graphql-tools/utils" "^10.8.1" - "@repeaterjs/repeater" "^3.0.4" - "@whatwg-node/disposablestack" "^0.0.6" - "@whatwg-node/fetch" "^0.10.4" - "@whatwg-node/promise-helpers" "^1.3.0" - meros "^1.2.1" - tslib "^2.8.1" - -"@graphql-tools/executor-legacy-ws@^1.1.17": - version "1.1.17" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.1.17.tgz#55cf369866fff0b268963daf94041bc8621bb345" - integrity sha512-TvltY6eL4DY1Vt66Z8kt9jVmNcI+WkvVPQZrPbMCM3rv2Jw/sWvSwzUBezRuWX0sIckMifYVh23VPcGBUKX/wg== - dependencies: - "@graphql-tools/utils" "^10.8.6" - "@types/ws" "^8.0.0" - isomorphic-ws "^5.0.0" - tslib "^2.4.0" - ws "^8.17.1" - -"@graphql-tools/executor@^1.4.7": - version "1.4.7" - resolved "https://registry.yarnpkg.com/@graphql-tools/executor/-/executor-1.4.7.tgz#86bf0b26f2add5b686ec96e866ee22d1b81f9b6b" - integrity sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA== - dependencies: - "@graphql-tools/utils" "^10.8.6" - "@graphql-typed-document-node/core" "^3.2.0" - "@repeaterjs/repeater" "^3.0.4" - "@whatwg-node/disposablestack" "^0.0.6" - "@whatwg-node/promise-helpers" "^1.0.0" - tslib "^2.4.0" - -"@graphql-tools/git-loader@^8.0.0": - version "8.0.24" - resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-8.0.24.tgz#ced686e8264ca36ad510b1967804238aa4f04858" - integrity sha512-ypLC9N2bKNC0QNbrEBTbWKwbV607f7vK2rSGi9uFeGr8E29tWplo6or9V/+TM0ZfIkUsNp/4QX/zKTgo8SbwQg== - dependencies: - "@graphql-tools/graphql-tag-pluck" "8.3.19" - "@graphql-tools/utils" "^10.8.6" - is-glob "4.0.3" - micromatch "^4.0.8" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/github-loader@^8.0.0": - version "8.0.20" - resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-8.0.20.tgz#769717828c47f751f5c1a25b44ec270cdcd222be" - integrity sha512-Icch8bKZ1iP3zXCB9I0ded1hda9NPskSSalw7ZM21kXvLiOR5nZhdqPF65gCFkIKo+O4NR4Bp51MkKj+wl+vpg== - dependencies: - "@graphql-tools/executor-http" "^1.1.9" - "@graphql-tools/graphql-tag-pluck" "^8.3.19" - "@graphql-tools/utils" "^10.8.6" - "@whatwg-node/fetch" "^0.10.0" - "@whatwg-node/promise-helpers" "^1.0.0" - sync-fetch "0.6.0-2" - tslib "^2.4.0" - -"@graphql-tools/graphql-file-loader@^8.0.0": - version "8.0.19" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.0.19.tgz#6143e76cf0db88924b0282b8d27826d47c75ef40" - integrity sha512-kyEZL4rRJ5LelfCXL3GLgbMiu5Zd7memZaL8ZxPXGI7DA8On1e5IVBH3zZJwf7LzhjSVnPaHM7O/bRzGvTbXzQ== - dependencies: - "@graphql-tools/import" "7.0.18" - "@graphql-tools/utils" "^10.8.6" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/graphql-tag-pluck@8.3.19", "@graphql-tools/graphql-tag-pluck@^8.3.19": - version "8.3.19" - resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.19.tgz#a64da149742e63717b409003ac2f1f596605e529" - integrity sha512-LEw/6IYOUz48HjbWntZXDCzSXsOIM1AyWZrlLoJOrA8QAlhFd8h5Tny7opCypj8FO9VvpPFugWoNDh5InPOEQA== - dependencies: - "@babel/core" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" - "@graphql-tools/utils" "^10.8.6" - tslib "^2.4.0" - -"@graphql-tools/import@7.0.18": - version "7.0.18" - resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-7.0.18.tgz#08c8eb14b16d69b4e392d6d1b43485663d4477d8" - integrity sha512-1tw1/1QLB0n5bPWfIrhCRnrHIlbMvbwuifDc98g4FPhJ7OXD+iUQe+IpmD5KHVwYWXWhZOuJuq45DfV/WLNq3A== - dependencies: - "@graphql-tools/utils" "^10.8.6" - resolve-from "5.0.0" - tslib "^2.4.0" - -"@graphql-tools/json-file-loader@^8.0.0": - version "8.0.18" - resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-8.0.18.tgz#f89438c1463db75f97f419c17be234d9525bef5d" - integrity sha512-JjjIxxewgk8HeMR3npR3YbOkB7fxmdgmqB9kZLWdkRKBxrRXVzhryyq+mhmI0Evzt6pNoHIc3vqwmSctG2sddg== - dependencies: - "@graphql-tools/utils" "^10.8.6" - globby "^11.0.3" - tslib "^2.4.0" - unixify "^1.0.0" - -"@graphql-tools/load@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-8.1.0.tgz#4aa03f071a8777e314b10289b7d6097daaaf8783" - integrity sha512-OGfOm09VyXdNGJS/rLqZ6ztCiG2g6AMxhwtET8GZXTbnjptFc17GtKwJ3Jv5w7mjJ8dn0BHydvIuEKEUK4ciYw== - dependencies: - "@graphql-tools/schema" "^10.0.23" - "@graphql-tools/utils" "^10.8.6" - p-limit "3.1.0" - tslib "^2.4.0" - -"@graphql-tools/merge@^9.0.0", "@graphql-tools/merge@^9.0.24": - version "9.0.24" - resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-9.0.24.tgz#1f366e85588894cb496bd1c332be7665db143df2" - integrity sha512-NzWx/Afl/1qHT3Nm1bghGG2l4jub28AdvtG11PoUlmjcIjnFBJMv4vqL0qnxWe8A82peWo4/TkVdjJRLXwgGEw== - dependencies: - "@graphql-tools/utils" "^10.8.6" - tslib "^2.4.0" - -"@graphql-tools/optimize@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@graphql-tools/optimize/-/optimize-2.0.0.tgz#7a9779d180824511248a50c5a241eff6e7a2d906" - integrity sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg== - dependencies: - tslib "^2.4.0" - -"@graphql-tools/prisma-loader@^8.0.0": - version "8.0.17" - resolved "https://registry.yarnpkg.com/@graphql-tools/prisma-loader/-/prisma-loader-8.0.17.tgz#bc7efddb579fb85800540dd35284380e9df851a2" - integrity sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg== - dependencies: - "@graphql-tools/url-loader" "^8.0.15" - "@graphql-tools/utils" "^10.5.6" - "@types/js-yaml" "^4.0.0" - "@whatwg-node/fetch" "^0.10.0" - chalk "^4.1.0" - debug "^4.3.1" - dotenv "^16.0.0" - graphql-request "^6.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.0" - jose "^5.0.0" - js-yaml "^4.0.0" - lodash "^4.17.20" - scuid "^1.1.0" - tslib "^2.4.0" - yaml-ast-parser "^0.0.43" - -"@graphql-tools/relay-operation-optimizer@^7.0.0": - version "7.0.19" - resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-7.0.19.tgz#f04bd099877dc470b9ed4c65a5375a1a3e2335f1" - integrity sha512-xnjLpfzw63yIX1bo+BVh4j1attSwqEkUbpJ+HAhdiSUa3FOQFfpWgijRju+3i87CwhjBANqdTZbcsqLT1hEXig== - dependencies: - "@ardatan/relay-compiler" "^12.0.3" - "@graphql-tools/utils" "^10.8.6" - tslib "^2.4.0" - -"@graphql-tools/schema@^10.0.0", "@graphql-tools/schema@^10.0.11", "@graphql-tools/schema@^10.0.23": - version "10.0.23" - resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-10.0.23.tgz#d8865e96f37a04ca43303d7024add7edbe0c5ed4" - integrity sha512-aEGVpd1PCuGEwqTXCStpEkmheTHNdMayiIKH1xDWqYp9i8yKv9FRDgkGrY4RD8TNxnf7iII+6KOBGaJ3ygH95A== - dependencies: - "@graphql-tools/merge" "^9.0.24" - "@graphql-tools/utils" "^10.8.6" - tslib "^2.4.0" - -"@graphql-tools/url-loader@^8.0.0", "@graphql-tools/url-loader@^8.0.15": - version "8.0.31" - resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-8.0.31.tgz#75cd36b8b45c87993b4dd2149a83fa9ad3cd2a67" - integrity sha512-QGP3py6DAdKERHO5D38Oi+6j+v0O3rkBbnLpyOo87rmIRbwE6sOkL5JeHegHs7EEJ279fBX6lMt8ry0wBMGtyA== - dependencies: - "@graphql-tools/executor-graphql-ws" "^2.0.1" - "@graphql-tools/executor-http" "^1.1.9" - "@graphql-tools/executor-legacy-ws" "^1.1.17" - "@graphql-tools/utils" "^10.8.6" - "@graphql-tools/wrap" "^10.0.16" - "@types/ws" "^8.0.0" - "@whatwg-node/fetch" "^0.10.0" - "@whatwg-node/promise-helpers" "^1.0.0" - isomorphic-ws "^5.0.0" - sync-fetch "0.6.0-2" - tslib "^2.4.0" - ws "^8.17.1" - -"@graphql-tools/utils@^10.0.0", "@graphql-tools/utils@^10.5.6", "@graphql-tools/utils@^10.8.1", "@graphql-tools/utils@^10.8.6": - version "10.8.6" - resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-10.8.6.tgz#69ef29e408a27919108b2b2227fe8b465acf9e5c" - integrity sha512-Alc9Vyg0oOsGhRapfL3xvqh1zV8nKoFUdtLhXX7Ki4nClaIJXckrA86j+uxEuG3ic6j4jlM1nvcWXRn/71AVLQ== - dependencies: - "@graphql-typed-document-node/core" "^3.1.1" - "@whatwg-node/promise-helpers" "^1.0.0" - cross-inspect "1.0.1" - dset "^3.1.4" - tslib "^2.4.0" - -"@graphql-tools/wrap@^10.0.16": - version "10.0.35" - resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-10.0.35.tgz#02cf9054a8d42d6d21d74530e80c41443962539b" - integrity sha512-qBga3wo7+GqY+ClGexiyRz9xgy1RWozZryTuGX8usGWPa4wKi/tJS4rKWQQesgB3Fh//SZUCRA5u2nwZaZQw1Q== - dependencies: - "@graphql-tools/delegate" "^10.2.17" - "@graphql-tools/schema" "^10.0.11" - "@graphql-tools/utils" "^10.8.1" - "@whatwg-node/promise-helpers" "^1.3.0" - tslib "^2.8.1" - -"@graphql-typed-document-node/core@3.2.0", "@graphql-typed-document-node/core@^3.1.1", "@graphql-typed-document-node/core@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" - integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== - -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.yarnpkg.com/@humanfs/node/-/node-0.16.6.tgz#ee2a10eaabd1131987bf0488fd9b820174cd765e" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== - dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.1.tgz#c72a5c76a9fbaf3488e231b13dc52c0da7bab42a" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== - -"@humanwhocodes/retry@^0.4.2": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.4.3.tgz#c2b9d2e374ee62c586d3adbea87199b1d7a7a6ba" - integrity sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - -"@jest/expect-utils@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" - integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== - dependencies: - jest-get-type "^29.6.3" - -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - -"@jest/schemas@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" - integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== - dependencies: - "@sinclair/typebox" "^0.27.8" - -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - -"@jest/types@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" - integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== - dependencies: - "@jest/schemas" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^17.0.8" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" - integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.12": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== - dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" - -"@jridgewell/trace-mapping@^0.3.18": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jsdevtools/ono@^7.1.3": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796" - integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg== - -"@metamask/abi-utils@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@metamask/abi-utils/-/abi-utils-2.0.4.tgz#20908c1d910f7a17a89fdf5778a5c59d5cb8b8be" - integrity sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ== - dependencies: - "@metamask/superstruct" "^3.1.0" - "@metamask/utils" "^9.0.0" - -"@metamask/superstruct@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@metamask/superstruct/-/superstruct-3.1.0.tgz#148f786a674fba3ac885c1093ab718515bf7f648" - integrity sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA== - -"@metamask/utils@^9.0.0": - version "9.3.0" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-9.3.0.tgz#4726bd7f5d6a43ea8425b6d663ab9207f617c2d1" - integrity sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g== - dependencies: - "@ethereumjs/tx" "^4.2.0" - "@metamask/superstruct" "^3.1.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.3" - "@types/debug" "^4.1.7" - debug "^4.3.4" - pony-cause "^2.1.10" - semver "^7.5.4" - uuid "^9.0.1" - -"@modelcontextprotocol/sdk@^1.8.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz#9f1762efe6f3365f0bf3b019cc9bd1629d19bc50" - integrity sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ== - dependencies: - content-type "^1.0.5" - cors "^2.8.5" - cross-spawn "^7.0.3" - eventsource "^3.0.2" - express "^5.0.1" - express-rate-limit "^7.5.0" - pkce-challenge "^5.0.0" - raw-body "^3.0.0" - zod "^3.23.8" - zod-to-json-schema "^3.24.1" - -"@multiformats/base-x@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@multiformats/base-x/-/base-x-4.0.1.tgz#95ff0fa58711789d53aefb2590a8b7a4e715d121" - integrity sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw== - -"@noble/ciphers@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.2.1.tgz#3812b72c057a28b44ff0ad4aff5ca846e5b9cdc9" - integrity sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA== - -"@noble/curves@1.4.2", "@noble/curves@~1.4.0": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" - integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== - dependencies: - "@noble/hashes" "1.4.0" - -"@noble/curves@1.8.1", "@noble/curves@~1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.1.tgz#19bc3970e205c99e4bdb1c64a4785706bce497ff" - integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== - dependencies: - "@noble/hashes" "1.7.1" - -"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" - integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== - -"@noble/hashes@1.7.1", "@noble/hashes@^1.3.1", "@noble/hashes@~1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" - integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@openzeppelin/merkle-tree@^1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@openzeppelin/merkle-tree/-/merkle-tree-1.0.8.tgz#31ea9cdc09de37315c32650a9772db1352dcdcd8" - integrity sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow== - dependencies: - "@metamask/abi-utils" "^2.0.4" - ethereum-cryptography "^3.0.0" - -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - -"@repeaterjs/repeater@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.4.tgz#a04d63f4d1bf5540a41b01a921c9a7fddc3bd1ca" - integrity sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA== - -"@repeaterjs/repeater@^3.0.6": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@repeaterjs/repeater/-/repeater-3.0.6.tgz#be23df0143ceec3c69f8b6c2517971a5578fdaa2" - integrity sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA== - -"@rollup/plugin-alias@^3.1.1": - version "3.1.9" - resolved "https://registry.yarnpkg.com/@rollup/plugin-alias/-/plugin-alias-3.1.9.tgz#a5d267548fe48441f34be8323fb64d1d4a1b3fdf" - integrity sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw== - dependencies: - slash "^3.0.0" - -"@rollup/plugin-babel@^5.2.2": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-commonjs@^17.0.0": - version "17.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz#757ec88737dffa8aa913eb392fade2e45aef2a2d" - integrity sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew== - dependencies: - "@rollup/pluginutils" "^3.1.0" - commondir "^1.0.1" - estree-walker "^2.0.1" - glob "^7.1.6" - is-reference "^1.2.1" - magic-string "^0.25.7" - resolve "^1.17.0" - -"@rollup/plugin-json@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^11.0.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.19.0" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rollup/pluginutils@^4.1.2": - version "4.2.1" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" - integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== - dependencies: - estree-walker "^2.0.1" - picomatch "^2.2.2" - -"@scure/base@^1.1.3", "@scure/base@~1.2.2", "@scure/base@~1.2.4": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.4.tgz#002eb571a35d69bdb4c214d0995dff76a8dcd2a9" - integrity sha512-5Yy9czTO47mqz+/J8GM6GIId4umdCk1wc1q8rKERQulIoc8VP9pzDcghv10Tl2E7R96ZUx/PhND3ESYUQX8NuQ== - -"@scure/base@~1.1.6": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" - integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== - -"@scure/bip32@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" - integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== - dependencies: - "@noble/curves" "~1.4.0" - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@scure/bip32@1.6.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.2.tgz#093caa94961619927659ed0e711a6e4bf35bffd0" - integrity sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw== - dependencies: - "@noble/curves" "~1.8.1" - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.2" - -"@scure/bip39@1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" - integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== - dependencies: - "@noble/hashes" "~1.4.0" - "@scure/base" "~1.1.6" - -"@scure/bip39@1.5.4": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.4.tgz#07fd920423aa671be4540d59bdd344cc1461db51" - integrity sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA== - dependencies: - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.4" - -"@sinclair/typebox@^0.27.8": - version "0.27.8" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== - -"@sinonjs/commons@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" - integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - -"@surma/rollup-plugin-off-main-thread@^2.2.2": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" - integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== - dependencies: - ejs "^3.1.6" - json5 "^2.2.0" - magic-string "^0.25.0" - string.prototype.matchall "^4.0.6" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tsconfig/node10@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" - integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" - integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== - -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" - integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babel__traverse@^7.0.6": - version "7.20.6" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.6.tgz#8dc9f0ae0f202c08d8d4dab648912c8d6038e3f7" - integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg== - dependencies: - "@babel/types" "^7.20.7" - -"@types/debug@^4.1.7": - version "4.1.12" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" - integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== - dependencies: - "@types/ms" "*" - -"@types/estree@*", "@types/estree@^1.0.6": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" - integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/graceful-fs@^4.1.3": - version "4.1.9" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" - integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^29.5.14": - version "29.5.14" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5" - integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - -"@types/js-yaml@^4.0.0": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.5.tgz#738dd390a6ecc5442f35e7f03fa1431353f7e138" - integrity sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA== - -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - -"@types/minimist@^1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" - integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== - -"@types/ms@*": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" - integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== - -"@types/node@*", "@types/node@>=13.7.0", "@types/node@^22.15.17": - version "22.15.17" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.17.tgz#355ccec95f705b664e4332bb64a7f07db30b7055" - integrity sha512-wIX2aSZL5FE+MR0JlvF87BNVrtFWf6AE6rxSE9X7OwnVvoyCQjpzSRJ+M87se/4QCkCiebQAqrJ0y6fwIyi7nw== - dependencies: - undici-types "~6.21.0" - -"@types/normalize-package-data@^2.4.0": - version "2.4.4" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz#56e2cc26c397c038fab0e3a917a12d5c5909e901" - integrity sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/prettier@^2.1.1": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/ws@^8.0.0": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== - dependencies: - "@types/node" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^17.0.8": - version "17.0.22" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.22.tgz#7dd37697691b5f17d020f3c63e7a45971ff71e9a" - integrity sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.32.1.tgz#9185b3eaa3b083d8318910e12d56c68b3c4f45b4" - integrity sha512-6u6Plg9nP/J1GRpe/vcjjabo6Uc5YQPAMxsgQyGC/I0RuukiG1wIe3+Vtg3IrSCVJDmqK3j8adrtzXSENRtFgg== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.32.1" - "@typescript-eslint/type-utils" "8.32.1" - "@typescript-eslint/utils" "8.32.1" - "@typescript-eslint/visitor-keys" "8.32.1" - graphemer "^1.4.0" - ignore "^7.0.0" - natural-compare "^1.4.0" - ts-api-utils "^2.1.0" - -"@typescript-eslint/parser@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.32.1.tgz#18b0e53315e0bc22b2619d398ae49a968370935e" - integrity sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg== - dependencies: - "@typescript-eslint/scope-manager" "8.32.1" - "@typescript-eslint/types" "8.32.1" - "@typescript-eslint/typescript-estree" "8.32.1" - "@typescript-eslint/visitor-keys" "8.32.1" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.32.1.tgz#9a6bf5fb2c5380e14fe9d38ccac6e4bbe17e8afc" - integrity sha512-7IsIaIDeZn7kffk7qXC3o6Z4UblZJKV3UBpkvRNpr5NSyLji7tvTcvmnMNYuYLyh26mN8W723xpo3i4MlD33vA== - dependencies: - "@typescript-eslint/types" "8.32.1" - "@typescript-eslint/visitor-keys" "8.32.1" - -"@typescript-eslint/type-utils@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.32.1.tgz#b9292a45f69ecdb7db74d1696e57d1a89514d21e" - integrity sha512-mv9YpQGA8iIsl5KyUPi+FGLm7+bA4fgXaeRcFKRDRwDMu4iwrSHeDPipwueNXhdIIZltwCJv+NkxftECbIZWfA== - dependencies: - "@typescript-eslint/typescript-estree" "8.32.1" - "@typescript-eslint/utils" "8.32.1" - debug "^4.3.4" - ts-api-utils "^2.1.0" - -"@typescript-eslint/types@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.32.1.tgz#b19fe4ac0dc08317bae0ce9ec1168123576c1d4b" - integrity sha512-YmybwXUJcgGqgAp6bEsgpPXEg6dcCyPyCSr0CAAueacR/CCBi25G3V8gGQ2kRzQRBNol7VQknxMs9HvVa9Rvfg== - -"@typescript-eslint/typescript-estree@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.32.1.tgz#9023720ca4ecf4f59c275a05b5fed69b1276face" - integrity sha512-Y3AP9EIfYwBb4kWGb+simvPaqQoT5oJuzzj9m0i6FCY6SPvlomY2Ei4UEMm7+FXtlNJbor80ximyslzaQF6xhg== - dependencies: - "@typescript-eslint/types" "8.32.1" - "@typescript-eslint/visitor-keys" "8.32.1" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.1.0" - -"@typescript-eslint/utils@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.32.1.tgz#4d6d5d29b9e519e9a85e9a74e9f7bdb58abe9704" - integrity sha512-DsSFNIgLSrc89gpq1LJB7Hm1YpuhK086DRDJSNrewcGvYloWW1vZLHBTIvarKZDcAORIy/uWNx8Gad+4oMpkSA== - dependencies: - "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.32.1" - "@typescript-eslint/types" "8.32.1" - "@typescript-eslint/typescript-estree" "8.32.1" - -"@typescript-eslint/visitor-keys@8.32.1": - version "8.32.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.32.1.tgz#4321395cc55c2eb46036cbbb03e101994d11ddca" - integrity sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w== - dependencies: - "@typescript-eslint/types" "8.32.1" - eslint-visitor-keys "^4.2.0" - -"@weiroll/weiroll.js@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@weiroll/weiroll.js/-/weiroll.js-0.3.0.tgz#75a7b6c7016c0c0c2be13e6be408a4ead1c68815" - integrity sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw== - dependencies: - ethers "^5.3.1" - -"@whatwg-node/disposablestack@^0.0.6": - version "0.0.6" - resolved "https://registry.yarnpkg.com/@whatwg-node/disposablestack/-/disposablestack-0.0.6.tgz#2064a1425ea66194def6df0c7a1851b6939c82bb" - integrity sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw== - dependencies: - "@whatwg-node/promise-helpers" "^1.0.0" - tslib "^2.6.3" - -"@whatwg-node/fetch@^0.10.0", "@whatwg-node/fetch@^0.10.4": - version "0.10.6" - resolved "https://registry.yarnpkg.com/@whatwg-node/fetch/-/fetch-0.10.6.tgz#ce2fc35e45558874ad2488160fc8102481c935e4" - integrity sha512-6uzhO2aQ757p3bSHcemA8C4pqEXuyBqyGAM7cYpO0c6/igRMV9As9XL0W12h5EPYMclgr7FgjmbVQBoWEdJ/yA== - dependencies: - "@whatwg-node/node-fetch" "^0.7.18" - urlpattern-polyfill "^10.0.0" - -"@whatwg-node/node-fetch@^0.7.18": - version "0.7.18" - resolved "https://registry.yarnpkg.com/@whatwg-node/node-fetch/-/node-fetch-0.7.18.tgz#19e008468734bd89857f7001f29d38037cdc0cc7" - integrity sha512-IxKdVWfZYasGiyxBcsROxq6FmDQu3MNNiOYJ/yqLKhe+Qq27IIWsK7ItbjS2M9L5aM5JxjWkIS7JDh7wnsn+CQ== - dependencies: - "@fastify/busboy" "^3.1.1" - "@whatwg-node/disposablestack" "^0.0.6" - "@whatwg-node/promise-helpers" "^1.3.1" - tslib "^2.6.3" - -"@whatwg-node/promise-helpers@^1.0.0", "@whatwg-node/promise-helpers@^1.2.1", "@whatwg-node/promise-helpers@^1.2.4", "@whatwg-node/promise-helpers@^1.3.0", "@whatwg-node/promise-helpers@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@whatwg-node/promise-helpers/-/promise-helpers-1.3.1.tgz#65f1820fa652ddc1062aa0fe7456726e8676ea43" - integrity sha512-D+OwTEunoQhVHVToD80dPhfz9xgPLqJyEA3F5jCRM14A2u8tBBQVdZekqfqx6ZAfZ+POT4Hb0dn601UKMsvADw== - dependencies: - tslib "^2.6.3" - -accepts@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" - integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== - dependencies: - mime-types "^3.0.0" - negotiator "^1.0.0" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^8.1.1: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.0" - -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1: - version "8.14.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" - integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== - -acorn@^8.5.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -agent-base@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" - integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== - dependencies: - debug "^4.3.4" - -agent-base@^7.1.2: - version "7.1.3" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.3.tgz#29435eb821bc4194633a5b89e5bc4703bafc25a1" - integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.11.0: - version "8.16.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.16.0.tgz#22e2a92b94f005f7e0f9c9d39652ef0b8f6f0cb4" - integrity sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw== - dependencies: - fast-deep-equal "^3.1.3" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.4.1" - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -anymatch@^3.0.3: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -arr-diff@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" - integrity sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA== - dependencies: - arr-flatten "^1.0.1" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-unique@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" - integrity sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-each@^1.0.0: - version "1.0.6" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" - integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg== - -async@^3.2.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" - integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -asyncro@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" - integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -auto-bind@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" - integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== - -autoprefixer@^10.1.0: - version "10.4.13" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8" - integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg== - dependencies: - browserslist "^4.21.4" - caniuse-lite "^1.0.30001426" - fraction.js "^4.2.0" - normalize-range "^0.1.2" - picocolors "^1.0.0" - postcss-value-parser "^4.2.0" - -available-typed-arrays@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" - integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-inline-import@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-inline-import/-/babel-plugin-inline-import-3.0.0.tgz#220eb2a52f8e779d8fb89447f950275e1e3f5981" - integrity sha512-thnykl4FMb8QjMjVCuZoUmAM7r2mnTn5qJwrryCvDv6rugbJlTHZMctdjDtEgD0WBAXJOLJSGXN3loooEwx7UQ== - dependencies: - require-resolve "0.0.2" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" - integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== - dependencies: - "@babel/runtime" "^7.12.5" - cosmiconfig "^7.0.0" - resolve "^1.19.0" - -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.13" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz#7d445f0e0607ebc8fb6b01d7e8fb02069b91dd8b" - integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g== - dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.4" - semver "^6.3.1" - -babel-plugin-polyfill-corejs3@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz#4e4e182f1bb37c7ba62e2af81d8dd09df31344f6" - integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.3" - core-js-compat "^3.40.0" - -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz#428c615d3c177292a22b4f93ed99e358d7906a9b" - integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.4" - -babel-plugin-transform-async-to-promises@^0.8.18: - version "0.8.18" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.18.tgz#f4dc5980b8afa0fc9c784b8d931afde913413e39" - integrity sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw== - -babel-plugin-transform-replace-expressions@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-replace-expressions/-/babel-plugin-transform-replace-expressions-0.2.0.tgz#59cba8df4b4a675e7c78cd21548f8e7685bbc30d" - integrity sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA== - dependencies: - "@babel/parser" "^7.3.3" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - -babel-runtime@^6.9.2: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa" - integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== - dependencies: - bytes "^3.1.2" - content-type "^1.0.5" - debug "^4.4.0" - http-errors "^2.0.0" - iconv-lite "^0.6.3" - on-finished "^2.4.1" - qs "^6.14.0" - raw-body "^3.0.0" - type-is "^2.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^1.8.2: - version "1.8.5" - resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" - integrity sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw== - dependencies: - expand-range "^1.8.1" - preserve "^0.2.0" - repeat-element "^1.1.2" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -brotli-size@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" - integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== - dependencies: - duplexer "0.1.1" - -browserslist@^4.0.0, browserslist@^4.21.4: - version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== - dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" - -browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" - integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== - dependencies: - caniuse-lite "^1.0.30001716" - electron-to-chromium "^1.5.149" - node-releases "^2.0.19" - update-browserslist-db "^1.1.3" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -bytes@3.1.2, bytes@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-bound@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0, camelcase@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001426: - version "1.0.30001460" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001460.tgz#31d2e26f0a2309860ed3eff154e03890d9d851a7" - integrity sha512-Bud7abqjvEjipUkpLs4D7gR0l8hBYBHoa+tGtKJHvT2AYzLp1z7EmVkUT4ERpVUfca8S2HGIVs883D8pUH1ZzQ== - -caniuse-lite@^1.0.30001449: - version "1.0.30001451" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" - integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w== - -caniuse-lite@^1.0.30001716: - version "1.0.30001717" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz#5d9fec5ce09796a1893013825510678928aca129" - integrity sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw== - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chalk@^1.0.0, chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -change-case-all@1.0.15: - version "1.0.15" - resolved "https://registry.yarnpkg.com/change-case-all/-/change-case-all-1.0.15.tgz#de29393167fc101d646cd76b0ef23e27d09756ad" - integrity sha512-3+GIFhk3sNuvFAJKU46o26OdzudQlPNBCu1ZQi3cMeMHhty1bhDxu2WrEilVNYaGvqUtR1VSigFcJOiS13dRhQ== - dependencies: - change-case "^4.1.2" - is-lower-case "^2.0.2" - is-upper-case "^2.0.2" - lower-case "^2.0.2" - lower-case-first "^2.0.2" - sponge-case "^1.0.1" - swap-case "^2.0.2" - title-case "^3.0.3" - upper-case "^2.0.2" - upper-case-first "^2.0.2" - -change-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - dependencies: - camel-case "^4.1.2" - capital-case "^1.0.4" - constant-case "^3.0.4" - dot-case "^3.0.4" - header-case "^2.0.4" - no-case "^3.0.4" - param-case "^3.0.4" - pascal-case "^3.1.2" - path-case "^3.0.4" - sentence-case "^3.0.4" - snake-case "^3.0.4" - tslib "^2.0.3" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar@^1.6.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - integrity sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg== - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -cids@^1.0.0, cids@^1.1.5, cids@^1.1.6: - version "1.1.9" - resolved "https://registry.yarnpkg.com/cids/-/cids-1.1.9.tgz#402c26db5c07059377bcd6fb82f2a24e7f2f4a4f" - integrity sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg== - dependencies: - multibase "^4.0.1" - multicodec "^3.0.1" - multihashes "^4.0.1" - uint8arrays "^3.0.0" - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.1" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colord@^2.9.1: - version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" - integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== - -colorette@^2.0.16: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^12.0.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -commander@^13.1.0: - version "13.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-13.1.0.tgz#776167db68c78f38dcce1f9b8d7b8b9a488abf46" - integrity sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -common-tags@1.8.2: - version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" - integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" - integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-with-sourcemaps@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" - integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== - dependencies: - source-map "^0.6.1" - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -content-disposition@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2" - integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - -cookie-signature@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793" - integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== - -cookie@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" - integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js-compat@^3.40.0: - version "3.42.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.42.0.tgz#ce19c29706ee5806e26d3cb3c542d4cfc0ed51bb" - integrity sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ== - dependencies: - browserslist "^4.24.4" - -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@^2.8.5: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - -cosmiconfig@^8.1.0, cosmiconfig@^8.1.3: - version "8.3.6" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" - integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== - dependencies: - import-fresh "^3.3.0" - js-yaml "^4.1.0" - parse-json "^5.2.0" - path-type "^4.0.0" - -coveralls@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.1.1.tgz#f5d4431d8b5ae69c5079c8f8ca00d64ac77cf081" - integrity sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww== - dependencies: - js-yaml "^3.13.1" - lcov-parse "^1.0.0" - log-driver "^1.2.7" - minimist "^1.2.5" - request "^2.88.2" - -cpx@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cpx/-/cpx-1.5.0.tgz#185be018511d87270dedccc293171e37655ab88f" - integrity sha512-jHTjZhsbg9xWgsP2vuNW2jnnzBX+p4T+vNI9Lbjzs1n4KhOfa22bQppiFYLsWQKd8TzmL5aSP/Me3yfsCwXbDA== - dependencies: - babel-runtime "^6.9.2" - chokidar "^1.6.0" - duplexer "^0.1.1" - glob "^7.0.5" - glob2base "^0.0.12" - minimatch "^3.0.2" - mkdirp "^0.5.1" - resolve "^1.1.7" - safe-buffer "^5.0.1" - shell-quote "^1.6.1" - subarg "^1.0.0" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^3.0.4, cross-fetch@^3.1.5, cross-fetch@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" - integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== - dependencies: - node-fetch "^2.7.0" - -cross-inspect@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.1.tgz#15f6f65e4ca963cf4cc1a2b5fef18f6ca328712b" - integrity sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A== - dependencies: - tslib "^2.4.0" - -cross-spawn@^7.0.0, cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-declaration-sorter@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec" - integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w== - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.14: - version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" - integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.1" - postcss-convert-values "^5.1.3" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.7" - postcss-merge-rules "^5.1.4" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.4" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.1" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.2" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.1: - version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" - integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== - dependencies: - cssnano-preset-default "^5.2.14" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" - integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== - -dataloader@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.2.3.tgz#42d10b4913515f5b37c6acedcb4960d6ae1b1517" - integrity sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA== - -debounce@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" - integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== - -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== - dependencies: - ms "^2.1.3" - -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize-keys@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" - integrity sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg== - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -deepmerge@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-properties@^1.1.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0, depd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -dependency-graph@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" - integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== - -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" - integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv@^16.0.0: - version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" - integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== - -dset@^3.1.2, dset@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.4.tgz#f8eaf5f023f068a036d08cd07dc9ffb7d0065248" - integrity sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -duplexer@0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" - integrity sha512-sxNZ+ljy+RA1maXoUReeqBBpBC6RLKmg5ewzV+x+mSETmWNoKdZN6vcQjpFROemza23hGFskJtFNoUWUaQ+R4Q== - -duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -ejs@^3.1.6: - version "3.1.10" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" - integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== - dependencies: - jake "^10.8.5" - -electron-to-chromium@^1.4.284: - version "1.4.294" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.294.tgz#ad80317b85f0859a9454680fbc1c726fefa7e6fd" - integrity sha512-PuHZB3jEN7D8WPPjLmBQAsqQz8tWHlkkB4n0E2OYw8RwVdmBYV0Wn+rUFH8JqYyIRb4HQhhedgxlZL163wqLrQ== - -electron-to-chromium@^1.5.149: - version "1.5.151" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.151.tgz#5edd6c17e1b2f14b4662c41b9379f96cc8c2bb7c" - integrity sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA== - -elliptic@6.6.1: - version "6.6.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" - integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" - integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -err-code@^3.0.0, err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6" - integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - es-set-tostringtag "^2.0.1" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.3" - get-symbol-description "^1.0.0" - globalthis "^1.0.3" - gopd "^1.0.1" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-proto "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.4" - is-array-buffer "^3.0.1" - is-callable "^1.2.7" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-typed-array "^1.1.10" - is-weakref "^1.0.2" - object-inspect "^1.12.2" - object-keys "^1.1.1" - object.assign "^4.1.4" - regexp.prototype.flags "^1.4.3" - safe-regex-test "^1.0.0" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" - typed-array-length "^1.0.4" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.9" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== - dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" - has-tostringtag "^1.0.0" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-plugin-unused-imports@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz#62ddc7446ccbf9aa7b6f1f0b00a980423cda2738" - integrity sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ== - -eslint-scope@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" - integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== - -eslint@^9.26.0: - version "9.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.26.0.tgz#978fe029adc2aceed28ab437bca876e83461c3b4" - integrity sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.20.0" - "@eslint/config-helpers" "^0.2.1" - "@eslint/core" "^0.13.0" - "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.26.0" - "@eslint/plugin-kit" "^0.2.8" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.2" - "@modelcontextprotocol/sdk" "^1.8.0" - "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.6" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.3.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - zod "^3.24.2" - -espree@^10.0.1, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== - dependencies: - acorn "^8.14.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -estree-walker@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -ethereum-cryptography@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" - integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== - dependencies: - "@noble/curves" "1.4.2" - "@noble/hashes" "1.4.0" - "@scure/bip32" "1.4.0" - "@scure/bip39" "1.3.0" - -ethereum-cryptography@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-3.1.0.tgz#0fa6dbc3cdd2927c87b9c018ff42616c4eec3f64" - integrity sha512-ZqHd92eOIH9RExpBUOgzpAgflyFv9/+Ca39G8V+oCjJPGjJUihQcG/Gl67I/Xn2HGS87dgnrCG3kb1jNClLi6g== - dependencies: - "@noble/ciphers" "1.2.1" - "@noble/curves" "1.8.1" - "@noble/hashes" "1.7.1" - "@scure/bip32" "1.6.2" - "@scure/bip39" "1.5.4" - -ethers@^5.3.1, ethers@^5.8.0: - version "5.8.0" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.8.0.tgz#97858dc4d4c74afce83ea7562fe9493cedb4d377" - integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== - dependencies: - "@ethersproject/abi" "5.8.0" - "@ethersproject/abstract-provider" "5.8.0" - "@ethersproject/abstract-signer" "5.8.0" - "@ethersproject/address" "5.8.0" - "@ethersproject/base64" "5.8.0" - "@ethersproject/basex" "5.8.0" - "@ethersproject/bignumber" "5.8.0" - "@ethersproject/bytes" "5.8.0" - "@ethersproject/constants" "5.8.0" - "@ethersproject/contracts" "5.8.0" - "@ethersproject/hash" "5.8.0" - "@ethersproject/hdnode" "5.8.0" - "@ethersproject/json-wallets" "5.8.0" - "@ethersproject/keccak256" "5.8.0" - "@ethersproject/logger" "5.8.0" - "@ethersproject/networks" "5.8.0" - "@ethersproject/pbkdf2" "5.8.0" - "@ethersproject/properties" "5.8.0" - "@ethersproject/providers" "5.8.0" - "@ethersproject/random" "5.8.0" - "@ethersproject/rlp" "5.8.0" - "@ethersproject/sha2" "5.8.0" - "@ethersproject/signing-key" "5.8.0" - "@ethersproject/solidity" "5.8.0" - "@ethersproject/strings" "5.8.0" - "@ethersproject/transactions" "5.8.0" - "@ethersproject/units" "5.8.0" - "@ethersproject/wallet" "5.8.0" - "@ethersproject/web" "5.8.0" - "@ethersproject/wordlists" "5.8.0" - -event-stream@=3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" - integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g== - dependencies: - duplexer "~0.1.1" - from "~0" - map-stream "~0.1.0" - pause-stream "0.0.11" - split "0.3" - stream-combiner "~0.0.4" - through "~2.3.1" - -eventemitter3@^4.0.4: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -eventsource-parser@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eventsource-parser/-/eventsource-parser-3.0.1.tgz#5e358dba9a55ba64ca90da883c4ca35bd82467bd" - integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA== - -eventsource@^3.0.2: - version "3.0.6" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-3.0.6.tgz#5c4b24cd70c0323eed2651a5ee07bd4bc391e656" - integrity sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA== - dependencies: - eventsource-parser "^3.0.1" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expand-brackets@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" - integrity sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA== - dependencies: - is-posix-bracket "^0.1.0" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-range@^1.8.1: - version "1.8.2" - resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" - integrity sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA== - dependencies: - fill-range "^2.1.0" - -expect@^29.0.0, expect@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" - integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== - dependencies: - "@jest/expect-utils" "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - -exponential-backoff@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" - integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== - -express-rate-limit@^7.5.0: - version "7.5.0" - resolved "https://registry.yarnpkg.com/express-rate-limit/-/express-rate-limit-7.5.0.tgz#6a67990a724b4fbbc69119419feef50c51e8b28f" - integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg== - -express@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9" - integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== - dependencies: - accepts "^2.0.0" - body-parser "^2.2.0" - content-disposition "^1.0.0" - content-type "^1.0.5" - cookie "^0.7.1" - cookie-signature "^1.2.1" - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - finalhandler "^2.1.0" - fresh "^2.0.0" - http-errors "^2.0.0" - merge-descriptors "^2.0.0" - mime-types "^3.0.0" - on-finished "^2.4.1" - once "^1.4.0" - parseurl "^1.3.3" - proxy-addr "^2.0.7" - qs "^6.14.0" - range-parser "^1.2.1" - router "^2.2.0" - send "^1.1.0" - serve-static "^2.2.0" - statuses "^2.0.1" - type-is "^2.0.1" - vary "^1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" - integrity sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg== - dependencies: - is-extglob "^1.0.0" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extract-files@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" - integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-glob@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - -fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fbjs-css-vars@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" - integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== - -fbjs@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-3.0.5.tgz#aa0edb7d5caa6340011790bd9249dbef8a81128d" - integrity sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg== - dependencies: - cross-fetch "^3.1.5" - fbjs-css-vars "^1.0.0" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^1.0.35" - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -figures@^1.0.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ== - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== - dependencies: - flat-cache "^4.0.0" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -filelist@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" - integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== - dependencies: - minimatch "^5.0.1" - -filename-regex@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" - integrity sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ== - -filesize@^6.1.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" - integrity sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ== - -fill-range@^2.1.0: - version "2.2.4" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" - integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== - dependencies: - is-number "^2.1.0" - isobject "^2.0.0" - randomatic "^3.0.0" - repeat-element "^1.1.2" - repeat-string "^1.5.2" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f" - integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== - dependencies: - debug "^4.4.0" - encodeurl "^2.0.0" - escape-html "^1.0.3" - on-finished "^2.4.1" - parseurl "^1.3.3" - statuses "^2.0.1" - -find-cache-dir@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-index@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" - integrity sha512-uJ5vWrfBKMcE6y2Z8834dwEZj9mNGxYa3t3I53OwFeuZ8D9oc2E5zcsrkuhX6h4iYrjhiv0T3szQmxlAV9uxDg== - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.4" - -flatted@^3.2.9: - version "3.3.3" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" - integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== - -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -for-own@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" - integrity sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw== - dependencies: - for-in "^1.0.1" - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" - integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== - -from@~0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" - integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g== - -fs-extra@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^11.2.0: - version "11.3.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" - integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^1.0.0: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -generic-names@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" - integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== - dependencies: - loader-utils "^3.2.0" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" - integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-intrinsic@^1.2.5, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob-base@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" - integrity sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA== - dependencies: - glob-parent "^2.0.0" - is-glob "^2.0.0" - -glob-parent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" - integrity sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w== - dependencies: - is-glob "^2.0.0" - -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob2base@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" - integrity sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA== - dependencies: - find-index "^0.1.1" - -glob@7.1.7: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^11.0.1: - version "11.0.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.2.tgz#3261e3897bbc603030b041fd77ba636022d51ce0" - integrity sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ== - dependencies: - foreground-child "^3.1.0" - jackspeak "^4.0.1" - minimatch "^10.0.0" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^2.0.0" - -glob@^7.0.5, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== - dependencies: - define-properties "^1.1.3" - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.3: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -gopd@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" - integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== - dependencies: - get-intrinsic "^1.1.3" - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -graceful-fs@^4.1.11, graceful-fs@^4.1.2: - version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" - integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== - -graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -graphql-config@^5.1.1: - version "5.1.5" - resolved "https://registry.yarnpkg.com/graphql-config/-/graphql-config-5.1.5.tgz#34e0bfba88e74b6eefd889716a9378086f595f7f" - integrity sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA== - dependencies: - "@graphql-tools/graphql-file-loader" "^8.0.0" - "@graphql-tools/json-file-loader" "^8.0.0" - "@graphql-tools/load" "^8.1.0" - "@graphql-tools/merge" "^9.0.0" - "@graphql-tools/url-loader" "^8.0.0" - "@graphql-tools/utils" "^10.0.0" - cosmiconfig "^8.1.0" - jiti "^2.0.0" - minimatch "^9.0.5" - string-env-interpolation "^1.0.1" - tslib "^2.4.0" - -graphql-request@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" - integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== - dependencies: - cross-fetch "^3.1.5" - extract-files "^9.0.0" - form-data "^3.0.0" - -graphql-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-6.1.0.tgz#f4eb2107967af3c7a5907eb3131c671eac89be4f" - integrity sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw== - dependencies: - "@graphql-typed-document-node/core" "^3.2.0" - cross-fetch "^3.1.5" - -graphql-tag@^2.11.0: - version "2.12.6" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" - integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== - dependencies: - tslib "^2.1.0" - -graphql-ws@^6.0.3: - version "6.0.4" - resolved "https://registry.yarnpkg.com/graphql-ws/-/graphql-ws-6.0.4.tgz#f0376170965f9535576b2d3e897db38b463a31f0" - integrity sha512-8b4OZtNOvv8+NZva8HXamrc0y1jluYC0+13gdh7198FKjVzXyTvVc95DCwGzaKEfn3YuWZxUqjJlHe3qKM/F2g== - -graphql@^16.11.0: - version "16.11.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" - integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== - -gzip-size@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" - integrity sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w== - dependencies: - duplexer "^0.1.1" - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -hamt-sharding@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6" - integrity sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA== - dependencies: - sparse-array "^1.3.1" - uint8arrays "^3.0.0" - -handlebars@^4.7.8: - version "4.7.8" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" - integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== - dependencies: - minimist "^1.2.5" - neo-async "^2.6.2" - source-map "^0.6.1" - wordwrap "^1.0.0" - optionalDependencies: - uglify-js "^3.1.4" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" - integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== - -has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.0, hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-errors@2.0.0, http-errors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-proxy-agent@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e" - integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== - dependencies: - agent-base "^7.1.0" - debug "^4.3.4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" - integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== - dependencies: - agent-base "^7.1.2" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.6.3, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== - -icss-utils@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -ignore@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078" - integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A== - -immutable@~3.7.6: - version "3.7.6" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" - integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== - -import-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== - dependencies: - import-from "^3.0.0" - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" - integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-from@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-4.0.0.tgz#2710b8d66817d232e16f4166e319248d3d5492e2" - integrity sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ== - -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== - dependencies: - resolve-from "^5.0.0" - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inquirer@^8.0.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - -interface-ipld-format@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/interface-ipld-format/-/interface-ipld-format-1.0.1.tgz#bee39c70c584a033e186ff057a2be89f215963e3" - integrity sha512-WV/ar+KQJVoQpqRDYdo7YPGYIUHJxCuOEhdvsRpzLqoOIVCqPKdMMYmsLL1nCRsF3yYNio+PAJbCKiv6drrEAg== - dependencies: - cids "^1.1.6" - multicodec "^3.0.1" - multihashes "^4.0.2" - -internal-slot@^1.0.3, internal-slot@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== - dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" - side-channel "^1.0.4" - -invariant@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -ipfs-only-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/ipfs-only-hash/-/ipfs-only-hash-4.0.0.tgz#b3bd60a244d9eb7394961aa9d812a2e5ac7c04d6" - integrity sha512-TE1DZCvfw8i3gcsTq3P4TFx3cKFJ3sluu/J3XINkJhIN9OwJgNMqKA+WnKx6ByCb1IoPXsTp1KM7tupElb6SyA== - dependencies: - ipfs-unixfs-importer "^7.0.1" - meow "^9.0.0" - -ipfs-unixfs-importer@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-7.0.3.tgz#b850e831ca9647d589ef50bc33421f65bab7bba6" - integrity sha512-qeFOlD3AQtGzr90sr5Tq1Bi8pT5Nr2tSI8z310m7R4JDYgZc6J1PEZO3XZQ8l1kuGoqlAppBZuOYmPEqaHcVQQ== - dependencies: - bl "^5.0.0" - cids "^1.1.5" - err-code "^3.0.1" - hamt-sharding "^2.0.0" - ipfs-unixfs "^4.0.3" - ipld-dag-pb "^0.22.2" - it-all "^1.0.5" - it-batch "^1.0.8" - it-first "^1.0.6" - it-parallel-batch "^1.0.9" - merge-options "^3.0.4" - multihashing-async "^2.1.0" - rabin-wasm "^0.1.4" - uint8arrays "^2.1.2" - -ipfs-unixfs@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-4.0.3.tgz#7c43e5726052ade4317245358ac541ef3d63d94e" - integrity sha512-hzJ3X4vlKT8FQ3Xc4M1szaFVjsc1ZydN+E4VQ91aXxfpjFn9G2wsMo1EFdAXNq/BUnN5dgqIOMP5zRYr3DTsAw== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - -ipld-dag-pb@^0.22.2: - version "0.22.3" - resolved "https://registry.yarnpkg.com/ipld-dag-pb/-/ipld-dag-pb-0.22.3.tgz#6d5af28b5752236a5cb0e0a1888c87dd733b55cd" - integrity sha512-dfG5C5OVAR4FEP7Al2CrHWvAyIM7UhAQrjnOYOIxXGQz5NlEj6wGX0XQf6Ru6or1na6upvV3NQfstapQG8X2rg== - dependencies: - cids "^1.0.0" - interface-ipld-format "^1.0.0" - multicodec "^3.0.1" - multihashing-async "^2.0.0" - protobufjs "^6.10.2" - stable "^0.1.8" - uint8arrays "^2.0.5" - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4" - integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA== - dependencies: - hasown "^2.0.0" - -is-array-buffer@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" - integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.2.0" - is-typed-array "^1.1.10" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q== - dependencies: - binary-extensions "^1.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" - integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== - -is-core-module@^2.13.0, is-core-module@^2.5.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" - integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== - dependencies: - hasown "^2.0.2" - -is-core-module@^2.16.0: - version "2.16.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" - integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== - dependencies: - hasown "^2.0.2" - -is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb" - integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw== - dependencies: - hasown "^2.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33" - integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg== - dependencies: - is-accessor-descriptor "^1.0.1" - is-data-descriptor "^1.0.1" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306" - integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== - dependencies: - is-accessor-descriptor "^1.0.1" - is-data-descriptor "^1.0.1" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-dotfile@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" - integrity sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg== - -is-equal-shallow@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" - integrity sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA== - dependencies: - is-primitive "^2.0.0" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" - integrity sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@4.0.3, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^2.0.0, is-glob@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" - integrity sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg== - dependencies: - is-extglob "^1.0.0" - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-2.0.2.tgz#1c0884d3012c841556243483aa5d522f47396d2a" - integrity sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ== - dependencies: - tslib "^2.0.3" - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" - integrity sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg== - dependencies: - kind-of "^3.0.2" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-posix-bracket@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" - integrity sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ== - -is-primitive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" - integrity sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q== - -is-promise@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" - integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== - -is-reference@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typed-array@^1.1.10, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - -is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-2.0.2.tgz#f1105ced1fe4de906a5f39553e7d3803fd804649" - integrity sha512-44pxmxAvnnAOwBg4tHPnkfvgjPwbc5QIsSstNU+YcJ1ovxVzCWpSGosPJOZh/a1tdl81fbgnLc9LLv+x2ywbPQ== - dependencies: - tslib "^2.0.3" - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isomorphic-ws@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz#e5529148912ecb9b451b46ed44d53dae1ce04bbf" - integrity sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4: - version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-instrument@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" - integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -it-all@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" - integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== - -it-batch@^1.0.8, it-batch@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-1.0.9.tgz#7e95aaacb3f9b1b8ca6c8b8367892171d6a5b37f" - integrity sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA== - -it-first@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" - integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== - -it-parallel-batch@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz#f889b4e1c7a62ef24111dbafbaaa010b33d00f69" - integrity sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ== - dependencies: - it-batch "^1.0.9" - -jackspeak@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.0.tgz#c489c079f2b636dc4cbe9b0312a13ff1282e561b" - integrity sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw== - dependencies: - "@isaacs/cliui" "^8.0.2" - -jake@^10.8.5: - version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" - integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== - dependencies: - async "^3.2.3" - chalk "^4.0.2" - filelist "^1.0.1" - minimatch "^3.0.4" - -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" - integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== - dependencies: - chalk "^4.0.0" - diff-sequences "^29.6.3" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - -jest-fetch-mock@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" - integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== - dependencies: - cross-fetch "^3.0.4" - promise-polyfill "^8.1.3" - -jest-get-type@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" - integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== - -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-matcher-utils@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" - integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== - dependencies: - chalk "^4.0.0" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - -jest-message-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" - integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.3" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - -jest-util@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" - integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - -jest-worker@^26.2.1: - version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" - integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^7.0.0" - -jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - -jiti@^1.17.1: - version "1.21.7" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.7.tgz#9dd81043424a3d28458b193d965f0d18a2300ba9" - integrity sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A== - -jiti@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-2.4.2.tgz#d19b7732ebb6116b06e2038da74a55366faef560" - integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A== - -jose@^5.0.0: - version "5.10.0" - resolved "https://registry.yarnpkg.com/jose/-/jose-5.10.0.tgz#c37346a099d6467c401351a9a0c2161e0f52c4be" - integrity sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg== - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.0.0, js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsesc@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" - integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -jsesc@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" - integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stringify-deterministic@^1.0.8: - version "1.0.12" - resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" - integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json-to-pretty-yaml@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/json-to-pretty-yaml/-/json-to-pretty-yaml-1.2.2.tgz#f4cd0bd0a5e8fe1df25aaf5ba118b099fd992d5b" - integrity sha512-rvm6hunfCcqegwYaG5T4yKJWxc9FXFgBVrcTZ4XfSVRwa5HA/Xs+vB/Eo9treYYHCeNM0nrSUr82V/M31Urc7A== - dependencies: - remedial "^1.0.7" - remove-trailing-spaces "^1.0.6" - -json5@^2.2.0, json5@^2.2.1, json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -keyv@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.1.3: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== - -lcov-parse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" - integrity sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.0.3, lilconfig@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -limiter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/limiter/-/limiter-3.0.0.tgz#03556b76d1a81f547caeecc6b83ecc6f24495715" - integrity sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -listr2@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" - integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== - dependencies: - cli-truncate "^2.1.0" - colorette "^2.0.16" - log-update "^4.0.0" - p-map "^4.0.0" - rfdc "^1.3.0" - rxjs "^7.5.5" - through "^2.3.8" - wrap-ansi "^7.0.0" - -loader-utils@^3.2.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" - integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.5, lodash@~4.17.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-driver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" - integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== - -log-symbols@^4.0.0, log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -loose-envify@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" - integrity sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg== - dependencies: - tslib "^2.0.3" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lru-cache@^11.0.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" - integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -magic-string@^0.25.0, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-cache@^0.2.0, map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg== - -map-obj@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" - integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== - -map-stream@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" - integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -math-random@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" - integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== - -maxmin@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166" - integrity sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw== - dependencies: - chalk "^1.0.0" - figures "^1.0.1" - gzip-size "^3.0.0" - pretty-bytes "^3.0.0" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -media-typer@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" - integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== - dependencies: - "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge-descriptors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" - integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== - -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -meros@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/meros/-/meros-1.3.0.tgz#c617d2092739d55286bf618129280f362e6242f2" - integrity sha512-2BNGOimxEz5hmjUG2FwoxCt5HN7BXdaWyFqEwxPTrJzVdABtrL4TiHTcsWSFAxPQ/tOnEaQEJh3qWq71QRMY+w== - -micro-ftch@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" - integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== - -microbundle@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.15.1.tgz#3fa67128934b31736823b5c868dae4b92d94e766" - integrity sha512-aAF+nwFbkSIJGfrJk+HyzmJOq3KFaimH6OIFBU6J2DPjQeg1jXIYlIyEv81Gyisb9moUkudn+wj7zLNYMOv75Q== - dependencies: - "@babel/core" "^7.12.10" - "@babel/plugin-proposal-class-properties" "7.12.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-jsx" "^7.12.1" - "@babel/plugin-transform-flow-strip-types" "^7.12.10" - "@babel/plugin-transform-react-jsx" "^7.12.11" - "@babel/plugin-transform-regenerator" "^7.12.1" - "@babel/preset-env" "^7.12.11" - "@babel/preset-flow" "^7.12.1" - "@babel/preset-react" "^7.12.10" - "@rollup/plugin-alias" "^3.1.1" - "@rollup/plugin-babel" "^5.2.2" - "@rollup/plugin-commonjs" "^17.0.0" - "@rollup/plugin-json" "^4.1.0" - "@rollup/plugin-node-resolve" "^11.0.1" - "@surma/rollup-plugin-off-main-thread" "^2.2.2" - asyncro "^3.0.0" - autoprefixer "^10.1.0" - babel-plugin-macros "^3.0.1" - babel-plugin-transform-async-to-promises "^0.8.18" - babel-plugin-transform-replace-expressions "^0.2.0" - brotli-size "^4.0.0" - builtin-modules "^3.1.0" - camelcase "^6.2.0" - escape-string-regexp "^4.0.0" - filesize "^6.1.0" - gzip-size "^6.0.0" - kleur "^4.1.3" - lodash.merge "^4.6.2" - postcss "^8.2.1" - pretty-bytes "^5.4.1" - rollup "^2.35.1" - rollup-plugin-bundle-size "^1.0.3" - rollup-plugin-postcss "^4.0.0" - rollup-plugin-terser "^7.0.2" - rollup-plugin-typescript2 "^0.32.0" - rollup-plugin-visualizer "^5.6.0" - sade "^1.7.4" - terser "^5.7.0" - tiny-glob "^0.2.8" - tslib "^2.0.3" - typescript "^4.1.3" - -micromatch@^2.1.5: - version "2.3.11" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" - integrity sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA== - dependencies: - arr-diff "^2.0.0" - array-unique "^0.2.1" - braces "^1.8.2" - expand-brackets "^0.1.4" - extglob "^0.3.1" - filename-regex "^2.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.1" - kind-of "^3.0.2" - normalize-path "^2.0.1" - object.omit "^2.0.0" - parse-glob "^3.0.4" - regex-cache "^0.4.2" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-db@^1.54.0: - version "1.54.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime-types@^3.0.0, mime-types@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" - integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== - dependencies: - mime-db "^1.54.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" - integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - -minimatch@^9.0.4, minimatch@^9.0.5: - version "9.0.5" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.1.0, minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minimist@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multibase@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-4.0.6.tgz#6e624341483d6123ca1ede956208cb821b440559" - integrity sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ== - dependencies: - "@multiformats/base-x" "^4.0.1" - -multicodec@^3.0.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-3.2.1.tgz#82de3254a0fb163a107c1aab324f2a91ef51efb2" - integrity sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw== - dependencies: - uint8arrays "^3.0.0" - varint "^6.0.0" - -multiformats@^9.4.2, multiformats@^9.6.4: - version "9.9.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" - integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== - -multihashes@^4.0.1, multihashes@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-4.0.3.tgz#426610539cd2551edbf533adeac4c06b3b90fb05" - integrity sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA== - dependencies: - multibase "^4.0.1" - uint8arrays "^3.0.0" - varint "^5.0.2" - -multihashing-async@^2.0.0, multihashing-async@^2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/multihashing-async/-/multihashing-async-2.1.4.tgz#26dce2ec7a40f0e7f9e732fc23ca5f564d693843" - integrity sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg== - dependencies: - blakejs "^1.1.0" - err-code "^3.0.0" - js-sha3 "^0.8.0" - multihashes "^4.0.1" - murmurhash3js-revisited "^3.0.0" - uint8arrays "^3.0.0" - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nan@^2.12.1: - version "2.22.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" - integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== - -nanoid@^3.3.8: - version "3.3.11" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" - integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" - integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-cleanup@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" - integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw== - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^2.6.1, node-fetch@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" - integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.19: - version "2.0.19" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" - integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== - -node-releases@^2.0.8: - version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== - -normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.12.2, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" - integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - has-symbols "^1.0.3" - object-keys "^1.1.1" - -object.omit@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" - integrity sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA== - dependencies: - for-own "^0.1.4" - is-extendable "^0.1.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -on-finished@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^8.4.0: - version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" - integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -openapi-typescript-codegen@^0.29.0: - version "0.29.0" - resolved "https://registry.yarnpkg.com/openapi-typescript-codegen/-/openapi-typescript-codegen-0.29.0.tgz#e98a1daa223ccdeb1cc51b2e2dc11bafae6fe746" - integrity sha512-/wC42PkD0LGjDTEULa/XiWQbv4E9NwLjwLjsaJ/62yOsoYhwvmBR31kPttn1DzQ2OlGe5stACcF/EIkZk43M6w== - dependencies: - "@apidevtools/json-schema-ref-parser" "^11.5.4" - camelcase "^6.3.0" - commander "^12.0.0" - fs-extra "^11.2.0" - handlebars "^4.7.8" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-limit@3.1.0, p-limit@^3.0.2, p-limit@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-queue@^6.6.2: - version "6.6.2" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" - integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== - dependencies: - eventemitter3 "^4.0.4" - p-timeout "^3.2.0" - -p-timeout@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-filepath@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q== - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-glob@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" - integrity sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA== - dependencies: - glob-base "^0.3.0" - is-dotfile "^1.0.0" - is-extglob "^1.0.0" - is-glob "^2.0.0" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parseurl@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-extra@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/path-extra/-/path-extra-1.0.3.tgz#7c112189a6e50d595790e7ad2037e44e410c1166" - integrity sha512-vYm3+GCkjUlT1rDvZnDVhNLXIRvwFPaN8ebHAFcuMJM/H0RBOPD7JrcldiNLd9AS3dhAyUHLa4Hny5wp1A+Ffw== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ== - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg== - dependencies: - path-root-regex "^0.1.0" - -path-scurry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" - integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -path-to-regexp@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" - integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pause-stream@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" - integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A== - dependencies: - through "~2.3" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkce-challenge@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkce-challenge/-/pkce-challenge-5.0.0.tgz#c3a405cb49e272094a38e890a2b51da0228c4d97" - integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ== - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pony-cause@^2.1.10: - version "2.1.11" - resolved "https://registry.yarnpkg.com/pony-cause/-/pony-cause-2.1.11.tgz#d69a20aaccdb3bdb8f74dd59e5c68d8e6772e4bd" - integrity sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" - integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" - integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-load-config@^3.0.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== - dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" - -postcss-merge-longhand@^5.1.7: - version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" - integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.1" - -postcss-merge-rules@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" - integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" - integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-modules@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" - integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== - dependencies: - generic-names "^4.0.0" - icss-replace-symbols "^1.1.0" - lodash.camelcase "^4.3.0" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - string-hash "^1.1.1" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" - integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" - integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.11" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" - integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.2.1: - version "8.5.3" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" - integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -preserve@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" - integrity sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ== - -prettier@^2.3.1: - version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" - integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== - -prettier@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.5.3.tgz#4fc2ce0d657e7a02e602549f053b239cb7dfe1b5" - integrity sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw== - -pretty-bytes@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf" - integrity sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow== - dependencies: - number-is-nan "^1.0.0" - -pretty-bytes@^5.4.1: - version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" - integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== - -pretty-format@^29.0.0, pretty-format@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" - integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== - dependencies: - "@jest/schemas" "^29.6.3" - ansi-styles "^5.0.0" - react-is "^18.0.0" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -promise-polyfill@^8.1.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.2.3.tgz#2edc7e4b81aff781c88a0d577e5fe9da822107c6" - integrity sha512-Og0+jCRQetV84U8wVjMNccfGCnMQ9mGs9Hv78QFe+pSDD3gWTpz0y+1QCuxy5d/vBFuZ3iwP2eycAkvqIMPmWg== - -promise.series@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" - integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -protobufjs@^6.10.2: - version "6.11.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa" - integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -proxy-addr@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -ps-tree@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd" - integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA== - dependencies: - event-stream "=3.3.4" - -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pure-rand@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" - integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== - -qs@^6.14.0: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== - dependencies: - side-channel "^1.1.0" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -rabin-wasm@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" - integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== - dependencies: - "@assemblyscript/loader" "^0.9.4" - bl "^5.0.0" - debug "^4.3.1" - minimist "^1.2.5" - node-fetch "^2.6.1" - readable-stream "^3.6.0" - -randomatic@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" - integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== - dependencies: - is-number "^4.0.0" - kind-of "^6.0.0" - math-random "^1.0.1" - -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -range-parser@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.0.tgz#25b3476f07a51600619dae3fe82ddc28a36e5e0f" - integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.6.3" - unpipe "1.0.0" - -react-is@^18.0.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== - -read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== - dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" - -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== - dependencies: - "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== - dependencies: - regenerate "^1.4.2" - -regenerate-unicode-properties@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" - integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== - -regenerator-runtime@^0.14.0: - version "0.14.0" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" - integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== - -regex-cache@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" - integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== - dependencies: - is-equal-shallow "^0.1.3" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpu-core@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.0.tgz#4d0d044b76fedbad6238703ae84bfdedee2cf074" - integrity sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ== - dependencies: - "@babel/regjsgen" "^0.8.0" - regenerate "^1.4.2" - regenerate-unicode-properties "^10.1.0" - regjsparser "^0.9.1" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regexpu-core@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" - integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.2.0" - regjsgen "^0.8.0" - regjsparser "^0.12.0" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.1.0" - -regjsgen@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" - integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== - -regjsparser@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" - integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== - dependencies: - jsesc "~3.0.2" - -regjsparser@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== - dependencies: - jsesc "~0.5.0" - -relay-runtime@12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-12.0.0.tgz#1e039282bdb5e0c1b9a7dc7f6b9a09d4f4ff8237" - integrity sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug== - dependencies: - "@babel/runtime" "^7.0.0" - fbjs "^3.0.0" - invariant "^2.2.4" - -remedial@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/remedial/-/remedial-1.0.8.tgz#a5e4fd52a0e4956adbaf62da63a5a46a78c578a0" - integrity sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg== - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - -remove-trailing-spaces@^1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/remove-trailing-spaces/-/remove-trailing-spaces-1.0.8.tgz#4354d22f3236374702f58ee373168f6d6887ada7" - integrity sha512-O3vsMYfWighyFbTd8hk8VaSj9UAGENxAtX+//ugIst2RMk5e03h6RoIS+0ylsFxY1gvmPuAY/PO4It+gPEeySA== - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.5.2, repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -request@^2.88.2: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-resolve@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/require-resolve/-/require-resolve-0.0.2.tgz#bab410ab1aee2f3f55b79317451dd3428764e6f3" - integrity sha512-eafQVaxdQsWUB8HybwognkdcIdKdQdQBwTxH48FuE6WI0owZGKp63QYr1MRp73PoX0AcyB7MDapZThYUY8FD0A== - dependencies: - x-path "^0.0.2" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@5.0.0, resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve.exports@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.0.tgz#c1a0028c2d166ec2fbf7d0644584927e76e7400e" - integrity sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg== - -resolve@^1.1.7: - version "1.22.10" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" - integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== - dependencies: - is-core-module "^2.16.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.10.0: - version "1.22.8" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rollup-plugin-bundle-size@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz#d245cd988486b4040279f9fd33f357f61673e90f" - integrity sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ== - dependencies: - chalk "^1.1.3" - maxmin "^2.1.0" - -rollup-plugin-postcss@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" - integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== - dependencies: - chalk "^4.1.0" - concat-with-sourcemaps "^1.1.0" - cssnano "^5.0.1" - import-cwd "^3.0.0" - p-queue "^6.6.2" - pify "^5.0.0" - postcss-load-config "^3.0.0" - postcss-modules "^4.0.0" - promise.series "^0.2.0" - resolve "^1.19.0" - rollup-pluginutils "^2.8.2" - safe-identifier "^0.4.2" - style-inject "^0.3.0" - -rollup-plugin-terser@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" - integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== - dependencies: - "@babel/code-frame" "^7.10.4" - jest-worker "^26.2.1" - serialize-javascript "^4.0.0" - terser "^5.0.0" - -rollup-plugin-typescript2@^0.32.0: - version "0.32.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.32.1.tgz#470ded8e1965efac02043cc0ef4a7fa36bed83b9" - integrity sha512-RanO8bp1WbeMv0bVlgcbsFNCn+Y3rX7wF97SQLDxf0fMLsg0B/QFF005t4AsGUcDgF3aKJHoqt4JF2xVaABeKw== - dependencies: - "@rollup/pluginutils" "^4.1.2" - find-cache-dir "^3.3.2" - fs-extra "^10.0.0" - resolve "^1.20.0" - tslib "^2.4.0" - -rollup-plugin-visualizer@^5.6.0: - version "5.9.0" - resolved "https://registry.yarnpkg.com/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz#013ac54fb6a9d7c9019e7eb77eced673399e5a0b" - integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg== - dependencies: - open "^8.4.0" - picomatch "^2.3.1" - source-map "^0.7.4" - yargs "^17.5.1" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^2.35.1: - version "2.79.2" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.2.tgz#f150e4a5db4b121a21a747d762f701e5e9f49090" - integrity sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ== - optionalDependencies: - fsevents "~2.3.2" - -router@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef" - integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== - dependencies: - debug "^4.4.0" - depd "^2.0.0" - is-promise "^4.0.0" - parseurl "^1.3.3" - path-to-regexp "^8.0.0" - -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -sade@^1.7.4: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-identifier@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" - integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== - -safe-regex-test@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" - integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.3" - is-regex "^1.1.4" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -safe-stable-stringify@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -scuid@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/scuid/-/scuid-1.1.0.tgz#d3f9f920956e737a60f72d0e4ad280bf324d5dab" - integrity sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg== - -"semver@2 || 3 || 4 || 5": - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.4, semver@^7.5.3, semver@^7.5.4: - version "7.6.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" - integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== - -semver@^7.6.0: - version "7.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" - integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== - -send@^1.1.0, send@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212" - integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== - dependencies: - debug "^4.3.5" - encodeurl "^2.0.0" - escape-html "^1.0.3" - etag "^1.8.1" - fresh "^2.0.0" - http-errors "^2.0.0" - mime-types "^3.0.1" - ms "^2.1.3" - on-finished "^2.4.1" - range-parser "^1.2.1" - statuses "^2.0.1" - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-static@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" - integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== - dependencies: - encodeurl "^2.0.0" - escape-html "^1.0.3" - parseurl "^1.3.3" - send "^1.2.0" - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1, shell-quote@^1.7.3: - version "1.8.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -signedsource@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" - integrity sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww== - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sparse-array@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" - integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== - -spdx-correct@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" - integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" - integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.18" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326" - integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split@0.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f" - integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA== - dependencies: - through "2" - -sponge-case@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sponge-case/-/sponge-case-1.0.1.tgz#260833b86453883d974f84854cdb63aecc5aef4c" - integrity sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA== - dependencies: - tslib "^2.0.3" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1, statuses@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -stream-combiner@~0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" - integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw== - dependencies: - duplexer "~0.1.1" - -string-argv@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-env-interpolation@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-env-interpolation/-/string-env-interpolation-1.0.1.tgz#ad4397ae4ac53fe6c91d1402ad6f6a52862c7152" - integrity sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-hash@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" - integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string.prototype.matchall@^4.0.6: - version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" - integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.3" - side-channel "^1.0.4" - -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -style-inject@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" - integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== - -stylehacks@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" - integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - -subarg@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" - integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg== - dependencies: - minimist "^1.1.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -swap-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-2.0.2.tgz#671aedb3c9c137e2985ef51c51f9e98445bf70d9" - integrity sha512-kc6S2YS/2yXbtkSMunBtKdah4VFETZ8Oh6ONSmSd9bRxhqTrtARUCBUiWXH3xVPpvR7tz2CSnkuXVE42EcGnMw== - dependencies: - tslib "^2.0.3" - -sync-fetch@0.6.0-2: - version "0.6.0-2" - resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.6.0-2.tgz#d82d6dc8efaf2d103a9015e7bd7ba0bfc8e078f2" - integrity sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A== - dependencies: - node-fetch "^3.3.2" - timeout-signal "^2.0.0" - whatwg-mimetype "^4.0.0" - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -terser@^5.0.0, terser@^5.7.0: - version "5.16.5" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" - integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -through@2, through@^2.3.6, through@^2.3.8, through@~2.3, through@~2.3.1: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -timeout-signal@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/timeout-signal/-/timeout-signal-2.0.0.tgz#23207ea448d50258bb0defe3beea4a467643abba" - integrity sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA== - -tiny-glob@^0.2.8: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -title-case@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" - integrity sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA== - dependencies: - tslib "^2.0.3" - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -ts-api-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91" - integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ== - -ts-command-line-args@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-json-schema-generator@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/ts-json-schema-generator/-/ts-json-schema-generator-2.4.0.tgz#01b9682fc8a275b8c9b91cb60c964875a44637f1" - integrity sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug== - dependencies: - "@types/json-schema" "^7.0.15" - commander "^13.1.0" - glob "^11.0.1" - json5 "^2.2.3" - normalize-path "^3.0.0" - safe-stable-stringify "^2.5.0" - tslib "^2.8.1" - typescript "^5.8.2" - -ts-log@^2.2.3: - version "2.2.5" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.5.tgz#aef3252f1143d11047e2cb6f7cfaac7408d96623" - integrity sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA== - -ts-mockito@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/ts-mockito/-/ts-mockito-2.6.1.tgz#bc9ee2619033934e6fad1c4455aca5b5ace34e73" - integrity sha512-qU9m/oEBQrKq5hwfbJ7MgmVN5Gu6lFnIGWvpxSjrqq6YYEVv+RwVFWySbZMBgazsWqv6ctAyVBpo9TmAxnOEKw== - dependencies: - lodash "^4.17.5" - -ts-node@^10.9.2: - version "10.9.2" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" - integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsc-watch@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-6.2.1.tgz#861801be929b2fd3d597c5f608db2b7ddba503db" - integrity sha512-GLwdz5Dy9K3sVm3RzgkLcyDpl5cvU9HEcE1A3gf5rqEwlUe7gDLxNCgcuNEw3zoKOiegMo3LnbF1t6HLqxhrSA== - dependencies: - cross-spawn "^7.0.3" - node-cleanup "^2.1.2" - ps-tree "^1.2.0" - string-argv "^0.3.1" - -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.5.0, tslib@^2.6.3, tslib@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tslib@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" - integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@^2.0.0, type-is@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" - integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== - dependencies: - content-type "^1.0.5" - media-typer "^1.1.0" - mime-types "^3.0.0" - -typechain@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" - integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.3.1" - fs-extra "^7.0.0" - glob "7.1.7" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.3.1" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typed-array-length@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" - integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== - dependencies: - call-bind "^1.0.2" - for-each "^0.3.3" - is-typed-array "^1.1.9" - -typescript-eslint@^8.32.1: - version "8.32.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.32.1.tgz#1784335c781491be528ff84ab666e2f0f7591fd1" - integrity sha512-D7el+eaDHAmXvrZBy1zpzSNIRqnCOrkwTgZxTu3MUqRWk8k0q9m9Ho4+vPf7iHtgUfrK/o8IZaEApsxPlHTFCg== - dependencies: - "@typescript-eslint/eslint-plugin" "8.32.1" - "@typescript-eslint/parser" "8.32.1" - "@typescript-eslint/utils" "8.32.1" - -typescript@^4.1.3: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== - -typescript@^5.8.2, typescript@^5.8.3: - version "5.8.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" - integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -ua-parser-js@^1.0.35: - version "1.0.35" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" - integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== - -uglify-js@^3.1.4: - version "3.17.4" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" - integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== - -uint8arrays@^2.0.5, uint8arrays@^2.1.2: - version "2.1.10" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-2.1.10.tgz#34d023c843a327c676e48576295ca373c56e286a" - integrity sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== - dependencies: - multiformats "^9.4.2" - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== - -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unixify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" - integrity sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg== - dependencies: - normalize-path "^2.1.1" - -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -update-browserslist-db@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" - integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.1" - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -uri-js@^4.2.2, uri-js@^4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -urlpattern-polyfill@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz#1b2517e614136c73ba32948d5e7a3a063cba8e74" - integrity sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw== - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-to-istanbul@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz#b6f994b0b5d4ef255e17a0d17dc444a9f5132fa4" - integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -varint@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -vary@^1, vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -walker@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web-streams-polyfill@^3.0.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" - integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-typed-array@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" - integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== - dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -wordwrap@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -ws@^8.17.1: - version "8.18.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" - integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== - -x-path@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/x-path/-/x-path-0.0.2.tgz#294d076bb97a7706cc070bbb2a6fd8c54df67b12" - integrity sha512-zQ4WFI0XfJN1uEkkrB19Y4TuXOlHqKSxUJo0Yt+axPjRm8tCG6SJ6+Wo3/+Kjg4c2c8IvBXuJ0uYoshxNn4qMw== - dependencies: - path-extra "^1.0.2" - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml-ast-parser@^0.0.43: - version "0.0.43" - resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" - integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== - -yaml@^1.10.0, yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yaml@^2.3.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.1.tgz#44a247d1b88523855679ac7fa7cda6ed7e135cf6" - integrity sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ== - -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^21.1.1: - version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== - -yargs@^17.0.0, yargs@^17.3.1, yargs@^17.5.1: - version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== - dependencies: - cliui "^8.0.1" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.1.1" - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod-to-json-schema@^3.24.1: - version "3.24.5" - resolved "https://registry.yarnpkg.com/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz#d1095440b147fb7c2093812a53c54df8d5df50a3" - integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g== - -zod@^3.23.8, zod@^3.24.2: - version "3.24.4" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.4.tgz#e2e2cca5faaa012d76e527d0d36622e0a90c315f" - integrity sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg== From cdc8d1aad4ca80447dd371c5e0655aa4bba42fb7 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Fri, 23 May 2025 16:51:42 -0300 Subject: [PATCH 02/33] chore: reorganize project structure under packages/cow-sdk --- .babelrc => packages/cow-sdk/.babelrc | 0 README.md => packages/cow-sdk/README.md | 0 {abi => packages/cow-sdk/abi}/CoWShed.json | 0 {abi => packages/cow-sdk/abi}/CoWShedFactory.json | 0 {abi => packages/cow-sdk/abi}/ComposableCoW.json | 0 {abi => packages/cow-sdk/abi}/EthFlow.json | 0 .../cow-sdk/abi}/ExtensibleFallbackHandler.json | 0 {abi => packages/cow-sdk/abi}/GPv2Settlement.json | 0 {abi => packages/cow-sdk/abi}/TWAP.json | 0 {docs => packages/cow-sdk/docs}/architecture.md | 0 {docs => packages/cow-sdk/docs}/images/CoW.png | Bin .../cow-sdk/examples}/cra/.gitignore | 0 .../cow-sdk/examples}/cra/README.md | 0 .../cow-sdk/examples}/cra/package.json | 0 .../cow-sdk/examples}/cra/public/index.html | 0 .../cow-sdk/examples}/cra/src/App.css | 0 .../cow-sdk/examples}/cra/src/App.tsx | 0 .../cra/src/components/jsonContent/index.tsx | 0 .../cra/src/components/resultContent/index.tsx | 0 .../cow-sdk/examples}/cra/src/context.ts | 0 .../examples}/cra/src/hooks/useCurrentChainId.ts | 0 .../cow-sdk/examples}/cra/src/hooks/usePrevious.ts | 0 .../cow-sdk/examples}/cra/src/hooks/useWeb3Info.ts | 0 .../cow-sdk/examples}/cra/src/index.css | 0 .../cow-sdk/examples}/cra/src/index.tsx | 0 .../cow-sdk/examples}/cra/src/pageStyles.css | 0 .../examples}/cra/src/pages/cowShedHook/index.tsx | 0 .../examples}/cra/src/pages/getOrders/index.tsx | 0 .../examples}/cra/src/pages/getQuote/index.tsx | 0 .../examples}/cra/src/pages/getTrades/index.tsx | 0 .../examples}/cra/src/pages/quickStart/index.tsx | 0 .../examples}/cra/src/pages/sendOrder/index.tsx | 0 .../cra/src/pages/sendOrderCancellation/index.tsx | 0 .../examples}/cra/src/pages/signOrder/index.tsx | 0 .../cra/src/pages/signOrderCancellation/index.tsx | 0 .../pages/smartContractWallet/GPv2Settlement.json | 0 .../cra/src/pages/smartContractWallet/const.ts | 0 .../cra/src/pages/smartContractWallet/index.tsx | 0 .../pages/smartContractWallet/useSafeSdkAndKit.ts | 0 .../cow-sdk/examples}/cra/src/utils.ts | 0 .../cow-sdk/examples}/cra/tsconfig.json | 0 .../cow-sdk/examples}/cra/yarn.lock | 0 .../cow-sdk/examples}/nodejs/package.json | 0 .../cow-sdk/examples}/nodejs/src/index.ts | 0 .../cow-sdk/examples}/nodejs/yarn.lock | 0 .../cow-sdk/examples}/vanilla/package.json | 0 .../cow-sdk/examples}/vanilla/src/formState.ts | 0 .../cow-sdk/examples}/vanilla/src/index.ts | 0 .../cow-sdk/examples}/vanilla/src/pageActions.ts | 0 .../cow-sdk/examples}/vanilla/src/pageHtml.ts | 0 .../cow-sdk/examples}/vanilla/src/styles.css | 0 .../cow-sdk/examples}/vanilla/src/tokens.ts | 0 .../cow-sdk/examples}/vanilla/src/utils.ts | 0 .../cow-sdk/examples}/vanilla/tsconfig.json | 0 .../cow-sdk/examples}/vanilla/webpack.config.js | 0 .../cow-sdk/examples}/vanilla/yarn.lock | 0 .../cow-sdk/graphql-codegen.yml | 0 package.json => packages/cow-sdk/package.json | 0 .../cow-sdk/scripts}/generateTradingSchemas.ts | 0 setupTests.js => packages/cow-sdk/setupTests.js | 0 .../src}/bridging/BridgingSdk/BridgingSdk.test.ts | 0 .../src}/bridging/BridgingSdk/BridgingSdk.ts | 0 .../src}/bridging/BridgingSdk/getCrossChainOrder.ts | 0 .../src}/bridging/BridgingSdk/getErc20Decimals.ts | 0 .../bridging/BridgingSdk/getQuoteWithBridge.test.ts | 0 .../src}/bridging/BridgingSdk/getQuoteWithBridge.ts | 0 .../bridging/BridgingSdk/getQuoteWithoutBridge.ts | 0 .../bridging/BridgingSdk/mock/bridgeRequestMocks.ts | 0 {src => packages/cow-sdk/src}/bridging/README.md | 0 {src => packages/cow-sdk/src}/bridging/const.ts | 0 {src => packages/cow-sdk/src}/bridging/errors.ts | 0 {src => packages/cow-sdk/src}/bridging/index.ts | 0 .../bridging/providers/across/AcrossApi.spec.ts | 0 .../bridging/providers/across/AcrossApi.test.ts | 0 .../src}/bridging/providers/across/AcrossApi.ts | 0 .../providers/across/AcrossBridgeProvider.test.ts | 0 .../providers/across/AcrossBridgeProvider.ts | 0 .../cow-sdk/src}/bridging/providers/across/abi.ts | 0 .../src}/bridging/providers/across/across-logo.png | Bin .../bridging/providers/across/const/contracts.ts | 0 .../src}/bridging/providers/across/const/misc.ts | 0 .../src}/bridging/providers/across/const/tokens.ts | 0 .../providers/across/createAcrossDepositCall.ts | 0 .../cow-sdk/src}/bridging/providers/across/types.ts | 0 .../src}/bridging/providers/across/util.test.ts | 0 .../cow-sdk/src}/bridging/providers/across/util.ts | 0 .../bridging/providers/mock/MockBridgeProvider.ts | 0 .../src}/bridging/providers/mock/mock-logo.webp | Bin {src => packages/cow-sdk/src}/bridging/types.ts | 0 {src => packages/cow-sdk/src}/bridging/utils.ts | 0 {src => packages/cow-sdk/src}/chains/const/index.ts | 0 {src => packages/cow-sdk/src}/chains/const/path.ts | 0 .../cow-sdk/src}/chains/details/arbitrum.ts | 0 .../cow-sdk/src}/chains/details/avalanche.ts | 0 .../cow-sdk/src}/chains/details/base.ts | 0 .../cow-sdk/src}/chains/details/gnosis.ts | 0 .../cow-sdk/src}/chains/details/mainnet.ts | 0 .../cow-sdk/src}/chains/details/optimism.ts | 0 .../cow-sdk/src}/chains/details/polygon.ts | 0 .../cow-sdk/src}/chains/details/sepolia.ts | 0 .../src}/chains/images/arbitrum-logo-dark.svg | 0 .../src}/chains/images/arbitrum-logo-light.svg | 0 .../cow-sdk/src}/chains/images/avax-logo.svg | 0 .../cow-sdk/src}/chains/images/base-logo.svg | 0 .../cow-sdk/src}/chains/images/gnosis-logo.svg | 0 .../cow-sdk/src}/chains/images/mainnet-logo.svg | 0 .../cow-sdk/src}/chains/images/optimism-logo.svg | 0 .../cow-sdk/src}/chains/images/polygon-logo.svg | 0 .../cow-sdk/src}/chains/images/sepolia-logo.svg | 0 {src => packages/cow-sdk/src}/chains/index.ts | 0 {src => packages/cow-sdk/src}/chains/types.ts | 0 {src => packages/cow-sdk/src}/chains/utils.ts | 0 .../cow-sdk/src}/common/consts/config.ts | 0 .../cow-sdk/src}/common/consts/contracts.ts | 0 {src => packages/cow-sdk/src}/common/consts/ipfs.ts | 0 {src => packages/cow-sdk/src}/common/consts/path.ts | 0 .../cow-sdk/src}/common/consts/tokens.ts | 0 {src => packages/cow-sdk/src}/common/index.ts | 0 .../cow-sdk/src}/common/types/config.ts | 0 .../cow-sdk/src}/common/types/cow-error.ts | 0 .../cow-sdk/src}/common/types/ethereum.ts | 0 .../cow-sdk/src}/common/types/tokens.ts | 0 .../cow-sdk/src}/common/types/wallets.ts | 0 .../cow-sdk/src}/common/utils/config.ts | 0 {src => packages/cow-sdk/src}/common/utils/log.ts | 0 {src => packages/cow-sdk/src}/common/utils/math.ts | 0 .../cow-sdk/src}/common/utils/serialize.ts | 0 .../cow-sdk/src}/common/utils/wallet.ts | 0 .../src}/composable/ConditionalOrder.spec.ts | 0 .../cow-sdk/src}/composable/ConditionalOrder.ts | 0 .../src}/composable/ConditionalOrderFactory.ts | 0 .../cow-sdk/src}/composable/Multiplexer.spec.ts | 0 .../cow-sdk/src}/composable/Multiplexer.ts | 0 .../cow-sdk/src}/composable/contracts.ts | 0 .../src}/composable/generated/ComposableCoW.ts | 0 .../generated/ExtensibleFallbackHandler.ts | 0 .../cow-sdk/src}/composable/generated/TWAP.ts | 0 .../cow-sdk/src}/composable/generated/common.ts | 0 .../generated/factories/ComposableCoW__factory.ts | 0 .../factories/ExtensibleFallbackHandler__factory.ts | 0 .../composable/generated/factories/TWAP__factory.ts | 0 .../src}/composable/generated/factories/index.ts | 0 .../cow-sdk/src}/composable/generated/index.ts | 0 {src => packages/cow-sdk/src}/composable/index.ts | 0 .../cow-sdk/src}/composable/orderTypes/Twap.spec.ts | 0 .../cow-sdk/src}/composable/orderTypes/Twap.ts | 0 .../cow-sdk/src}/composable/orderTypes/index.ts | 0 .../orderTypes/test/TestConditionalOrder.ts | 0 {src => packages/cow-sdk/src}/composable/types.ts | 0 .../cow-sdk/src}/composable/utils.spec.ts | 0 {src => packages/cow-sdk/src}/composable/utils.ts | 0 .../cow-sdk/src}/cow-shed/CowShedSdk.test.ts | 0 .../cow-sdk/src}/cow-shed/CowShedSdk.ts | 0 {src => packages/cow-sdk/src}/cow-shed/README.md | 0 .../src}/cow-shed/contracts/CoWShedHooks.spec.ts | 0 .../cow-sdk/src}/cow-shed/contracts/CoWShedHooks.ts | 0 .../cow-sdk/src}/cow-shed/contracts/utils.ts | 0 {src => packages/cow-sdk/src}/cow-shed/index.ts | 0 {src => packages/cow-sdk/src}/cow-shed/types.ts | 0 {src => packages/cow-sdk/src}/hooks/utils.ts | 0 {src => packages/cow-sdk/src}/index.ts | 0 .../cow-sdk/src}/order-book/__mock__/api.ts | 0 .../cow-sdk/src}/order-book/api.spec.ts | 0 {src => packages/cow-sdk/src}/order-book/api.ts | 0 .../cow-sdk/src}/order-book/generated/index.ts | 0 .../src}/order-book/generated/models/Address.ts | 0 .../src}/order-book/generated/models/AppData.ts | 0 .../src}/order-book/generated/models/AppDataHash.ts | 0 .../order-book/generated/models/AppDataObject.ts | 0 .../src}/order-book/generated/models/Auction.ts | 0 .../order-book/generated/models/AuctionOrder.ts | 0 .../order-book/generated/models/AuctionPrices.ts | 0 .../src}/order-book/generated/models/BigUint.ts | 0 .../generated/models/BuyTokenDestination.ts | 0 .../src}/order-book/generated/models/CallData.ts | 0 .../generated/models/CompetitionAuction.ts | 0 .../generated/models/CompetitionOrderStatus.ts | 0 .../order-book/generated/models/EcdsaSignature.ts | 0 .../generated/models/EcdsaSigningScheme.ts | 0 .../src}/order-book/generated/models/EthflowData.ts | 0 .../order-book/generated/models/ExecutedAmounts.ts | 0 .../generated/models/ExecutedProtocolFee.ts | 0 .../src}/order-book/generated/models/FeePolicy.ts | 0 .../order-book/generated/models/InteractionData.ts | 0 .../generated/models/NativePriceResponse.ts | 0 .../order-book/generated/models/OnchainOrderData.ts | 0 .../src}/order-book/generated/models/Order.ts | 0 .../generated/models/OrderCancellation.ts | 0 .../generated/models/OrderCancellationError.ts | 0 .../generated/models/OrderCancellations.ts | 0 .../src}/order-book/generated/models/OrderClass.ts | 0 .../order-book/generated/models/OrderCreation.ts | 0 .../src}/order-book/generated/models/OrderKind.ts | 0 .../order-book/generated/models/OrderMetaData.ts | 0 .../order-book/generated/models/OrderParameters.ts | 0 .../order-book/generated/models/OrderPostError.ts | 0 .../generated/models/OrderQuoteRequest.ts | 0 .../generated/models/OrderQuoteResponse.ts | 0 .../order-book/generated/models/OrderQuoteSide.ts | 0 .../generated/models/OrderQuoteSideKindBuy.ts | 0 .../generated/models/OrderQuoteSideKindSell.ts | 0 .../generated/models/OrderQuoteValidity.ts | 0 .../src}/order-book/generated/models/OrderStatus.ts | 0 .../order-book/generated/models/PreSignature.ts | 0 .../generated/models/PriceEstimationError.ts | 0 .../order-book/generated/models/PriceImprovement.ts | 0 .../order-book/generated/models/PriceQuality.ts | 0 .../src}/order-book/generated/models/Quote.ts | 0 .../order-book/generated/models/SellTokenSource.ts | 0 .../src}/order-book/generated/models/Signature.ts | 0 .../order-book/generated/models/SigningScheme.ts | 0 .../generated/models/SolverCompetitionResponse.ts | 0 .../order-book/generated/models/SolverSettlement.ts | 0 .../src}/order-book/generated/models/Surplus.ts | 0 .../src}/order-book/generated/models/TokenAmount.ts | 0 .../order-book/generated/models/TotalSurplus.ts | 0 .../src}/order-book/generated/models/Trade.ts | 0 .../order-book/generated/models/TransactionHash.ts | 0 .../cow-sdk/src}/order-book/generated/models/UID.ts | 0 .../src}/order-book/generated/models/Volume.ts | 0 {src => packages/cow-sdk/src}/order-book/index.ts | 0 {src => packages/cow-sdk/src}/order-book/mock.ts | 0 .../order-book/quoteAmountsAndCostsUtils.test.ts | 0 .../src}/order-book/quoteAmountsAndCostsUtils.ts | 0 .../cow-sdk/src}/order-book/request.test.ts | 0 {src => packages/cow-sdk/src}/order-book/request.ts | 0 .../cow-sdk/src}/order-book/transformOrder.test.ts | 0 .../cow-sdk/src}/order-book/transformOrder.ts | 0 {src => packages/cow-sdk/src}/order-book/types.ts | 0 .../cow-sdk/src}/order-signing/index.ts | 0 .../src}/order-signing/orderSigningUtils.spec.ts | 0 .../cow-sdk/src}/order-signing/orderSigningUtils.ts | 0 .../cow-sdk/src}/order-signing/types.ts | 0 .../cow-sdk/src}/order-signing/utils.ts | 0 {src => packages/cow-sdk/src}/subgraph/api.spec.ts | 0 {src => packages/cow-sdk/src}/subgraph/api.ts | 0 {src => packages/cow-sdk/src}/subgraph/graphql.ts | 0 {src => packages/cow-sdk/src}/subgraph/index.ts | 0 {src => packages/cow-sdk/src}/subgraph/queries.ts | 0 {src => packages/cow-sdk/src}/test/utils.ts | 0 {src => packages/cow-sdk/src}/trading/README.md | 0 .../cow-sdk/src}/trading/appDataUtils.test.ts | 0 .../cow-sdk/src}/trading/appDataUtils.ts | 0 .../src}/trading/calculateUniqueOrderId.test.ts | 0 .../cow-sdk/src}/trading/calculateUniqueOrderId.ts | 0 {src => packages/cow-sdk/src}/trading/consts.ts | 0 .../src}/trading/getEthFlowTransaction.test.ts | 0 .../cow-sdk/src}/trading/getEthFlowTransaction.ts | 0 .../cow-sdk/src}/trading/getOrderToSign.test.ts | 0 .../cow-sdk/src}/trading/getOrderToSign.ts | 0 .../cow-sdk/src}/trading/getOrderTypedData.ts | 0 .../src}/trading/getPreSignTransaction.test.ts | 0 .../cow-sdk/src}/trading/getPreSignTransaction.ts | 0 .../cow-sdk/src}/trading/getQuote.test.ts | 0 {src => packages/cow-sdk/src}/trading/getQuote.ts | 0 {src => packages/cow-sdk/src}/trading/index.ts | 0 .../src}/trading/postCoWProtocolTrade.test.ts | 0 .../cow-sdk/src}/trading/postCoWProtocolTrade.ts | 0 .../cow-sdk/src}/trading/postLimitOrder.test.ts | 0 .../cow-sdk/src}/trading/postLimitOrder.ts | 0 .../trading/postSellNativeCurrencyOrder.test.ts | 0 .../src}/trading/postSellNativeCurrencyOrder.ts | 0 .../cow-sdk/src}/trading/postSwapOrder.test.ts | 0 .../cow-sdk/src}/trading/postSwapOrder.ts | 0 .../cow-sdk/src}/trading/suggestSlippageBps.ts | 0 .../src}/trading/suggestSlippageFromFee.test.ts | 0 .../cow-sdk/src}/trading/suggestSlippageFromFee.ts | 0 .../src}/trading/suggestSlippageFromVolume.test.ts | 0 .../src}/trading/suggestSlippageFromVolume.ts | 0 .../cow-sdk/src}/trading/tradingSdk.test.ts | 0 {src => packages/cow-sdk/src}/trading/tradingSdk.ts | 0 {src => packages/cow-sdk/src}/trading/types.ts | 0 .../cow-sdk/src}/trading/utils/getPartnerFeeBps.ts | 0 {src => packages/cow-sdk/src}/trading/utils/misc.ts | 0 .../cow-sdk/src}/trading/utils/slippage.test.ts | 0 .../cow-sdk/src}/trading/utils/slippage.ts | 0 {src => packages/cow-sdk/src}/utils.ts | 0 {src => packages/cow-sdk/src}/weiroll/README.md | 0 {src => packages/cow-sdk/src}/weiroll/index.test.ts | 0 {src => packages/cow-sdk/src}/weiroll/index.ts | 0 tsconfig.json => packages/cow-sdk/tsconfig.json | 0 .../cow-sdk/workflows}/publish.sh | 0 282 files changed, 0 insertions(+), 0 deletions(-) rename .babelrc => packages/cow-sdk/.babelrc (100%) rename README.md => packages/cow-sdk/README.md (100%) rename {abi => packages/cow-sdk/abi}/CoWShed.json (100%) rename {abi => packages/cow-sdk/abi}/CoWShedFactory.json (100%) rename {abi => packages/cow-sdk/abi}/ComposableCoW.json (100%) rename {abi => packages/cow-sdk/abi}/EthFlow.json (100%) rename {abi => packages/cow-sdk/abi}/ExtensibleFallbackHandler.json (100%) rename {abi => packages/cow-sdk/abi}/GPv2Settlement.json (100%) rename {abi => packages/cow-sdk/abi}/TWAP.json (100%) rename {docs => packages/cow-sdk/docs}/architecture.md (100%) rename {docs => packages/cow-sdk/docs}/images/CoW.png (100%) rename {examples => packages/cow-sdk/examples}/cra/.gitignore (100%) rename {examples => packages/cow-sdk/examples}/cra/README.md (100%) rename {examples => packages/cow-sdk/examples}/cra/package.json (100%) rename {examples => packages/cow-sdk/examples}/cra/public/index.html (100%) rename {examples => packages/cow-sdk/examples}/cra/src/App.css (100%) rename {examples => packages/cow-sdk/examples}/cra/src/App.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/components/jsonContent/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/components/resultContent/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/context.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/hooks/useCurrentChainId.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/hooks/usePrevious.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/hooks/useWeb3Info.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/index.css (100%) rename {examples => packages/cow-sdk/examples}/cra/src/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pageStyles.css (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/cowShedHook/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/getOrders/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/getQuote/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/getTrades/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/quickStart/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/sendOrder/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/sendOrderCancellation/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/signOrder/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/signOrderCancellation/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/smartContractWallet/GPv2Settlement.json (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/smartContractWallet/const.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/smartContractWallet/index.tsx (100%) rename {examples => packages/cow-sdk/examples}/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/src/utils.ts (100%) rename {examples => packages/cow-sdk/examples}/cra/tsconfig.json (100%) rename {examples => packages/cow-sdk/examples}/cra/yarn.lock (100%) rename {examples => packages/cow-sdk/examples}/nodejs/package.json (100%) rename {examples => packages/cow-sdk/examples}/nodejs/src/index.ts (100%) rename {examples => packages/cow-sdk/examples}/nodejs/yarn.lock (100%) rename {examples => packages/cow-sdk/examples}/vanilla/package.json (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/formState.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/index.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/pageActions.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/pageHtml.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/styles.css (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/tokens.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/src/utils.ts (100%) rename {examples => packages/cow-sdk/examples}/vanilla/tsconfig.json (100%) rename {examples => packages/cow-sdk/examples}/vanilla/webpack.config.js (100%) rename {examples => packages/cow-sdk/examples}/vanilla/yarn.lock (100%) rename graphql-codegen.yml => packages/cow-sdk/graphql-codegen.yml (100%) rename package.json => packages/cow-sdk/package.json (100%) rename {scripts => packages/cow-sdk/scripts}/generateTradingSchemas.ts (100%) rename setupTests.js => packages/cow-sdk/setupTests.js (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/BridgingSdk.test.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/BridgingSdk.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/getCrossChainOrder.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/getErc20Decimals.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/getQuoteWithBridge.test.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/getQuoteWithBridge.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/getQuoteWithoutBridge.ts (100%) rename {src => packages/cow-sdk/src}/bridging/BridgingSdk/mock/bridgeRequestMocks.ts (100%) rename {src => packages/cow-sdk/src}/bridging/README.md (100%) rename {src => packages/cow-sdk/src}/bridging/const.ts (100%) rename {src => packages/cow-sdk/src}/bridging/errors.ts (100%) rename {src => packages/cow-sdk/src}/bridging/index.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/AcrossApi.spec.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/AcrossApi.test.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/AcrossApi.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/AcrossBridgeProvider.test.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/AcrossBridgeProvider.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/abi.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/across-logo.png (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/const/contracts.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/const/misc.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/const/tokens.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/createAcrossDepositCall.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/types.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/util.test.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/across/util.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/mock/MockBridgeProvider.ts (100%) rename {src => packages/cow-sdk/src}/bridging/providers/mock/mock-logo.webp (100%) rename {src => packages/cow-sdk/src}/bridging/types.ts (100%) rename {src => packages/cow-sdk/src}/bridging/utils.ts (100%) rename {src => packages/cow-sdk/src}/chains/const/index.ts (100%) rename {src => packages/cow-sdk/src}/chains/const/path.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/arbitrum.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/avalanche.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/base.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/gnosis.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/mainnet.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/optimism.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/polygon.ts (100%) rename {src => packages/cow-sdk/src}/chains/details/sepolia.ts (100%) rename {src => packages/cow-sdk/src}/chains/images/arbitrum-logo-dark.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/arbitrum-logo-light.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/avax-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/base-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/gnosis-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/mainnet-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/optimism-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/polygon-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/images/sepolia-logo.svg (100%) rename {src => packages/cow-sdk/src}/chains/index.ts (100%) rename {src => packages/cow-sdk/src}/chains/types.ts (100%) rename {src => packages/cow-sdk/src}/chains/utils.ts (100%) rename {src => packages/cow-sdk/src}/common/consts/config.ts (100%) rename {src => packages/cow-sdk/src}/common/consts/contracts.ts (100%) rename {src => packages/cow-sdk/src}/common/consts/ipfs.ts (100%) rename {src => packages/cow-sdk/src}/common/consts/path.ts (100%) rename {src => packages/cow-sdk/src}/common/consts/tokens.ts (100%) rename {src => packages/cow-sdk/src}/common/index.ts (100%) rename {src => packages/cow-sdk/src}/common/types/config.ts (100%) rename {src => packages/cow-sdk/src}/common/types/cow-error.ts (100%) rename {src => packages/cow-sdk/src}/common/types/ethereum.ts (100%) rename {src => packages/cow-sdk/src}/common/types/tokens.ts (100%) rename {src => packages/cow-sdk/src}/common/types/wallets.ts (100%) rename {src => packages/cow-sdk/src}/common/utils/config.ts (100%) rename {src => packages/cow-sdk/src}/common/utils/log.ts (100%) rename {src => packages/cow-sdk/src}/common/utils/math.ts (100%) rename {src => packages/cow-sdk/src}/common/utils/serialize.ts (100%) rename {src => packages/cow-sdk/src}/common/utils/wallet.ts (100%) rename {src => packages/cow-sdk/src}/composable/ConditionalOrder.spec.ts (100%) rename {src => packages/cow-sdk/src}/composable/ConditionalOrder.ts (100%) rename {src => packages/cow-sdk/src}/composable/ConditionalOrderFactory.ts (100%) rename {src => packages/cow-sdk/src}/composable/Multiplexer.spec.ts (100%) rename {src => packages/cow-sdk/src}/composable/Multiplexer.ts (100%) rename {src => packages/cow-sdk/src}/composable/contracts.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/ComposableCoW.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/ExtensibleFallbackHandler.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/TWAP.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/common.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/factories/ComposableCoW__factory.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/factories/ExtensibleFallbackHandler__factory.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/factories/TWAP__factory.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/factories/index.ts (100%) rename {src => packages/cow-sdk/src}/composable/generated/index.ts (100%) rename {src => packages/cow-sdk/src}/composable/index.ts (100%) rename {src => packages/cow-sdk/src}/composable/orderTypes/Twap.spec.ts (100%) rename {src => packages/cow-sdk/src}/composable/orderTypes/Twap.ts (100%) rename {src => packages/cow-sdk/src}/composable/orderTypes/index.ts (100%) rename {src => packages/cow-sdk/src}/composable/orderTypes/test/TestConditionalOrder.ts (100%) rename {src => packages/cow-sdk/src}/composable/types.ts (100%) rename {src => packages/cow-sdk/src}/composable/utils.spec.ts (100%) rename {src => packages/cow-sdk/src}/composable/utils.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/CowShedSdk.test.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/CowShedSdk.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/README.md (100%) rename {src => packages/cow-sdk/src}/cow-shed/contracts/CoWShedHooks.spec.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/contracts/CoWShedHooks.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/contracts/utils.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/index.ts (100%) rename {src => packages/cow-sdk/src}/cow-shed/types.ts (100%) rename {src => packages/cow-sdk/src}/hooks/utils.ts (100%) rename {src => packages/cow-sdk/src}/index.ts (100%) rename {src => packages/cow-sdk/src}/order-book/__mock__/api.ts (100%) rename {src => packages/cow-sdk/src}/order-book/api.spec.ts (100%) rename {src => packages/cow-sdk/src}/order-book/api.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/index.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Address.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/AppData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/AppDataHash.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/AppDataObject.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Auction.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/AuctionOrder.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/AuctionPrices.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/BigUint.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/BuyTokenDestination.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/CallData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/CompetitionAuction.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/CompetitionOrderStatus.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/EcdsaSignature.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/EcdsaSigningScheme.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/EthflowData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/ExecutedAmounts.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/ExecutedProtocolFee.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/FeePolicy.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/InteractionData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/NativePriceResponse.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OnchainOrderData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Order.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderCancellation.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderCancellationError.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderCancellations.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderClass.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderCreation.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderKind.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderMetaData.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderParameters.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderPostError.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteRequest.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteResponse.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteSide.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteSideKindBuy.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteSideKindSell.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderQuoteValidity.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/OrderStatus.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/PreSignature.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/PriceEstimationError.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/PriceImprovement.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/PriceQuality.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Quote.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/SellTokenSource.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Signature.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/SigningScheme.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/SolverCompetitionResponse.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/SolverSettlement.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Surplus.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/TokenAmount.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/TotalSurplus.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Trade.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/TransactionHash.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/UID.ts (100%) rename {src => packages/cow-sdk/src}/order-book/generated/models/Volume.ts (100%) rename {src => packages/cow-sdk/src}/order-book/index.ts (100%) rename {src => packages/cow-sdk/src}/order-book/mock.ts (100%) rename {src => packages/cow-sdk/src}/order-book/quoteAmountsAndCostsUtils.test.ts (100%) rename {src => packages/cow-sdk/src}/order-book/quoteAmountsAndCostsUtils.ts (100%) rename {src => packages/cow-sdk/src}/order-book/request.test.ts (100%) rename {src => packages/cow-sdk/src}/order-book/request.ts (100%) rename {src => packages/cow-sdk/src}/order-book/transformOrder.test.ts (100%) rename {src => packages/cow-sdk/src}/order-book/transformOrder.ts (100%) rename {src => packages/cow-sdk/src}/order-book/types.ts (100%) rename {src => packages/cow-sdk/src}/order-signing/index.ts (100%) rename {src => packages/cow-sdk/src}/order-signing/orderSigningUtils.spec.ts (100%) rename {src => packages/cow-sdk/src}/order-signing/orderSigningUtils.ts (100%) rename {src => packages/cow-sdk/src}/order-signing/types.ts (100%) rename {src => packages/cow-sdk/src}/order-signing/utils.ts (100%) rename {src => packages/cow-sdk/src}/subgraph/api.spec.ts (100%) rename {src => packages/cow-sdk/src}/subgraph/api.ts (100%) rename {src => packages/cow-sdk/src}/subgraph/graphql.ts (100%) rename {src => packages/cow-sdk/src}/subgraph/index.ts (100%) rename {src => packages/cow-sdk/src}/subgraph/queries.ts (100%) rename {src => packages/cow-sdk/src}/test/utils.ts (100%) rename {src => packages/cow-sdk/src}/trading/README.md (100%) rename {src => packages/cow-sdk/src}/trading/appDataUtils.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/appDataUtils.ts (100%) rename {src => packages/cow-sdk/src}/trading/calculateUniqueOrderId.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/calculateUniqueOrderId.ts (100%) rename {src => packages/cow-sdk/src}/trading/consts.ts (100%) rename {src => packages/cow-sdk/src}/trading/getEthFlowTransaction.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/getEthFlowTransaction.ts (100%) rename {src => packages/cow-sdk/src}/trading/getOrderToSign.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/getOrderToSign.ts (100%) rename {src => packages/cow-sdk/src}/trading/getOrderTypedData.ts (100%) rename {src => packages/cow-sdk/src}/trading/getPreSignTransaction.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/getPreSignTransaction.ts (100%) rename {src => packages/cow-sdk/src}/trading/getQuote.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/getQuote.ts (100%) rename {src => packages/cow-sdk/src}/trading/index.ts (100%) rename {src => packages/cow-sdk/src}/trading/postCoWProtocolTrade.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/postCoWProtocolTrade.ts (100%) rename {src => packages/cow-sdk/src}/trading/postLimitOrder.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/postLimitOrder.ts (100%) rename {src => packages/cow-sdk/src}/trading/postSellNativeCurrencyOrder.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/postSellNativeCurrencyOrder.ts (100%) rename {src => packages/cow-sdk/src}/trading/postSwapOrder.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/postSwapOrder.ts (100%) rename {src => packages/cow-sdk/src}/trading/suggestSlippageBps.ts (100%) rename {src => packages/cow-sdk/src}/trading/suggestSlippageFromFee.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/suggestSlippageFromFee.ts (100%) rename {src => packages/cow-sdk/src}/trading/suggestSlippageFromVolume.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/suggestSlippageFromVolume.ts (100%) rename {src => packages/cow-sdk/src}/trading/tradingSdk.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/tradingSdk.ts (100%) rename {src => packages/cow-sdk/src}/trading/types.ts (100%) rename {src => packages/cow-sdk/src}/trading/utils/getPartnerFeeBps.ts (100%) rename {src => packages/cow-sdk/src}/trading/utils/misc.ts (100%) rename {src => packages/cow-sdk/src}/trading/utils/slippage.test.ts (100%) rename {src => packages/cow-sdk/src}/trading/utils/slippage.ts (100%) rename {src => packages/cow-sdk/src}/utils.ts (100%) rename {src => packages/cow-sdk/src}/weiroll/README.md (100%) rename {src => packages/cow-sdk/src}/weiroll/index.test.ts (100%) rename {src => packages/cow-sdk/src}/weiroll/index.ts (100%) rename tsconfig.json => packages/cow-sdk/tsconfig.json (100%) rename {workflows => packages/cow-sdk/workflows}/publish.sh (100%) diff --git a/.babelrc b/packages/cow-sdk/.babelrc similarity index 100% rename from .babelrc rename to packages/cow-sdk/.babelrc diff --git a/README.md b/packages/cow-sdk/README.md similarity index 100% rename from README.md rename to packages/cow-sdk/README.md diff --git a/abi/CoWShed.json b/packages/cow-sdk/abi/CoWShed.json similarity index 100% rename from abi/CoWShed.json rename to packages/cow-sdk/abi/CoWShed.json diff --git a/abi/CoWShedFactory.json b/packages/cow-sdk/abi/CoWShedFactory.json similarity index 100% rename from abi/CoWShedFactory.json rename to packages/cow-sdk/abi/CoWShedFactory.json diff --git a/abi/ComposableCoW.json b/packages/cow-sdk/abi/ComposableCoW.json similarity index 100% rename from abi/ComposableCoW.json rename to packages/cow-sdk/abi/ComposableCoW.json diff --git a/abi/EthFlow.json b/packages/cow-sdk/abi/EthFlow.json similarity index 100% rename from abi/EthFlow.json rename to packages/cow-sdk/abi/EthFlow.json diff --git a/abi/ExtensibleFallbackHandler.json b/packages/cow-sdk/abi/ExtensibleFallbackHandler.json similarity index 100% rename from abi/ExtensibleFallbackHandler.json rename to packages/cow-sdk/abi/ExtensibleFallbackHandler.json diff --git a/abi/GPv2Settlement.json b/packages/cow-sdk/abi/GPv2Settlement.json similarity index 100% rename from abi/GPv2Settlement.json rename to packages/cow-sdk/abi/GPv2Settlement.json diff --git a/abi/TWAP.json b/packages/cow-sdk/abi/TWAP.json similarity index 100% rename from abi/TWAP.json rename to packages/cow-sdk/abi/TWAP.json diff --git a/docs/architecture.md b/packages/cow-sdk/docs/architecture.md similarity index 100% rename from docs/architecture.md rename to packages/cow-sdk/docs/architecture.md diff --git a/docs/images/CoW.png b/packages/cow-sdk/docs/images/CoW.png similarity index 100% rename from docs/images/CoW.png rename to packages/cow-sdk/docs/images/CoW.png diff --git a/examples/cra/.gitignore b/packages/cow-sdk/examples/cra/.gitignore similarity index 100% rename from examples/cra/.gitignore rename to packages/cow-sdk/examples/cra/.gitignore diff --git a/examples/cra/README.md b/packages/cow-sdk/examples/cra/README.md similarity index 100% rename from examples/cra/README.md rename to packages/cow-sdk/examples/cra/README.md diff --git a/examples/cra/package.json b/packages/cow-sdk/examples/cra/package.json similarity index 100% rename from examples/cra/package.json rename to packages/cow-sdk/examples/cra/package.json diff --git a/examples/cra/public/index.html b/packages/cow-sdk/examples/cra/public/index.html similarity index 100% rename from examples/cra/public/index.html rename to packages/cow-sdk/examples/cra/public/index.html diff --git a/examples/cra/src/App.css b/packages/cow-sdk/examples/cra/src/App.css similarity index 100% rename from examples/cra/src/App.css rename to packages/cow-sdk/examples/cra/src/App.css diff --git a/examples/cra/src/App.tsx b/packages/cow-sdk/examples/cra/src/App.tsx similarity index 100% rename from examples/cra/src/App.tsx rename to packages/cow-sdk/examples/cra/src/App.tsx diff --git a/examples/cra/src/components/jsonContent/index.tsx b/packages/cow-sdk/examples/cra/src/components/jsonContent/index.tsx similarity index 100% rename from examples/cra/src/components/jsonContent/index.tsx rename to packages/cow-sdk/examples/cra/src/components/jsonContent/index.tsx diff --git a/examples/cra/src/components/resultContent/index.tsx b/packages/cow-sdk/examples/cra/src/components/resultContent/index.tsx similarity index 100% rename from examples/cra/src/components/resultContent/index.tsx rename to packages/cow-sdk/examples/cra/src/components/resultContent/index.tsx diff --git a/examples/cra/src/context.ts b/packages/cow-sdk/examples/cra/src/context.ts similarity index 100% rename from examples/cra/src/context.ts rename to packages/cow-sdk/examples/cra/src/context.ts diff --git a/examples/cra/src/hooks/useCurrentChainId.ts b/packages/cow-sdk/examples/cra/src/hooks/useCurrentChainId.ts similarity index 100% rename from examples/cra/src/hooks/useCurrentChainId.ts rename to packages/cow-sdk/examples/cra/src/hooks/useCurrentChainId.ts diff --git a/examples/cra/src/hooks/usePrevious.ts b/packages/cow-sdk/examples/cra/src/hooks/usePrevious.ts similarity index 100% rename from examples/cra/src/hooks/usePrevious.ts rename to packages/cow-sdk/examples/cra/src/hooks/usePrevious.ts diff --git a/examples/cra/src/hooks/useWeb3Info.ts b/packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts similarity index 100% rename from examples/cra/src/hooks/useWeb3Info.ts rename to packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts diff --git a/examples/cra/src/index.css b/packages/cow-sdk/examples/cra/src/index.css similarity index 100% rename from examples/cra/src/index.css rename to packages/cow-sdk/examples/cra/src/index.css diff --git a/examples/cra/src/index.tsx b/packages/cow-sdk/examples/cra/src/index.tsx similarity index 100% rename from examples/cra/src/index.tsx rename to packages/cow-sdk/examples/cra/src/index.tsx diff --git a/examples/cra/src/pageStyles.css b/packages/cow-sdk/examples/cra/src/pageStyles.css similarity index 100% rename from examples/cra/src/pageStyles.css rename to packages/cow-sdk/examples/cra/src/pageStyles.css diff --git a/examples/cra/src/pages/cowShedHook/index.tsx b/packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx similarity index 100% rename from examples/cra/src/pages/cowShedHook/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx diff --git a/examples/cra/src/pages/getOrders/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx similarity index 100% rename from examples/cra/src/pages/getOrders/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx diff --git a/examples/cra/src/pages/getQuote/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx similarity index 100% rename from examples/cra/src/pages/getQuote/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx diff --git a/examples/cra/src/pages/getTrades/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx similarity index 100% rename from examples/cra/src/pages/getTrades/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx diff --git a/examples/cra/src/pages/quickStart/index.tsx b/packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx similarity index 100% rename from examples/cra/src/pages/quickStart/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx diff --git a/examples/cra/src/pages/sendOrder/index.tsx b/packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx similarity index 100% rename from examples/cra/src/pages/sendOrder/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx diff --git a/examples/cra/src/pages/sendOrderCancellation/index.tsx b/packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx similarity index 100% rename from examples/cra/src/pages/sendOrderCancellation/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx diff --git a/examples/cra/src/pages/signOrder/index.tsx b/packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx similarity index 100% rename from examples/cra/src/pages/signOrder/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx diff --git a/examples/cra/src/pages/signOrderCancellation/index.tsx b/packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx similarity index 100% rename from examples/cra/src/pages/signOrderCancellation/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx diff --git a/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json similarity index 100% rename from examples/cra/src/pages/smartContractWallet/GPv2Settlement.json rename to packages/cow-sdk/examples/cra/src/pages/smartContractWallet/GPv2Settlement.json diff --git a/examples/cra/src/pages/smartContractWallet/const.ts b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/const.ts similarity index 100% rename from examples/cra/src/pages/smartContractWallet/const.ts rename to packages/cow-sdk/examples/cra/src/pages/smartContractWallet/const.ts diff --git a/examples/cra/src/pages/smartContractWallet/index.tsx b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx similarity index 100% rename from examples/cra/src/pages/smartContractWallet/index.tsx rename to packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx diff --git a/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts similarity index 100% rename from examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts rename to packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts diff --git a/examples/cra/src/utils.ts b/packages/cow-sdk/examples/cra/src/utils.ts similarity index 100% rename from examples/cra/src/utils.ts rename to packages/cow-sdk/examples/cra/src/utils.ts diff --git a/examples/cra/tsconfig.json b/packages/cow-sdk/examples/cra/tsconfig.json similarity index 100% rename from examples/cra/tsconfig.json rename to packages/cow-sdk/examples/cra/tsconfig.json diff --git a/examples/cra/yarn.lock b/packages/cow-sdk/examples/cra/yarn.lock similarity index 100% rename from examples/cra/yarn.lock rename to packages/cow-sdk/examples/cra/yarn.lock diff --git a/examples/nodejs/package.json b/packages/cow-sdk/examples/nodejs/package.json similarity index 100% rename from examples/nodejs/package.json rename to packages/cow-sdk/examples/nodejs/package.json diff --git a/examples/nodejs/src/index.ts b/packages/cow-sdk/examples/nodejs/src/index.ts similarity index 100% rename from examples/nodejs/src/index.ts rename to packages/cow-sdk/examples/nodejs/src/index.ts diff --git a/examples/nodejs/yarn.lock b/packages/cow-sdk/examples/nodejs/yarn.lock similarity index 100% rename from examples/nodejs/yarn.lock rename to packages/cow-sdk/examples/nodejs/yarn.lock diff --git a/examples/vanilla/package.json b/packages/cow-sdk/examples/vanilla/package.json similarity index 100% rename from examples/vanilla/package.json rename to packages/cow-sdk/examples/vanilla/package.json diff --git a/examples/vanilla/src/formState.ts b/packages/cow-sdk/examples/vanilla/src/formState.ts similarity index 100% rename from examples/vanilla/src/formState.ts rename to packages/cow-sdk/examples/vanilla/src/formState.ts diff --git a/examples/vanilla/src/index.ts b/packages/cow-sdk/examples/vanilla/src/index.ts similarity index 100% rename from examples/vanilla/src/index.ts rename to packages/cow-sdk/examples/vanilla/src/index.ts diff --git a/examples/vanilla/src/pageActions.ts b/packages/cow-sdk/examples/vanilla/src/pageActions.ts similarity index 100% rename from examples/vanilla/src/pageActions.ts rename to packages/cow-sdk/examples/vanilla/src/pageActions.ts diff --git a/examples/vanilla/src/pageHtml.ts b/packages/cow-sdk/examples/vanilla/src/pageHtml.ts similarity index 100% rename from examples/vanilla/src/pageHtml.ts rename to packages/cow-sdk/examples/vanilla/src/pageHtml.ts diff --git a/examples/vanilla/src/styles.css b/packages/cow-sdk/examples/vanilla/src/styles.css similarity index 100% rename from examples/vanilla/src/styles.css rename to packages/cow-sdk/examples/vanilla/src/styles.css diff --git a/examples/vanilla/src/tokens.ts b/packages/cow-sdk/examples/vanilla/src/tokens.ts similarity index 100% rename from examples/vanilla/src/tokens.ts rename to packages/cow-sdk/examples/vanilla/src/tokens.ts diff --git a/examples/vanilla/src/utils.ts b/packages/cow-sdk/examples/vanilla/src/utils.ts similarity index 100% rename from examples/vanilla/src/utils.ts rename to packages/cow-sdk/examples/vanilla/src/utils.ts diff --git a/examples/vanilla/tsconfig.json b/packages/cow-sdk/examples/vanilla/tsconfig.json similarity index 100% rename from examples/vanilla/tsconfig.json rename to packages/cow-sdk/examples/vanilla/tsconfig.json diff --git a/examples/vanilla/webpack.config.js b/packages/cow-sdk/examples/vanilla/webpack.config.js similarity index 100% rename from examples/vanilla/webpack.config.js rename to packages/cow-sdk/examples/vanilla/webpack.config.js diff --git a/examples/vanilla/yarn.lock b/packages/cow-sdk/examples/vanilla/yarn.lock similarity index 100% rename from examples/vanilla/yarn.lock rename to packages/cow-sdk/examples/vanilla/yarn.lock diff --git a/graphql-codegen.yml b/packages/cow-sdk/graphql-codegen.yml similarity index 100% rename from graphql-codegen.yml rename to packages/cow-sdk/graphql-codegen.yml diff --git a/package.json b/packages/cow-sdk/package.json similarity index 100% rename from package.json rename to packages/cow-sdk/package.json diff --git a/scripts/generateTradingSchemas.ts b/packages/cow-sdk/scripts/generateTradingSchemas.ts similarity index 100% rename from scripts/generateTradingSchemas.ts rename to packages/cow-sdk/scripts/generateTradingSchemas.ts diff --git a/setupTests.js b/packages/cow-sdk/setupTests.js similarity index 100% rename from setupTests.js rename to packages/cow-sdk/setupTests.js diff --git a/src/bridging/BridgingSdk/BridgingSdk.test.ts b/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.test.ts similarity index 100% rename from src/bridging/BridgingSdk/BridgingSdk.test.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.test.ts diff --git a/src/bridging/BridgingSdk/BridgingSdk.ts b/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts similarity index 100% rename from src/bridging/BridgingSdk/BridgingSdk.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts diff --git a/src/bridging/BridgingSdk/getCrossChainOrder.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts similarity index 100% rename from src/bridging/BridgingSdk/getCrossChainOrder.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts diff --git a/src/bridging/BridgingSdk/getErc20Decimals.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getErc20Decimals.ts similarity index 100% rename from src/bridging/BridgingSdk/getErc20Decimals.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/getErc20Decimals.ts diff --git a/src/bridging/BridgingSdk/getQuoteWithBridge.test.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithBridge.test.ts similarity index 100% rename from src/bridging/BridgingSdk/getQuoteWithBridge.test.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithBridge.test.ts diff --git a/src/bridging/BridgingSdk/getQuoteWithBridge.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithBridge.ts similarity index 100% rename from src/bridging/BridgingSdk/getQuoteWithBridge.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithBridge.ts diff --git a/src/bridging/BridgingSdk/getQuoteWithoutBridge.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithoutBridge.ts similarity index 100% rename from src/bridging/BridgingSdk/getQuoteWithoutBridge.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/getQuoteWithoutBridge.ts diff --git a/src/bridging/BridgingSdk/mock/bridgeRequestMocks.ts b/packages/cow-sdk/src/bridging/BridgingSdk/mock/bridgeRequestMocks.ts similarity index 100% rename from src/bridging/BridgingSdk/mock/bridgeRequestMocks.ts rename to packages/cow-sdk/src/bridging/BridgingSdk/mock/bridgeRequestMocks.ts diff --git a/src/bridging/README.md b/packages/cow-sdk/src/bridging/README.md similarity index 100% rename from src/bridging/README.md rename to packages/cow-sdk/src/bridging/README.md diff --git a/src/bridging/const.ts b/packages/cow-sdk/src/bridging/const.ts similarity index 100% rename from src/bridging/const.ts rename to packages/cow-sdk/src/bridging/const.ts diff --git a/src/bridging/errors.ts b/packages/cow-sdk/src/bridging/errors.ts similarity index 100% rename from src/bridging/errors.ts rename to packages/cow-sdk/src/bridging/errors.ts diff --git a/src/bridging/index.ts b/packages/cow-sdk/src/bridging/index.ts similarity index 100% rename from src/bridging/index.ts rename to packages/cow-sdk/src/bridging/index.ts diff --git a/src/bridging/providers/across/AcrossApi.spec.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.spec.ts similarity index 100% rename from src/bridging/providers/across/AcrossApi.spec.ts rename to packages/cow-sdk/src/bridging/providers/across/AcrossApi.spec.ts diff --git a/src/bridging/providers/across/AcrossApi.test.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts similarity index 100% rename from src/bridging/providers/across/AcrossApi.test.ts rename to packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts diff --git a/src/bridging/providers/across/AcrossApi.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts similarity index 100% rename from src/bridging/providers/across/AcrossApi.ts rename to packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts diff --git a/src/bridging/providers/across/AcrossBridgeProvider.test.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts similarity index 100% rename from src/bridging/providers/across/AcrossBridgeProvider.test.ts rename to packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts diff --git a/src/bridging/providers/across/AcrossBridgeProvider.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts similarity index 100% rename from src/bridging/providers/across/AcrossBridgeProvider.ts rename to packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts diff --git a/src/bridging/providers/across/abi.ts b/packages/cow-sdk/src/bridging/providers/across/abi.ts similarity index 100% rename from src/bridging/providers/across/abi.ts rename to packages/cow-sdk/src/bridging/providers/across/abi.ts diff --git a/src/bridging/providers/across/across-logo.png b/packages/cow-sdk/src/bridging/providers/across/across-logo.png similarity index 100% rename from src/bridging/providers/across/across-logo.png rename to packages/cow-sdk/src/bridging/providers/across/across-logo.png diff --git a/src/bridging/providers/across/const/contracts.ts b/packages/cow-sdk/src/bridging/providers/across/const/contracts.ts similarity index 100% rename from src/bridging/providers/across/const/contracts.ts rename to packages/cow-sdk/src/bridging/providers/across/const/contracts.ts diff --git a/src/bridging/providers/across/const/misc.ts b/packages/cow-sdk/src/bridging/providers/across/const/misc.ts similarity index 100% rename from src/bridging/providers/across/const/misc.ts rename to packages/cow-sdk/src/bridging/providers/across/const/misc.ts diff --git a/src/bridging/providers/across/const/tokens.ts b/packages/cow-sdk/src/bridging/providers/across/const/tokens.ts similarity index 100% rename from src/bridging/providers/across/const/tokens.ts rename to packages/cow-sdk/src/bridging/providers/across/const/tokens.ts diff --git a/src/bridging/providers/across/createAcrossDepositCall.ts b/packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts similarity index 100% rename from src/bridging/providers/across/createAcrossDepositCall.ts rename to packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts diff --git a/src/bridging/providers/across/types.ts b/packages/cow-sdk/src/bridging/providers/across/types.ts similarity index 100% rename from src/bridging/providers/across/types.ts rename to packages/cow-sdk/src/bridging/providers/across/types.ts diff --git a/src/bridging/providers/across/util.test.ts b/packages/cow-sdk/src/bridging/providers/across/util.test.ts similarity index 100% rename from src/bridging/providers/across/util.test.ts rename to packages/cow-sdk/src/bridging/providers/across/util.test.ts diff --git a/src/bridging/providers/across/util.ts b/packages/cow-sdk/src/bridging/providers/across/util.ts similarity index 100% rename from src/bridging/providers/across/util.ts rename to packages/cow-sdk/src/bridging/providers/across/util.ts diff --git a/src/bridging/providers/mock/MockBridgeProvider.ts b/packages/cow-sdk/src/bridging/providers/mock/MockBridgeProvider.ts similarity index 100% rename from src/bridging/providers/mock/MockBridgeProvider.ts rename to packages/cow-sdk/src/bridging/providers/mock/MockBridgeProvider.ts diff --git a/src/bridging/providers/mock/mock-logo.webp b/packages/cow-sdk/src/bridging/providers/mock/mock-logo.webp similarity index 100% rename from src/bridging/providers/mock/mock-logo.webp rename to packages/cow-sdk/src/bridging/providers/mock/mock-logo.webp diff --git a/src/bridging/types.ts b/packages/cow-sdk/src/bridging/types.ts similarity index 100% rename from src/bridging/types.ts rename to packages/cow-sdk/src/bridging/types.ts diff --git a/src/bridging/utils.ts b/packages/cow-sdk/src/bridging/utils.ts similarity index 100% rename from src/bridging/utils.ts rename to packages/cow-sdk/src/bridging/utils.ts diff --git a/src/chains/const/index.ts b/packages/cow-sdk/src/chains/const/index.ts similarity index 100% rename from src/chains/const/index.ts rename to packages/cow-sdk/src/chains/const/index.ts diff --git a/src/chains/const/path.ts b/packages/cow-sdk/src/chains/const/path.ts similarity index 100% rename from src/chains/const/path.ts rename to packages/cow-sdk/src/chains/const/path.ts diff --git a/src/chains/details/arbitrum.ts b/packages/cow-sdk/src/chains/details/arbitrum.ts similarity index 100% rename from src/chains/details/arbitrum.ts rename to packages/cow-sdk/src/chains/details/arbitrum.ts diff --git a/src/chains/details/avalanche.ts b/packages/cow-sdk/src/chains/details/avalanche.ts similarity index 100% rename from src/chains/details/avalanche.ts rename to packages/cow-sdk/src/chains/details/avalanche.ts diff --git a/src/chains/details/base.ts b/packages/cow-sdk/src/chains/details/base.ts similarity index 100% rename from src/chains/details/base.ts rename to packages/cow-sdk/src/chains/details/base.ts diff --git a/src/chains/details/gnosis.ts b/packages/cow-sdk/src/chains/details/gnosis.ts similarity index 100% rename from src/chains/details/gnosis.ts rename to packages/cow-sdk/src/chains/details/gnosis.ts diff --git a/src/chains/details/mainnet.ts b/packages/cow-sdk/src/chains/details/mainnet.ts similarity index 100% rename from src/chains/details/mainnet.ts rename to packages/cow-sdk/src/chains/details/mainnet.ts diff --git a/src/chains/details/optimism.ts b/packages/cow-sdk/src/chains/details/optimism.ts similarity index 100% rename from src/chains/details/optimism.ts rename to packages/cow-sdk/src/chains/details/optimism.ts diff --git a/src/chains/details/polygon.ts b/packages/cow-sdk/src/chains/details/polygon.ts similarity index 100% rename from src/chains/details/polygon.ts rename to packages/cow-sdk/src/chains/details/polygon.ts diff --git a/src/chains/details/sepolia.ts b/packages/cow-sdk/src/chains/details/sepolia.ts similarity index 100% rename from src/chains/details/sepolia.ts rename to packages/cow-sdk/src/chains/details/sepolia.ts diff --git a/src/chains/images/arbitrum-logo-dark.svg b/packages/cow-sdk/src/chains/images/arbitrum-logo-dark.svg similarity index 100% rename from src/chains/images/arbitrum-logo-dark.svg rename to packages/cow-sdk/src/chains/images/arbitrum-logo-dark.svg diff --git a/src/chains/images/arbitrum-logo-light.svg b/packages/cow-sdk/src/chains/images/arbitrum-logo-light.svg similarity index 100% rename from src/chains/images/arbitrum-logo-light.svg rename to packages/cow-sdk/src/chains/images/arbitrum-logo-light.svg diff --git a/src/chains/images/avax-logo.svg b/packages/cow-sdk/src/chains/images/avax-logo.svg similarity index 100% rename from src/chains/images/avax-logo.svg rename to packages/cow-sdk/src/chains/images/avax-logo.svg diff --git a/src/chains/images/base-logo.svg b/packages/cow-sdk/src/chains/images/base-logo.svg similarity index 100% rename from src/chains/images/base-logo.svg rename to packages/cow-sdk/src/chains/images/base-logo.svg diff --git a/src/chains/images/gnosis-logo.svg b/packages/cow-sdk/src/chains/images/gnosis-logo.svg similarity index 100% rename from src/chains/images/gnosis-logo.svg rename to packages/cow-sdk/src/chains/images/gnosis-logo.svg diff --git a/src/chains/images/mainnet-logo.svg b/packages/cow-sdk/src/chains/images/mainnet-logo.svg similarity index 100% rename from src/chains/images/mainnet-logo.svg rename to packages/cow-sdk/src/chains/images/mainnet-logo.svg diff --git a/src/chains/images/optimism-logo.svg b/packages/cow-sdk/src/chains/images/optimism-logo.svg similarity index 100% rename from src/chains/images/optimism-logo.svg rename to packages/cow-sdk/src/chains/images/optimism-logo.svg diff --git a/src/chains/images/polygon-logo.svg b/packages/cow-sdk/src/chains/images/polygon-logo.svg similarity index 100% rename from src/chains/images/polygon-logo.svg rename to packages/cow-sdk/src/chains/images/polygon-logo.svg diff --git a/src/chains/images/sepolia-logo.svg b/packages/cow-sdk/src/chains/images/sepolia-logo.svg similarity index 100% rename from src/chains/images/sepolia-logo.svg rename to packages/cow-sdk/src/chains/images/sepolia-logo.svg diff --git a/src/chains/index.ts b/packages/cow-sdk/src/chains/index.ts similarity index 100% rename from src/chains/index.ts rename to packages/cow-sdk/src/chains/index.ts diff --git a/src/chains/types.ts b/packages/cow-sdk/src/chains/types.ts similarity index 100% rename from src/chains/types.ts rename to packages/cow-sdk/src/chains/types.ts diff --git a/src/chains/utils.ts b/packages/cow-sdk/src/chains/utils.ts similarity index 100% rename from src/chains/utils.ts rename to packages/cow-sdk/src/chains/utils.ts diff --git a/src/common/consts/config.ts b/packages/cow-sdk/src/common/consts/config.ts similarity index 100% rename from src/common/consts/config.ts rename to packages/cow-sdk/src/common/consts/config.ts diff --git a/src/common/consts/contracts.ts b/packages/cow-sdk/src/common/consts/contracts.ts similarity index 100% rename from src/common/consts/contracts.ts rename to packages/cow-sdk/src/common/consts/contracts.ts diff --git a/src/common/consts/ipfs.ts b/packages/cow-sdk/src/common/consts/ipfs.ts similarity index 100% rename from src/common/consts/ipfs.ts rename to packages/cow-sdk/src/common/consts/ipfs.ts diff --git a/src/common/consts/path.ts b/packages/cow-sdk/src/common/consts/path.ts similarity index 100% rename from src/common/consts/path.ts rename to packages/cow-sdk/src/common/consts/path.ts diff --git a/src/common/consts/tokens.ts b/packages/cow-sdk/src/common/consts/tokens.ts similarity index 100% rename from src/common/consts/tokens.ts rename to packages/cow-sdk/src/common/consts/tokens.ts diff --git a/src/common/index.ts b/packages/cow-sdk/src/common/index.ts similarity index 100% rename from src/common/index.ts rename to packages/cow-sdk/src/common/index.ts diff --git a/src/common/types/config.ts b/packages/cow-sdk/src/common/types/config.ts similarity index 100% rename from src/common/types/config.ts rename to packages/cow-sdk/src/common/types/config.ts diff --git a/src/common/types/cow-error.ts b/packages/cow-sdk/src/common/types/cow-error.ts similarity index 100% rename from src/common/types/cow-error.ts rename to packages/cow-sdk/src/common/types/cow-error.ts diff --git a/src/common/types/ethereum.ts b/packages/cow-sdk/src/common/types/ethereum.ts similarity index 100% rename from src/common/types/ethereum.ts rename to packages/cow-sdk/src/common/types/ethereum.ts diff --git a/src/common/types/tokens.ts b/packages/cow-sdk/src/common/types/tokens.ts similarity index 100% rename from src/common/types/tokens.ts rename to packages/cow-sdk/src/common/types/tokens.ts diff --git a/src/common/types/wallets.ts b/packages/cow-sdk/src/common/types/wallets.ts similarity index 100% rename from src/common/types/wallets.ts rename to packages/cow-sdk/src/common/types/wallets.ts diff --git a/src/common/utils/config.ts b/packages/cow-sdk/src/common/utils/config.ts similarity index 100% rename from src/common/utils/config.ts rename to packages/cow-sdk/src/common/utils/config.ts diff --git a/src/common/utils/log.ts b/packages/cow-sdk/src/common/utils/log.ts similarity index 100% rename from src/common/utils/log.ts rename to packages/cow-sdk/src/common/utils/log.ts diff --git a/src/common/utils/math.ts b/packages/cow-sdk/src/common/utils/math.ts similarity index 100% rename from src/common/utils/math.ts rename to packages/cow-sdk/src/common/utils/math.ts diff --git a/src/common/utils/serialize.ts b/packages/cow-sdk/src/common/utils/serialize.ts similarity index 100% rename from src/common/utils/serialize.ts rename to packages/cow-sdk/src/common/utils/serialize.ts diff --git a/src/common/utils/wallet.ts b/packages/cow-sdk/src/common/utils/wallet.ts similarity index 100% rename from src/common/utils/wallet.ts rename to packages/cow-sdk/src/common/utils/wallet.ts diff --git a/src/composable/ConditionalOrder.spec.ts b/packages/cow-sdk/src/composable/ConditionalOrder.spec.ts similarity index 100% rename from src/composable/ConditionalOrder.spec.ts rename to packages/cow-sdk/src/composable/ConditionalOrder.spec.ts diff --git a/src/composable/ConditionalOrder.ts b/packages/cow-sdk/src/composable/ConditionalOrder.ts similarity index 100% rename from src/composable/ConditionalOrder.ts rename to packages/cow-sdk/src/composable/ConditionalOrder.ts diff --git a/src/composable/ConditionalOrderFactory.ts b/packages/cow-sdk/src/composable/ConditionalOrderFactory.ts similarity index 100% rename from src/composable/ConditionalOrderFactory.ts rename to packages/cow-sdk/src/composable/ConditionalOrderFactory.ts diff --git a/src/composable/Multiplexer.spec.ts b/packages/cow-sdk/src/composable/Multiplexer.spec.ts similarity index 100% rename from src/composable/Multiplexer.spec.ts rename to packages/cow-sdk/src/composable/Multiplexer.spec.ts diff --git a/src/composable/Multiplexer.ts b/packages/cow-sdk/src/composable/Multiplexer.ts similarity index 100% rename from src/composable/Multiplexer.ts rename to packages/cow-sdk/src/composable/Multiplexer.ts diff --git a/src/composable/contracts.ts b/packages/cow-sdk/src/composable/contracts.ts similarity index 100% rename from src/composable/contracts.ts rename to packages/cow-sdk/src/composable/contracts.ts diff --git a/src/composable/generated/ComposableCoW.ts b/packages/cow-sdk/src/composable/generated/ComposableCoW.ts similarity index 100% rename from src/composable/generated/ComposableCoW.ts rename to packages/cow-sdk/src/composable/generated/ComposableCoW.ts diff --git a/src/composable/generated/ExtensibleFallbackHandler.ts b/packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts similarity index 100% rename from src/composable/generated/ExtensibleFallbackHandler.ts rename to packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts diff --git a/src/composable/generated/TWAP.ts b/packages/cow-sdk/src/composable/generated/TWAP.ts similarity index 100% rename from src/composable/generated/TWAP.ts rename to packages/cow-sdk/src/composable/generated/TWAP.ts diff --git a/src/composable/generated/common.ts b/packages/cow-sdk/src/composable/generated/common.ts similarity index 100% rename from src/composable/generated/common.ts rename to packages/cow-sdk/src/composable/generated/common.ts diff --git a/src/composable/generated/factories/ComposableCoW__factory.ts b/packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts similarity index 100% rename from src/composable/generated/factories/ComposableCoW__factory.ts rename to packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts diff --git a/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts b/packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts similarity index 100% rename from src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts rename to packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts diff --git a/src/composable/generated/factories/TWAP__factory.ts b/packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts similarity index 100% rename from src/composable/generated/factories/TWAP__factory.ts rename to packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts diff --git a/src/composable/generated/factories/index.ts b/packages/cow-sdk/src/composable/generated/factories/index.ts similarity index 100% rename from src/composable/generated/factories/index.ts rename to packages/cow-sdk/src/composable/generated/factories/index.ts diff --git a/src/composable/generated/index.ts b/packages/cow-sdk/src/composable/generated/index.ts similarity index 100% rename from src/composable/generated/index.ts rename to packages/cow-sdk/src/composable/generated/index.ts diff --git a/src/composable/index.ts b/packages/cow-sdk/src/composable/index.ts similarity index 100% rename from src/composable/index.ts rename to packages/cow-sdk/src/composable/index.ts diff --git a/src/composable/orderTypes/Twap.spec.ts b/packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts similarity index 100% rename from src/composable/orderTypes/Twap.spec.ts rename to packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts diff --git a/src/composable/orderTypes/Twap.ts b/packages/cow-sdk/src/composable/orderTypes/Twap.ts similarity index 100% rename from src/composable/orderTypes/Twap.ts rename to packages/cow-sdk/src/composable/orderTypes/Twap.ts diff --git a/src/composable/orderTypes/index.ts b/packages/cow-sdk/src/composable/orderTypes/index.ts similarity index 100% rename from src/composable/orderTypes/index.ts rename to packages/cow-sdk/src/composable/orderTypes/index.ts diff --git a/src/composable/orderTypes/test/TestConditionalOrder.ts b/packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts similarity index 100% rename from src/composable/orderTypes/test/TestConditionalOrder.ts rename to packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts diff --git a/src/composable/types.ts b/packages/cow-sdk/src/composable/types.ts similarity index 100% rename from src/composable/types.ts rename to packages/cow-sdk/src/composable/types.ts diff --git a/src/composable/utils.spec.ts b/packages/cow-sdk/src/composable/utils.spec.ts similarity index 100% rename from src/composable/utils.spec.ts rename to packages/cow-sdk/src/composable/utils.spec.ts diff --git a/src/composable/utils.ts b/packages/cow-sdk/src/composable/utils.ts similarity index 100% rename from src/composable/utils.ts rename to packages/cow-sdk/src/composable/utils.ts diff --git a/src/cow-shed/CowShedSdk.test.ts b/packages/cow-sdk/src/cow-shed/CowShedSdk.test.ts similarity index 100% rename from src/cow-shed/CowShedSdk.test.ts rename to packages/cow-sdk/src/cow-shed/CowShedSdk.test.ts diff --git a/src/cow-shed/CowShedSdk.ts b/packages/cow-sdk/src/cow-shed/CowShedSdk.ts similarity index 100% rename from src/cow-shed/CowShedSdk.ts rename to packages/cow-sdk/src/cow-shed/CowShedSdk.ts diff --git a/src/cow-shed/README.md b/packages/cow-sdk/src/cow-shed/README.md similarity index 100% rename from src/cow-shed/README.md rename to packages/cow-sdk/src/cow-shed/README.md diff --git a/src/cow-shed/contracts/CoWShedHooks.spec.ts b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts similarity index 100% rename from src/cow-shed/contracts/CoWShedHooks.spec.ts rename to packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts diff --git a/src/cow-shed/contracts/CoWShedHooks.ts b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts similarity index 100% rename from src/cow-shed/contracts/CoWShedHooks.ts rename to packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts diff --git a/src/cow-shed/contracts/utils.ts b/packages/cow-sdk/src/cow-shed/contracts/utils.ts similarity index 100% rename from src/cow-shed/contracts/utils.ts rename to packages/cow-sdk/src/cow-shed/contracts/utils.ts diff --git a/src/cow-shed/index.ts b/packages/cow-sdk/src/cow-shed/index.ts similarity index 100% rename from src/cow-shed/index.ts rename to packages/cow-sdk/src/cow-shed/index.ts diff --git a/src/cow-shed/types.ts b/packages/cow-sdk/src/cow-shed/types.ts similarity index 100% rename from src/cow-shed/types.ts rename to packages/cow-sdk/src/cow-shed/types.ts diff --git a/src/hooks/utils.ts b/packages/cow-sdk/src/hooks/utils.ts similarity index 100% rename from src/hooks/utils.ts rename to packages/cow-sdk/src/hooks/utils.ts diff --git a/src/index.ts b/packages/cow-sdk/src/index.ts similarity index 100% rename from src/index.ts rename to packages/cow-sdk/src/index.ts diff --git a/src/order-book/__mock__/api.ts b/packages/cow-sdk/src/order-book/__mock__/api.ts similarity index 100% rename from src/order-book/__mock__/api.ts rename to packages/cow-sdk/src/order-book/__mock__/api.ts diff --git a/src/order-book/api.spec.ts b/packages/cow-sdk/src/order-book/api.spec.ts similarity index 100% rename from src/order-book/api.spec.ts rename to packages/cow-sdk/src/order-book/api.spec.ts diff --git a/src/order-book/api.ts b/packages/cow-sdk/src/order-book/api.ts similarity index 100% rename from src/order-book/api.ts rename to packages/cow-sdk/src/order-book/api.ts diff --git a/src/order-book/generated/index.ts b/packages/cow-sdk/src/order-book/generated/index.ts similarity index 100% rename from src/order-book/generated/index.ts rename to packages/cow-sdk/src/order-book/generated/index.ts diff --git a/src/order-book/generated/models/Address.ts b/packages/cow-sdk/src/order-book/generated/models/Address.ts similarity index 100% rename from src/order-book/generated/models/Address.ts rename to packages/cow-sdk/src/order-book/generated/models/Address.ts diff --git a/src/order-book/generated/models/AppData.ts b/packages/cow-sdk/src/order-book/generated/models/AppData.ts similarity index 100% rename from src/order-book/generated/models/AppData.ts rename to packages/cow-sdk/src/order-book/generated/models/AppData.ts diff --git a/src/order-book/generated/models/AppDataHash.ts b/packages/cow-sdk/src/order-book/generated/models/AppDataHash.ts similarity index 100% rename from src/order-book/generated/models/AppDataHash.ts rename to packages/cow-sdk/src/order-book/generated/models/AppDataHash.ts diff --git a/src/order-book/generated/models/AppDataObject.ts b/packages/cow-sdk/src/order-book/generated/models/AppDataObject.ts similarity index 100% rename from src/order-book/generated/models/AppDataObject.ts rename to packages/cow-sdk/src/order-book/generated/models/AppDataObject.ts diff --git a/src/order-book/generated/models/Auction.ts b/packages/cow-sdk/src/order-book/generated/models/Auction.ts similarity index 100% rename from src/order-book/generated/models/Auction.ts rename to packages/cow-sdk/src/order-book/generated/models/Auction.ts diff --git a/src/order-book/generated/models/AuctionOrder.ts b/packages/cow-sdk/src/order-book/generated/models/AuctionOrder.ts similarity index 100% rename from src/order-book/generated/models/AuctionOrder.ts rename to packages/cow-sdk/src/order-book/generated/models/AuctionOrder.ts diff --git a/src/order-book/generated/models/AuctionPrices.ts b/packages/cow-sdk/src/order-book/generated/models/AuctionPrices.ts similarity index 100% rename from src/order-book/generated/models/AuctionPrices.ts rename to packages/cow-sdk/src/order-book/generated/models/AuctionPrices.ts diff --git a/src/order-book/generated/models/BigUint.ts b/packages/cow-sdk/src/order-book/generated/models/BigUint.ts similarity index 100% rename from src/order-book/generated/models/BigUint.ts rename to packages/cow-sdk/src/order-book/generated/models/BigUint.ts diff --git a/src/order-book/generated/models/BuyTokenDestination.ts b/packages/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts similarity index 100% rename from src/order-book/generated/models/BuyTokenDestination.ts rename to packages/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts diff --git a/src/order-book/generated/models/CallData.ts b/packages/cow-sdk/src/order-book/generated/models/CallData.ts similarity index 100% rename from src/order-book/generated/models/CallData.ts rename to packages/cow-sdk/src/order-book/generated/models/CallData.ts diff --git a/src/order-book/generated/models/CompetitionAuction.ts b/packages/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts similarity index 100% rename from src/order-book/generated/models/CompetitionAuction.ts rename to packages/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts diff --git a/src/order-book/generated/models/CompetitionOrderStatus.ts b/packages/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts similarity index 100% rename from src/order-book/generated/models/CompetitionOrderStatus.ts rename to packages/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts diff --git a/src/order-book/generated/models/EcdsaSignature.ts b/packages/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts similarity index 100% rename from src/order-book/generated/models/EcdsaSignature.ts rename to packages/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts diff --git a/src/order-book/generated/models/EcdsaSigningScheme.ts b/packages/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts similarity index 100% rename from src/order-book/generated/models/EcdsaSigningScheme.ts rename to packages/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts diff --git a/src/order-book/generated/models/EthflowData.ts b/packages/cow-sdk/src/order-book/generated/models/EthflowData.ts similarity index 100% rename from src/order-book/generated/models/EthflowData.ts rename to packages/cow-sdk/src/order-book/generated/models/EthflowData.ts diff --git a/src/order-book/generated/models/ExecutedAmounts.ts b/packages/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts similarity index 100% rename from src/order-book/generated/models/ExecutedAmounts.ts rename to packages/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts diff --git a/src/order-book/generated/models/ExecutedProtocolFee.ts b/packages/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts similarity index 100% rename from src/order-book/generated/models/ExecutedProtocolFee.ts rename to packages/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts diff --git a/src/order-book/generated/models/FeePolicy.ts b/packages/cow-sdk/src/order-book/generated/models/FeePolicy.ts similarity index 100% rename from src/order-book/generated/models/FeePolicy.ts rename to packages/cow-sdk/src/order-book/generated/models/FeePolicy.ts diff --git a/src/order-book/generated/models/InteractionData.ts b/packages/cow-sdk/src/order-book/generated/models/InteractionData.ts similarity index 100% rename from src/order-book/generated/models/InteractionData.ts rename to packages/cow-sdk/src/order-book/generated/models/InteractionData.ts diff --git a/src/order-book/generated/models/NativePriceResponse.ts b/packages/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts similarity index 100% rename from src/order-book/generated/models/NativePriceResponse.ts rename to packages/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts diff --git a/src/order-book/generated/models/OnchainOrderData.ts b/packages/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts similarity index 100% rename from src/order-book/generated/models/OnchainOrderData.ts rename to packages/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts diff --git a/src/order-book/generated/models/Order.ts b/packages/cow-sdk/src/order-book/generated/models/Order.ts similarity index 100% rename from src/order-book/generated/models/Order.ts rename to packages/cow-sdk/src/order-book/generated/models/Order.ts diff --git a/src/order-book/generated/models/OrderCancellation.ts b/packages/cow-sdk/src/order-book/generated/models/OrderCancellation.ts similarity index 100% rename from src/order-book/generated/models/OrderCancellation.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderCancellation.ts diff --git a/src/order-book/generated/models/OrderCancellationError.ts b/packages/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts similarity index 100% rename from src/order-book/generated/models/OrderCancellationError.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts diff --git a/src/order-book/generated/models/OrderCancellations.ts b/packages/cow-sdk/src/order-book/generated/models/OrderCancellations.ts similarity index 100% rename from src/order-book/generated/models/OrderCancellations.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderCancellations.ts diff --git a/src/order-book/generated/models/OrderClass.ts b/packages/cow-sdk/src/order-book/generated/models/OrderClass.ts similarity index 100% rename from src/order-book/generated/models/OrderClass.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderClass.ts diff --git a/src/order-book/generated/models/OrderCreation.ts b/packages/cow-sdk/src/order-book/generated/models/OrderCreation.ts similarity index 100% rename from src/order-book/generated/models/OrderCreation.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderCreation.ts diff --git a/src/order-book/generated/models/OrderKind.ts b/packages/cow-sdk/src/order-book/generated/models/OrderKind.ts similarity index 100% rename from src/order-book/generated/models/OrderKind.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderKind.ts diff --git a/src/order-book/generated/models/OrderMetaData.ts b/packages/cow-sdk/src/order-book/generated/models/OrderMetaData.ts similarity index 100% rename from src/order-book/generated/models/OrderMetaData.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderMetaData.ts diff --git a/src/order-book/generated/models/OrderParameters.ts b/packages/cow-sdk/src/order-book/generated/models/OrderParameters.ts similarity index 100% rename from src/order-book/generated/models/OrderParameters.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderParameters.ts diff --git a/src/order-book/generated/models/OrderPostError.ts b/packages/cow-sdk/src/order-book/generated/models/OrderPostError.ts similarity index 100% rename from src/order-book/generated/models/OrderPostError.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderPostError.ts diff --git a/src/order-book/generated/models/OrderQuoteRequest.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteRequest.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts diff --git a/src/order-book/generated/models/OrderQuoteResponse.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteResponse.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts diff --git a/src/order-book/generated/models/OrderQuoteSide.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteSide.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts diff --git a/src/order-book/generated/models/OrderQuoteSideKindBuy.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteSideKindBuy.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts diff --git a/src/order-book/generated/models/OrderQuoteSideKindSell.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteSideKindSell.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts diff --git a/src/order-book/generated/models/OrderQuoteValidity.ts b/packages/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts similarity index 100% rename from src/order-book/generated/models/OrderQuoteValidity.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts diff --git a/src/order-book/generated/models/OrderStatus.ts b/packages/cow-sdk/src/order-book/generated/models/OrderStatus.ts similarity index 100% rename from src/order-book/generated/models/OrderStatus.ts rename to packages/cow-sdk/src/order-book/generated/models/OrderStatus.ts diff --git a/src/order-book/generated/models/PreSignature.ts b/packages/cow-sdk/src/order-book/generated/models/PreSignature.ts similarity index 100% rename from src/order-book/generated/models/PreSignature.ts rename to packages/cow-sdk/src/order-book/generated/models/PreSignature.ts diff --git a/src/order-book/generated/models/PriceEstimationError.ts b/packages/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts similarity index 100% rename from src/order-book/generated/models/PriceEstimationError.ts rename to packages/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts diff --git a/src/order-book/generated/models/PriceImprovement.ts b/packages/cow-sdk/src/order-book/generated/models/PriceImprovement.ts similarity index 100% rename from src/order-book/generated/models/PriceImprovement.ts rename to packages/cow-sdk/src/order-book/generated/models/PriceImprovement.ts diff --git a/src/order-book/generated/models/PriceQuality.ts b/packages/cow-sdk/src/order-book/generated/models/PriceQuality.ts similarity index 100% rename from src/order-book/generated/models/PriceQuality.ts rename to packages/cow-sdk/src/order-book/generated/models/PriceQuality.ts diff --git a/src/order-book/generated/models/Quote.ts b/packages/cow-sdk/src/order-book/generated/models/Quote.ts similarity index 100% rename from src/order-book/generated/models/Quote.ts rename to packages/cow-sdk/src/order-book/generated/models/Quote.ts diff --git a/src/order-book/generated/models/SellTokenSource.ts b/packages/cow-sdk/src/order-book/generated/models/SellTokenSource.ts similarity index 100% rename from src/order-book/generated/models/SellTokenSource.ts rename to packages/cow-sdk/src/order-book/generated/models/SellTokenSource.ts diff --git a/src/order-book/generated/models/Signature.ts b/packages/cow-sdk/src/order-book/generated/models/Signature.ts similarity index 100% rename from src/order-book/generated/models/Signature.ts rename to packages/cow-sdk/src/order-book/generated/models/Signature.ts diff --git a/src/order-book/generated/models/SigningScheme.ts b/packages/cow-sdk/src/order-book/generated/models/SigningScheme.ts similarity index 100% rename from src/order-book/generated/models/SigningScheme.ts rename to packages/cow-sdk/src/order-book/generated/models/SigningScheme.ts diff --git a/src/order-book/generated/models/SolverCompetitionResponse.ts b/packages/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts similarity index 100% rename from src/order-book/generated/models/SolverCompetitionResponse.ts rename to packages/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts diff --git a/src/order-book/generated/models/SolverSettlement.ts b/packages/cow-sdk/src/order-book/generated/models/SolverSettlement.ts similarity index 100% rename from src/order-book/generated/models/SolverSettlement.ts rename to packages/cow-sdk/src/order-book/generated/models/SolverSettlement.ts diff --git a/src/order-book/generated/models/Surplus.ts b/packages/cow-sdk/src/order-book/generated/models/Surplus.ts similarity index 100% rename from src/order-book/generated/models/Surplus.ts rename to packages/cow-sdk/src/order-book/generated/models/Surplus.ts diff --git a/src/order-book/generated/models/TokenAmount.ts b/packages/cow-sdk/src/order-book/generated/models/TokenAmount.ts similarity index 100% rename from src/order-book/generated/models/TokenAmount.ts rename to packages/cow-sdk/src/order-book/generated/models/TokenAmount.ts diff --git a/src/order-book/generated/models/TotalSurplus.ts b/packages/cow-sdk/src/order-book/generated/models/TotalSurplus.ts similarity index 100% rename from src/order-book/generated/models/TotalSurplus.ts rename to packages/cow-sdk/src/order-book/generated/models/TotalSurplus.ts diff --git a/src/order-book/generated/models/Trade.ts b/packages/cow-sdk/src/order-book/generated/models/Trade.ts similarity index 100% rename from src/order-book/generated/models/Trade.ts rename to packages/cow-sdk/src/order-book/generated/models/Trade.ts diff --git a/src/order-book/generated/models/TransactionHash.ts b/packages/cow-sdk/src/order-book/generated/models/TransactionHash.ts similarity index 100% rename from src/order-book/generated/models/TransactionHash.ts rename to packages/cow-sdk/src/order-book/generated/models/TransactionHash.ts diff --git a/src/order-book/generated/models/UID.ts b/packages/cow-sdk/src/order-book/generated/models/UID.ts similarity index 100% rename from src/order-book/generated/models/UID.ts rename to packages/cow-sdk/src/order-book/generated/models/UID.ts diff --git a/src/order-book/generated/models/Volume.ts b/packages/cow-sdk/src/order-book/generated/models/Volume.ts similarity index 100% rename from src/order-book/generated/models/Volume.ts rename to packages/cow-sdk/src/order-book/generated/models/Volume.ts diff --git a/src/order-book/index.ts b/packages/cow-sdk/src/order-book/index.ts similarity index 100% rename from src/order-book/index.ts rename to packages/cow-sdk/src/order-book/index.ts diff --git a/src/order-book/mock.ts b/packages/cow-sdk/src/order-book/mock.ts similarity index 100% rename from src/order-book/mock.ts rename to packages/cow-sdk/src/order-book/mock.ts diff --git a/src/order-book/quoteAmountsAndCostsUtils.test.ts b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts similarity index 100% rename from src/order-book/quoteAmountsAndCostsUtils.test.ts rename to packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts diff --git a/src/order-book/quoteAmountsAndCostsUtils.ts b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts similarity index 100% rename from src/order-book/quoteAmountsAndCostsUtils.ts rename to packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts diff --git a/src/order-book/request.test.ts b/packages/cow-sdk/src/order-book/request.test.ts similarity index 100% rename from src/order-book/request.test.ts rename to packages/cow-sdk/src/order-book/request.test.ts diff --git a/src/order-book/request.ts b/packages/cow-sdk/src/order-book/request.ts similarity index 100% rename from src/order-book/request.ts rename to packages/cow-sdk/src/order-book/request.ts diff --git a/src/order-book/transformOrder.test.ts b/packages/cow-sdk/src/order-book/transformOrder.test.ts similarity index 100% rename from src/order-book/transformOrder.test.ts rename to packages/cow-sdk/src/order-book/transformOrder.test.ts diff --git a/src/order-book/transformOrder.ts b/packages/cow-sdk/src/order-book/transformOrder.ts similarity index 100% rename from src/order-book/transformOrder.ts rename to packages/cow-sdk/src/order-book/transformOrder.ts diff --git a/src/order-book/types.ts b/packages/cow-sdk/src/order-book/types.ts similarity index 100% rename from src/order-book/types.ts rename to packages/cow-sdk/src/order-book/types.ts diff --git a/src/order-signing/index.ts b/packages/cow-sdk/src/order-signing/index.ts similarity index 100% rename from src/order-signing/index.ts rename to packages/cow-sdk/src/order-signing/index.ts diff --git a/src/order-signing/orderSigningUtils.spec.ts b/packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts similarity index 100% rename from src/order-signing/orderSigningUtils.spec.ts rename to packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts diff --git a/src/order-signing/orderSigningUtils.ts b/packages/cow-sdk/src/order-signing/orderSigningUtils.ts similarity index 100% rename from src/order-signing/orderSigningUtils.ts rename to packages/cow-sdk/src/order-signing/orderSigningUtils.ts diff --git a/src/order-signing/types.ts b/packages/cow-sdk/src/order-signing/types.ts similarity index 100% rename from src/order-signing/types.ts rename to packages/cow-sdk/src/order-signing/types.ts diff --git a/src/order-signing/utils.ts b/packages/cow-sdk/src/order-signing/utils.ts similarity index 100% rename from src/order-signing/utils.ts rename to packages/cow-sdk/src/order-signing/utils.ts diff --git a/src/subgraph/api.spec.ts b/packages/cow-sdk/src/subgraph/api.spec.ts similarity index 100% rename from src/subgraph/api.spec.ts rename to packages/cow-sdk/src/subgraph/api.spec.ts diff --git a/src/subgraph/api.ts b/packages/cow-sdk/src/subgraph/api.ts similarity index 100% rename from src/subgraph/api.ts rename to packages/cow-sdk/src/subgraph/api.ts diff --git a/src/subgraph/graphql.ts b/packages/cow-sdk/src/subgraph/graphql.ts similarity index 100% rename from src/subgraph/graphql.ts rename to packages/cow-sdk/src/subgraph/graphql.ts diff --git a/src/subgraph/index.ts b/packages/cow-sdk/src/subgraph/index.ts similarity index 100% rename from src/subgraph/index.ts rename to packages/cow-sdk/src/subgraph/index.ts diff --git a/src/subgraph/queries.ts b/packages/cow-sdk/src/subgraph/queries.ts similarity index 100% rename from src/subgraph/queries.ts rename to packages/cow-sdk/src/subgraph/queries.ts diff --git a/src/test/utils.ts b/packages/cow-sdk/src/test/utils.ts similarity index 100% rename from src/test/utils.ts rename to packages/cow-sdk/src/test/utils.ts diff --git a/src/trading/README.md b/packages/cow-sdk/src/trading/README.md similarity index 100% rename from src/trading/README.md rename to packages/cow-sdk/src/trading/README.md diff --git a/src/trading/appDataUtils.test.ts b/packages/cow-sdk/src/trading/appDataUtils.test.ts similarity index 100% rename from src/trading/appDataUtils.test.ts rename to packages/cow-sdk/src/trading/appDataUtils.test.ts diff --git a/src/trading/appDataUtils.ts b/packages/cow-sdk/src/trading/appDataUtils.ts similarity index 100% rename from src/trading/appDataUtils.ts rename to packages/cow-sdk/src/trading/appDataUtils.ts diff --git a/src/trading/calculateUniqueOrderId.test.ts b/packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts similarity index 100% rename from src/trading/calculateUniqueOrderId.test.ts rename to packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts diff --git a/src/trading/calculateUniqueOrderId.ts b/packages/cow-sdk/src/trading/calculateUniqueOrderId.ts similarity index 100% rename from src/trading/calculateUniqueOrderId.ts rename to packages/cow-sdk/src/trading/calculateUniqueOrderId.ts diff --git a/src/trading/consts.ts b/packages/cow-sdk/src/trading/consts.ts similarity index 100% rename from src/trading/consts.ts rename to packages/cow-sdk/src/trading/consts.ts diff --git a/src/trading/getEthFlowTransaction.test.ts b/packages/cow-sdk/src/trading/getEthFlowTransaction.test.ts similarity index 100% rename from src/trading/getEthFlowTransaction.test.ts rename to packages/cow-sdk/src/trading/getEthFlowTransaction.test.ts diff --git a/src/trading/getEthFlowTransaction.ts b/packages/cow-sdk/src/trading/getEthFlowTransaction.ts similarity index 100% rename from src/trading/getEthFlowTransaction.ts rename to packages/cow-sdk/src/trading/getEthFlowTransaction.ts diff --git a/src/trading/getOrderToSign.test.ts b/packages/cow-sdk/src/trading/getOrderToSign.test.ts similarity index 100% rename from src/trading/getOrderToSign.test.ts rename to packages/cow-sdk/src/trading/getOrderToSign.test.ts diff --git a/src/trading/getOrderToSign.ts b/packages/cow-sdk/src/trading/getOrderToSign.ts similarity index 100% rename from src/trading/getOrderToSign.ts rename to packages/cow-sdk/src/trading/getOrderToSign.ts diff --git a/src/trading/getOrderTypedData.ts b/packages/cow-sdk/src/trading/getOrderTypedData.ts similarity index 100% rename from src/trading/getOrderTypedData.ts rename to packages/cow-sdk/src/trading/getOrderTypedData.ts diff --git a/src/trading/getPreSignTransaction.test.ts b/packages/cow-sdk/src/trading/getPreSignTransaction.test.ts similarity index 100% rename from src/trading/getPreSignTransaction.test.ts rename to packages/cow-sdk/src/trading/getPreSignTransaction.test.ts diff --git a/src/trading/getPreSignTransaction.ts b/packages/cow-sdk/src/trading/getPreSignTransaction.ts similarity index 100% rename from src/trading/getPreSignTransaction.ts rename to packages/cow-sdk/src/trading/getPreSignTransaction.ts diff --git a/src/trading/getQuote.test.ts b/packages/cow-sdk/src/trading/getQuote.test.ts similarity index 100% rename from src/trading/getQuote.test.ts rename to packages/cow-sdk/src/trading/getQuote.test.ts diff --git a/src/trading/getQuote.ts b/packages/cow-sdk/src/trading/getQuote.ts similarity index 100% rename from src/trading/getQuote.ts rename to packages/cow-sdk/src/trading/getQuote.ts diff --git a/src/trading/index.ts b/packages/cow-sdk/src/trading/index.ts similarity index 100% rename from src/trading/index.ts rename to packages/cow-sdk/src/trading/index.ts diff --git a/src/trading/postCoWProtocolTrade.test.ts b/packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts similarity index 100% rename from src/trading/postCoWProtocolTrade.test.ts rename to packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts diff --git a/src/trading/postCoWProtocolTrade.ts b/packages/cow-sdk/src/trading/postCoWProtocolTrade.ts similarity index 100% rename from src/trading/postCoWProtocolTrade.ts rename to packages/cow-sdk/src/trading/postCoWProtocolTrade.ts diff --git a/src/trading/postLimitOrder.test.ts b/packages/cow-sdk/src/trading/postLimitOrder.test.ts similarity index 100% rename from src/trading/postLimitOrder.test.ts rename to packages/cow-sdk/src/trading/postLimitOrder.test.ts diff --git a/src/trading/postLimitOrder.ts b/packages/cow-sdk/src/trading/postLimitOrder.ts similarity index 100% rename from src/trading/postLimitOrder.ts rename to packages/cow-sdk/src/trading/postLimitOrder.ts diff --git a/src/trading/postSellNativeCurrencyOrder.test.ts b/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.test.ts similarity index 100% rename from src/trading/postSellNativeCurrencyOrder.test.ts rename to packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.test.ts diff --git a/src/trading/postSellNativeCurrencyOrder.ts b/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts similarity index 100% rename from src/trading/postSellNativeCurrencyOrder.ts rename to packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts diff --git a/src/trading/postSwapOrder.test.ts b/packages/cow-sdk/src/trading/postSwapOrder.test.ts similarity index 100% rename from src/trading/postSwapOrder.test.ts rename to packages/cow-sdk/src/trading/postSwapOrder.test.ts diff --git a/src/trading/postSwapOrder.ts b/packages/cow-sdk/src/trading/postSwapOrder.ts similarity index 100% rename from src/trading/postSwapOrder.ts rename to packages/cow-sdk/src/trading/postSwapOrder.ts diff --git a/src/trading/suggestSlippageBps.ts b/packages/cow-sdk/src/trading/suggestSlippageBps.ts similarity index 100% rename from src/trading/suggestSlippageBps.ts rename to packages/cow-sdk/src/trading/suggestSlippageBps.ts diff --git a/src/trading/suggestSlippageFromFee.test.ts b/packages/cow-sdk/src/trading/suggestSlippageFromFee.test.ts similarity index 100% rename from src/trading/suggestSlippageFromFee.test.ts rename to packages/cow-sdk/src/trading/suggestSlippageFromFee.test.ts diff --git a/src/trading/suggestSlippageFromFee.ts b/packages/cow-sdk/src/trading/suggestSlippageFromFee.ts similarity index 100% rename from src/trading/suggestSlippageFromFee.ts rename to packages/cow-sdk/src/trading/suggestSlippageFromFee.ts diff --git a/src/trading/suggestSlippageFromVolume.test.ts b/packages/cow-sdk/src/trading/suggestSlippageFromVolume.test.ts similarity index 100% rename from src/trading/suggestSlippageFromVolume.test.ts rename to packages/cow-sdk/src/trading/suggestSlippageFromVolume.test.ts diff --git a/src/trading/suggestSlippageFromVolume.ts b/packages/cow-sdk/src/trading/suggestSlippageFromVolume.ts similarity index 100% rename from src/trading/suggestSlippageFromVolume.ts rename to packages/cow-sdk/src/trading/suggestSlippageFromVolume.ts diff --git a/src/trading/tradingSdk.test.ts b/packages/cow-sdk/src/trading/tradingSdk.test.ts similarity index 100% rename from src/trading/tradingSdk.test.ts rename to packages/cow-sdk/src/trading/tradingSdk.test.ts diff --git a/src/trading/tradingSdk.ts b/packages/cow-sdk/src/trading/tradingSdk.ts similarity index 100% rename from src/trading/tradingSdk.ts rename to packages/cow-sdk/src/trading/tradingSdk.ts diff --git a/src/trading/types.ts b/packages/cow-sdk/src/trading/types.ts similarity index 100% rename from src/trading/types.ts rename to packages/cow-sdk/src/trading/types.ts diff --git a/src/trading/utils/getPartnerFeeBps.ts b/packages/cow-sdk/src/trading/utils/getPartnerFeeBps.ts similarity index 100% rename from src/trading/utils/getPartnerFeeBps.ts rename to packages/cow-sdk/src/trading/utils/getPartnerFeeBps.ts diff --git a/src/trading/utils/misc.ts b/packages/cow-sdk/src/trading/utils/misc.ts similarity index 100% rename from src/trading/utils/misc.ts rename to packages/cow-sdk/src/trading/utils/misc.ts diff --git a/src/trading/utils/slippage.test.ts b/packages/cow-sdk/src/trading/utils/slippage.test.ts similarity index 100% rename from src/trading/utils/slippage.test.ts rename to packages/cow-sdk/src/trading/utils/slippage.test.ts diff --git a/src/trading/utils/slippage.ts b/packages/cow-sdk/src/trading/utils/slippage.ts similarity index 100% rename from src/trading/utils/slippage.ts rename to packages/cow-sdk/src/trading/utils/slippage.ts diff --git a/src/utils.ts b/packages/cow-sdk/src/utils.ts similarity index 100% rename from src/utils.ts rename to packages/cow-sdk/src/utils.ts diff --git a/src/weiroll/README.md b/packages/cow-sdk/src/weiroll/README.md similarity index 100% rename from src/weiroll/README.md rename to packages/cow-sdk/src/weiroll/README.md diff --git a/src/weiroll/index.test.ts b/packages/cow-sdk/src/weiroll/index.test.ts similarity index 100% rename from src/weiroll/index.test.ts rename to packages/cow-sdk/src/weiroll/index.test.ts diff --git a/src/weiroll/index.ts b/packages/cow-sdk/src/weiroll/index.ts similarity index 100% rename from src/weiroll/index.ts rename to packages/cow-sdk/src/weiroll/index.ts diff --git a/tsconfig.json b/packages/cow-sdk/tsconfig.json similarity index 100% rename from tsconfig.json rename to packages/cow-sdk/tsconfig.json diff --git a/workflows/publish.sh b/packages/cow-sdk/workflows/publish.sh similarity index 100% rename from workflows/publish.sh rename to packages/cow-sdk/workflows/publish.sh From b54db28f4ece4161523043743d347cf040804f1c Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Fri, 23 May 2025 17:23:05 -0300 Subject: [PATCH 03/33] feat: init monorepo structure with Turborepo --- .gitignore | 12 ++++--- package.json | 16 ++++++++++ pnpm-lock.yaml | 76 +++++++++++++++++++++++++++++++++++++++++++-- pnpm-workspace.yaml | 2 ++ turbo.json | 22 +++++++++++++ 5 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 package.json create mode 100644 pnpm-workspace.yaml create mode 100644 turbo.json diff --git a/.gitignore b/.gitignore index a26d3e63e..738946377 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,15 @@ +# Turborepo +.turbo + +# Dependencies node_modules +.pnp + dist coverage .coveralls.yml jest.results.json .idea *.iml -.yalc -yalc.lock -src/common/generated -docs/typedoc/ \ No newline at end of file +packages/cow-sdk/src/common/generated +packages/cow-sdk/docs/typedoc/ \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 000000000..7e54bfd77 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "cow-monorepo", + "private": true, + "scripts": { + "build": "turbo run build", + "dev": "turbo run dev", + "lint": "turbo run lint", + "test": "turbo run test", + "format": "prettier --write \"**/*.{ts,tsx,md}\"" + }, + "devDependencies": { + "prettier": "^3.5.3", + "turbo": "latest" + }, + "packageManager": "pnpm@10.8.0" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4db8f99e9..c9b792058 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,6 +7,15 @@ settings: importers: .: + devDependencies: + prettier: + specifier: ^3.5.3 + version: 3.5.3 + turbo: + specifier: latest + version: 2.5.3 + + packages/cow-sdk: dependencies: '@cowprotocol/app-data': specifier: ^3.1.0 @@ -5335,6 +5344,40 @@ packages: tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + turbo-darwin-64@2.5.3: + resolution: {integrity: sha512-YSItEVBUIvAGPUDpAB9etEmSqZI3T6BHrkBkeSErvICXn3dfqXUfeLx35LfptLDEbrzFUdwYFNmt8QXOwe9yaw==} + cpu: [x64] + os: [darwin] + + turbo-darwin-arm64@2.5.3: + resolution: {integrity: sha512-5PefrwHd42UiZX7YA9m1LPW6x9YJBDErXmsegCkVp+GjmWrADfEOxpFrGQNonH3ZMj77WZB2PVE5Aw3gA+IOhg==} + cpu: [arm64] + os: [darwin] + + turbo-linux-64@2.5.3: + resolution: {integrity: sha512-M9xigFgawn5ofTmRzvjjLj3Lqc05O8VHKuOlWNUlnHPUltFquyEeSkpQNkE/vpPdOR14AzxqHbhhxtfS4qvb1w==} + cpu: [x64] + os: [linux] + + turbo-linux-arm64@2.5.3: + resolution: {integrity: sha512-auJRbYZ8SGJVqvzTikpg1bsRAsiI9Tk0/SDkA5Xgg0GdiHDH/BOzv1ZjDE2mjmlrO/obr19Dw+39OlMhwLffrw==} + cpu: [arm64] + os: [linux] + + turbo-windows-64@2.5.3: + resolution: {integrity: sha512-arLQYohuHtIEKkmQSCU9vtrKUg+/1TTstWB9VYRSsz+khvg81eX6LYHtXJfH/dK7Ho6ck+JaEh5G+QrE1jEmCQ==} + cpu: [x64] + os: [win32] + + turbo-windows-arm64@2.5.3: + resolution: {integrity: sha512-3JPn66HAynJ0gtr6H+hjY4VHpu1RPKcEwGATvGUTmLmYSYBQieVlnGDRMMoYN066YfyPqnNGCfhYbXfH92Cm0g==} + cpu: [arm64] + os: [win32] + + turbo@2.5.3: + resolution: {integrity: sha512-iHuaNcq5GZZnr3XDZNuu2LSyCzAOPwDuo5Qt+q64DfsTP1i3T2bKfxJhni2ZQxsvAoxRbuUK5QetJki4qc5aYA==} + hasBin: true + tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} @@ -7227,7 +7270,7 @@ snapshots: '@graphql-tools/optimize@2.0.0(graphql@16.11.0)': dependencies: graphql: 16.11.0 - tslib: 2.6.3 + tslib: 2.8.1 '@graphql-tools/prisma-loader@8.0.17(@types/node@22.15.21)(graphql@16.11.0)': dependencies: @@ -7263,7 +7306,7 @@ snapshots: '@ardatan/relay-compiler': 12.0.3(graphql@16.11.0) '@graphql-tools/utils': 10.8.6(graphql@16.11.0) graphql: 16.11.0 - tslib: 2.6.3 + tslib: 2.8.1 transitivePeerDependencies: - encoding @@ -9545,7 +9588,7 @@ snapshots: graphql-tag@2.12.6(graphql@16.11.0): dependencies: graphql: 16.11.0 - tslib: 2.6.3 + tslib: 2.8.1 graphql-ws@6.0.5(graphql@16.11.0)(ws@8.18.2): dependencies: @@ -12220,6 +12263,33 @@ snapshots: dependencies: safe-buffer: 5.2.1 + turbo-darwin-64@2.5.3: + optional: true + + turbo-darwin-arm64@2.5.3: + optional: true + + turbo-linux-64@2.5.3: + optional: true + + turbo-linux-arm64@2.5.3: + optional: true + + turbo-windows-64@2.5.3: + optional: true + + turbo-windows-arm64@2.5.3: + optional: true + + turbo@2.5.3: + optionalDependencies: + turbo-darwin-64: 2.5.3 + turbo-darwin-arm64: 2.5.3 + turbo-linux-64: 2.5.3 + turbo-linux-arm64: 2.5.3 + turbo-windows-64: 2.5.3 + turbo-windows-arm64: 2.5.3 + tweetnacl@0.14.5: {} type-check@0.4.0: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..18ec407ef --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - 'packages/*' diff --git a/turbo.json b/turbo.json new file mode 100644 index 000000000..46ae1d671 --- /dev/null +++ b/turbo.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://turbo.build/schema.json", + "globalDependencies": ["**/.env.*local"], + "tasks": { + "build": { + "dependsOn": ["^build"], + "outputs": ["dist/**"] + }, + "lint": { + "outputs": [] + }, + "test": { + "dependsOn": ["build"], + "outputs": ["coverage/**"], + "inputs": ["src/**/*.tsx", "src/**/*.ts", "test/**/*.ts", "test/**/*.tsx"] + }, + "dev": { + "cache": false, + "persistent": true + } + } +} From 7c5d53171a14a91d18c30b143643115a5b2e02e5 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Fri, 23 May 2025 17:26:01 -0300 Subject: [PATCH 04/33] chore: format codebase with pnpm script --- packages/cow-sdk/README.md | 4 +- .../examples/cra/src/hooks/useWeb3Info.ts | 2 +- packages/cow-sdk/examples/cra/src/index.tsx | 2 +- .../cra/src/pages/cowShedHook/index.tsx | 2 +- .../cra/src/pages/getOrders/index.tsx | 2 +- .../examples/cra/src/pages/getQuote/index.tsx | 2 +- .../cra/src/pages/getTrades/index.tsx | 2 +- .../cra/src/pages/quickStart/index.tsx | 2 +- .../cra/src/pages/sendOrder/index.tsx | 2 +- .../src/pages/sendOrderCancellation/index.tsx | 2 +- .../cra/src/pages/signOrder/index.tsx | 2 +- .../src/pages/signOrderCancellation/index.tsx | 2 +- .../src/pages/smartContractWallet/index.tsx | 62 +- .../smartContractWallet/useSafeSdkAndKit.ts | 16 +- .../cow-sdk/examples/vanilla/src/index.ts | 4 +- .../cow-sdk/examples/vanilla/src/tokens.ts | 6 +- .../src/bridging/BridgingSdk/BridgingSdk.ts | 2 +- .../BridgingSdk/getCrossChainOrder.ts | 2 +- .../providers/across/AcrossApi.test.ts | 10 +- .../bridging/providers/across/AcrossApi.ts | 4 +- .../across/AcrossBridgeProvider.test.ts | 4 +- .../providers/across/AcrossBridgeProvider.ts | 2 +- .../bridging/providers/across/const/tokens.ts | 2 +- .../across/createAcrossDepositCall.ts | 8 +- .../src/bridging/providers/across/util.ts | 6 +- packages/cow-sdk/src/bridging/types.ts | 2 +- packages/cow-sdk/src/chains/const/index.ts | 2 +- packages/cow-sdk/src/common/utils/config.ts | 2 +- .../src/composable/Multiplexer.spec.ts | 2 +- .../src/composable/generated/ComposableCoW.ts | 725 +-- .../generated/ExtensibleFallbackHandler.ts | 755 +-- .../cow-sdk/src/composable/generated/TWAP.ts | 276 +- .../src/composable/generated/common.ts | 46 +- .../factories/ComposableCoW__factory.ts | 631 ++- .../ExtensibleFallbackHandler__factory.ts | 500 +- .../generated/factories/TWAP__factory.ts | 352 +- .../composable/generated/factories/index.ts | 6 +- .../cow-sdk/src/composable/generated/index.ts | 14 +- .../src/composable/orderTypes/Twap.spec.ts | 26 +- .../orderTypes/test/TestConditionalOrder.ts | 2 +- packages/cow-sdk/src/cow-shed/README.md | 9 +- .../cow-shed/contracts/CoWShedHooks.spec.ts | 2 +- .../src/cow-shed/contracts/CoWShedHooks.ts | 13 +- packages/cow-sdk/src/order-book/api.ts | 33 +- .../quoteAmountsAndCostsUtils.test.ts | 4 +- .../order-book/quoteAmountsAndCostsUtils.ts | 2 +- packages/cow-sdk/src/order-book/request.ts | 7 +- .../order-signing/orderSigningUtils.spec.ts | 2 +- .../src/order-signing/orderSigningUtils.ts | 6 +- packages/cow-sdk/src/subgraph/api.spec.ts | 12 +- packages/cow-sdk/src/subgraph/api.ts | 6 +- packages/cow-sdk/src/subgraph/graphql.ts | 5021 ++++++++--------- packages/cow-sdk/src/trading/README.md | 149 +- packages/cow-sdk/src/trading/appDataUtils.ts | 10 +- .../trading/calculateUniqueOrderId.test.ts | 2 +- .../src/trading/calculateUniqueOrderId.ts | 4 +- .../src/trading/getOrderToSign.test.ts | 4 +- .../cow-sdk/src/trading/getOrderTypedData.ts | 2 +- packages/cow-sdk/src/trading/getQuote.test.ts | 12 +- .../src/trading/postCoWProtocolTrade.test.ts | 4 +- .../src/trading/postLimitOrder.test.ts | 2 +- .../cow-sdk/src/trading/postLimitOrder.ts | 4 +- .../trading/postSellNativeCurrencyOrder.ts | 4 +- packages/cow-sdk/src/trading/postSwapOrder.ts | 4 +- .../cow-sdk/src/trading/tradingSdk.test.ts | 4 +- packages/cow-sdk/src/trading/tradingSdk.ts | 20 +- packages/cow-sdk/src/weiroll/README.md | 17 +- 67 files changed, 4138 insertions(+), 4716 deletions(-) diff --git a/packages/cow-sdk/README.md b/packages/cow-sdk/README.md index 96086938f..c512b8ba6 100644 --- a/packages/cow-sdk/README.md +++ b/packages/cow-sdk/README.md @@ -27,6 +27,7 @@ yarn add @cowprotocol/cow-sdk CoW Protocol is intent based, decentralized trading protocol that allows users to trade ERC-20 tokens. The basic swap flow: + 1. 🔎 Get a quote (price) for a trade (_or define your own price with a limit order_) 2. ✍️ Sign the order 3. ✅ Post the order to the order-book @@ -50,7 +51,7 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } // Post the order @@ -64,7 +65,6 @@ This example is the simplest way to trade on CoW Protocol. You might want to use more advanced parameters like `receiver`, `partiallyFillable`, `validTo` and others. Check the [Trading SDK documentation](https://github.com/cowprotocol/cow-sdk/blob/main/src/trading/README.md) for more details. - ## Other utilities - `OrderBookApi` - provides the ability to retrieve orders and trades from the CoW Protocol order-book, as well as add and cancel them diff --git a/packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts b/packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts index c649430f3..b76305e4d 100644 --- a/packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts +++ b/packages/cow-sdk/examples/cra/src/hooks/useWeb3Info.ts @@ -4,7 +4,7 @@ import { Web3Provider } from '@ethersproject/providers' const provider = new Web3Provider(window.ethereum) // Connect to injected wallet -;(window.ethereum as {enable(): void})?.enable() +;(window.ethereum as { enable(): void })?.enable() export interface Web3Info { provider: Web3Provider diff --git a/packages/cow-sdk/examples/cra/src/index.tsx b/packages/cow-sdk/examples/cra/src/index.tsx index 989b2997c..a0b0a65b3 100644 --- a/packages/cow-sdk/examples/cra/src/index.tsx +++ b/packages/cow-sdk/examples/cra/src/index.tsx @@ -17,5 +17,5 @@ const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement) root.render( - + , ) diff --git a/packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx b/packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx index 7fcb91584..1e461ce08 100644 --- a/packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/cowShedHook/index.tsx @@ -59,7 +59,7 @@ export function GenerateCowShedHookCallDataPage() { setOutput('Error generating hook') } }, - [input] + [input], ) const defaultValue = { diff --git a/packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx index 1e76e30af..4ff9753c1 100644 --- a/packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/getOrders/index.tsx @@ -39,7 +39,7 @@ export function GetOrdersPage() { setOutput(error.toString()) }) }, - [input] + [input], ) const defaultValue = { diff --git a/packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx index 0590528d5..4bfa7239f 100644 --- a/packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/getQuote/index.tsx @@ -34,7 +34,7 @@ export function GetQuotePage() { setOutput(error.toString()) }) }, - [input] + [input], ) const defaultValue: OrderQuoteRequest = { diff --git a/packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx b/packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx index eb3aef533..051e6cbc1 100644 --- a/packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/getTrades/index.tsx @@ -35,7 +35,7 @@ export function GetTradesPage() { setOutput(error.toString()) }) }, - [input] + [input], ) const defaultValue = { diff --git a/packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx b/packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx index 75cb316c3..e18a1a510 100644 --- a/packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/quickStart/index.tsx @@ -68,7 +68,7 @@ export function QuickStartPage() { setOutput({ orderUid, order, trades, orderCancellationSigningResult, cancellationResult }) }, - [chainId, provider, account] + [chainId, provider, account], ) return ( diff --git a/packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx b/packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx index af3215796..a133a7612 100644 --- a/packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/sendOrder/index.tsx @@ -45,7 +45,7 @@ export function SignAndSendOrderPage() { setOutput(error.toString()) }) }, - [input, chainId, provider] + [input, chainId, provider], ) const defaultValue: UnsignedOrder = { diff --git a/packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx b/packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx index 84338e573..5d7f5a749 100644 --- a/packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/sendOrderCancellation/index.tsx @@ -32,7 +32,7 @@ export function SendOrderCancellationPage() { setOutput(error.toString()) }) }, - [input] + [input], ) const defaultValue: OrderCancellations = { diff --git a/packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx b/packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx index d1f58ac6c..3d3db1013 100644 --- a/packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/signOrder/index.tsx @@ -29,7 +29,7 @@ export function SignOrderPage() { setOutput(error.toString()) }) }, - [chainId, input, provider] + [chainId, input, provider], ) const defaultValue: UnsignedOrder = { diff --git a/packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx b/packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx index 92c3f4408..bdca297e6 100644 --- a/packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/signOrderCancellation/index.tsx @@ -30,7 +30,7 @@ export function SignOrderCancellationPage() { setOutput(error.toString()) }) }, - [provider, input, chainId] + [provider, input, chainId], ) const defaultValue = [ diff --git a/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx index 7fff875f4..cf7e680a5 100644 --- a/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx +++ b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/index.tsx @@ -1,4 +1,4 @@ -import {FormEvent, useCallback, useEffect, useMemo, useState} from 'react' +import { FormEvent, useCallback, useEffect, useMemo, useState } from 'react' import { Contract } from '@ethersproject/contracts' import { OrderBookApi, OrderCreation, OrderKind, SigningScheme, UnsignedOrder } from '@cowprotocol/cow-sdk' @@ -11,44 +11,45 @@ import { useCurrentChainId } from '../../hooks/useCurrentChainId' import { SETTLEMENT_CONTRACT_ABI, SETTLEMENT_CONTRACT_ADDRESS } from './const' import { useSafeSdkAndKit } from './useSafeSdkAndKit' -const appData = '{"appCode":"CoW Swap-SafeApp","environment":"local","metadata":{"orderClass":{"orderClass":"limit"},"quote":{"slippageBips":"0"}},"version":"0.11.0"}' +const appData = + '{"appCode":"CoW Swap-SafeApp","environment":"local","metadata":{"orderClass":{"orderClass":"limit"},"quote":{"slippageBips":"0"}},"version":"0.11.0"}' const appDataHash = '0x6bb009e9730f09d18011327b6a1e4b9df70a3eb4d49e7cb622f79caadac5751a' - const orderBookApi = new OrderBookApi() const settlementContract = new Contract(SETTLEMENT_CONTRACT_ADDRESS, SETTLEMENT_CONTRACT_ABI) export function SmartContractWallet() { - const {provider, account} = useWeb3Info() + const { provider, account } = useWeb3Info() const chainId = useCurrentChainId() const [safeAddress, setSafeAddress] = useState(null) const [input, setInput] = useState(null) const [output, setOutput] = useState('') - const {safeSdk, safeApiKit} = useSafeSdkAndKit(safeAddress, chainId, provider) + const { safeSdk, safeApiKit } = useSafeSdkAndKit(safeAddress, chainId, provider) const defaultOrder: UnsignedOrder | null = useMemo(() => { - return safeAddress ? { - receiver: safeAddress, - buyAmount: '650942340000000000000', - buyToken: '0x91056D4A53E1faa1A84306D4deAEc71085394bC8', - sellAmount: '100000000000000000', - sellToken: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', - validTo: Math.round((Date.now() + 900_000) / 1000), - appData: '0x', - feeAmount: '0', - kind: OrderKind.SELL, - partiallyFillable: true, - signingScheme: SigningScheme.PRESIGN, - } : null + return safeAddress + ? { + receiver: safeAddress, + buyAmount: '650942340000000000000', + buyToken: '0x91056D4A53E1faa1A84306D4deAEc71085394bC8', + sellAmount: '100000000000000000', + sellToken: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + validTo: Math.round((Date.now() + 900_000) / 1000), + appData: '0x', + feeAmount: '0', + kind: OrderKind.SELL, + partiallyFillable: true, + signingScheme: SigningScheme.PRESIGN, + } + : null }, [safeAddress]) useEffect(() => { orderBookApi.context.chainId = chainId }, [chainId]) - const signOrder = useCallback( async (event: FormEvent) => { event.preventDefault() @@ -75,10 +76,7 @@ export function SmartContractWallet() { // Send order to CoW Protocol order-book const orderId = await orderBookApi.sendOrder(orderCreation) - const presignCallData = settlementContract.interface.encodeFunctionData('setPreSignature', [ - orderId, - true, - ]) + const presignCallData = settlementContract.interface.encodeFunctionData('setPreSignature', [orderId, true]) const presignRawTx = { to: settlementContract.address, @@ -88,7 +86,7 @@ export function SmartContractWallet() { // Sending pre-signature transaction to settlement contract // In this example we are using the Safe SDK, but you can use any other smart-contract wallet - const safeTx = await safeSdk.createTransaction({safeTransactionData: presignRawTx}) + const safeTx = await safeSdk.createTransaction({ safeTransactionData: presignRawTx }) const signedSafeTx = await safeSdk.signTransaction(safeTx) const safeTxHash = await safeSdk.getTransactionHash(signedSafeTx) const senderSignature = signedSafeTx.signatures.get(account.toLowerCase())?.data || '' @@ -106,7 +104,7 @@ export function SmartContractWallet() { setOutput(e.toString()) } }, - [chainId, input, provider, setOutput, safeSdk, safeApiKit] + [chainId, input, provider, setOutput, safeSdk, safeApiKit], ) return ( @@ -114,13 +112,15 @@ export function SmartContractWallet() {

Safe address:

- setSafeAddress(e.target.value)}/> + setSafeAddress(e.target.value)} + />

Order:

- +
@@ -128,7 +128,7 @@ export function SmartContractWallet() {
- + ) } diff --git a/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts index 35a4830f9..492fbfbd4 100644 --- a/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts +++ b/packages/cow-sdk/examples/cra/src/pages/smartContractWallet/useSafeSdkAndKit.ts @@ -1,10 +1,10 @@ -import {useEffect, useState} from 'react' -import Safe, {EthersAdapter} from '@safe-global/protocol-kit' -import {ethers} from 'ethers' +import { useEffect, useState } from 'react' +import Safe, { EthersAdapter } from '@safe-global/protocol-kit' +import { ethers } from 'ethers' import SafeApiKit from '@safe-global/api-kit' -import {SAFE_TRANSACTION_SERVICE_URL} from './const' -import {SupportedChainId} from '@cowprotocol/cow-sdk' -import {Web3Provider} from '@ethersproject/providers' +import { SAFE_TRANSACTION_SERVICE_URL } from './const' +import { SupportedChainId } from '@cowprotocol/cow-sdk' +import { Web3Provider } from '@ethersproject/providers' export function useSafeSdkAndKit(safeAddress: string | null, chainId: SupportedChainId, provider: Web3Provider) { const [safeSdk, setSafeSdk] = useState(null) @@ -27,12 +27,12 @@ export function useSafeSdkAndKit(safeAddress: string | null, chainId: SupportedC const safeApiKit = new SafeApiKit({ txServiceUrl, - ethAdapter + ethAdapter, }) setSafeApiKit(safeApiKit) - Safe.create({ethAdapter, safeAddress}).then(setSafeSdk).catch(console.error) + Safe.create({ ethAdapter, safeAddress }).then(setSafeSdk).catch(console.error) }, [chainId, provider, safeAddress]) return { safeSdk, safeApiKit } diff --git a/packages/cow-sdk/examples/vanilla/src/index.ts b/packages/cow-sdk/examples/vanilla/src/index.ts index e8fa0cc5f..555fcea5b 100644 --- a/packages/cow-sdk/examples/vanilla/src/index.ts +++ b/packages/cow-sdk/examples/vanilla/src/index.ts @@ -59,11 +59,11 @@ const appCode = 'trade-sdk-example' printResult(` Quote amount: ${atomsToAmount( beforeNetworkCosts[isSell ? 'buyAmount' : 'sellAmount'], - outputToken.decimals + outputToken.decimals, )} ${outputToken.symbol} Amount to sign: ${atomsToAmount( afterSlippage[isSell ? 'buyAmount' : 'sellAmount'], - outputToken.decimals + outputToken.decimals, )} ${outputToken.symbol} See more info in the console (Quote results) `) diff --git a/packages/cow-sdk/examples/vanilla/src/tokens.ts b/packages/cow-sdk/examples/vanilla/src/tokens.ts index acf489bc1..43ba59fd2 100644 --- a/packages/cow-sdk/examples/vanilla/src/tokens.ts +++ b/packages/cow-sdk/examples/vanilla/src/tokens.ts @@ -6,7 +6,7 @@ class Token { public readonly address: string, public readonly decimals: number, public readonly symbol: string, - public readonly name: string + public readonly name: string, ) {} } @@ -28,7 +28,7 @@ export const TOKENS: Record = { '0x177127622c4A00F3d409B75571e12cB3c8973d3c', 18, 'COW', - 'CoW Protocol Token' + 'CoW Protocol Token', ), ], [SupportedChainId.ARBITRUM_ONE]: [ @@ -41,7 +41,7 @@ export const TOKENS: Record = { '0xcb8b5cd20bdcaea9a010ac1f8d835824f5c87a04', 18, 'COW', - 'CoW Protocol Token' + 'CoW Protocol Token', ), ], [SupportedChainId.SEPOLIA]: [ diff --git a/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts b/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts index 3b4fb84f8..9c65115cc 100644 --- a/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts +++ b/packages/cow-sdk/src/bridging/BridgingSdk/BridgingSdk.ts @@ -150,7 +150,7 @@ export class BridgingSdk { */ async getQuote( quoteBridgeRequest: QuoteBridgeRequest, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise { const { sellTokenChainId, buyTokenChainId } = quoteBridgeRequest const tradingSdk = this.config.tradingSdk diff --git a/packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts b/packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts index 76df65cf4..f0e2ed0e1 100644 --- a/packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts +++ b/packages/cow-sdk/src/bridging/BridgingSdk/getCrossChainOrder.ts @@ -37,7 +37,7 @@ export async function getCrossChainOrder(params: { const provider = providers.find((provider) => provider.info.name === bridgeProviderName) if (!provider) { throw new Error( - `Unknown Bridge provider: ${bridgeProviderName}. Add provider to the SDK config to be able to decode the order` + `Unknown Bridge provider: ${bridgeProviderName}. Add provider to the SDK config to be able to decode the order`, ) } diff --git a/packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts index 4621e0d76..8bd53ea75 100644 --- a/packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts +++ b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.test.ts @@ -46,7 +46,7 @@ describe('AcrossApi', () => { expect(routes).toEqual(mockRoutes) expect(mockFetch).toHaveBeenCalledWith( 'https://app.across.to/api/available-routes?originChainId=1&originToken=0x0000000000000000000000000000000000000001&destinationChainId=137&destinationToken=0x0000000000000000000000000000000000000002', - expect.any(Object) + expect.any(Object), ) }) @@ -63,7 +63,7 @@ describe('AcrossApi', () => { originToken: '0x0000000000000000000000000000000000000001', destinationChainId: '137', destinationToken: '0x0000000000000000000000000000000000000002', - }) + }), ).rejects.toThrow('Across Api Error') }) }) @@ -111,7 +111,7 @@ describe('AcrossApi', () => { expect(fees).toEqual(mockResponse) expect(mockFetch).toHaveBeenCalledWith( `https://app.across.to/api/suggested-fees?token=${request.token}&originChainId=${request.originChainId}&destinationChainId=${request.destinationChainId}&amount=${request.amount}`, - expect.any(Object) + expect.any(Object), ) }) @@ -128,7 +128,7 @@ describe('AcrossApi', () => { expect(mockFetch).toHaveBeenCalledWith( expect.stringContaining(`recipient=${request.recipient}`), - expect.any(Object) + expect.any(Object), ) }) @@ -145,7 +145,7 @@ describe('AcrossApi', () => { originChainId: SupportedChainId.MAINNET, destinationChainId: SupportedChainId.POLYGON, amount: 1000000000000000000n, - }) + }), ).rejects.toThrow('Across Api Error') }) }) diff --git a/packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts index 496f81e54..cffc12c1b 100644 --- a/packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts +++ b/packages/cow-sdk/src/bridging/providers/across/AcrossApi.ts @@ -72,7 +72,7 @@ export class AcrossApi { protected async fetchApi( path: string, params: Record, - isValidResponse?: (response: unknown) => response is T + isValidResponse?: (response: unknown) => response is T, ): Promise { const baseUrl = this.options.apiBaseUrl || ACROSS_API_URL const url = `${baseUrl}${path}?${new URLSearchParams(params).toString()}` @@ -96,7 +96,7 @@ export class AcrossApi { } else { throw new BridgeProviderQuoteError( `Invalid response for Across API call ${path}. The response doesn't pass the validation. Did the API change?`, - json + json, ) } } diff --git a/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts index 72d5956ca..a3c67b3f1 100644 --- a/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts +++ b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.test.ts @@ -73,7 +73,7 @@ describe('AcrossBridgeProvider', () => { expect.arrayContaining([ '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359', '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', - ]) + ]), ) }) @@ -179,7 +179,7 @@ describe('AcrossBridgeProvider', () => { describe('decodeBridgeHook', () => { it('should return bridging id', async () => { await expect(provider.decodeBridgeHook({} as unknown as latestAppData.CoWHook)).rejects.toThrowError( - 'Not implemented' + 'Not implemented', ) }) }) diff --git a/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts index fe464ada4..636bf0b26 100644 --- a/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts +++ b/packages/cow-sdk/src/bridging/providers/across/AcrossBridgeProvider.ts @@ -147,7 +147,7 @@ export class AcrossBridgeProvider implements BridgeProvider { chainId: SupportedChainId, unsignedCall: EvmCall, signer: Signer, - defaultGasLimit?: bigint + defaultGasLimit?: bigint, ): Promise { // Sign the multicall const { signedMulticall, cowShedAccount, gasLimit } = await this.cowShedSdk.signCalls({ diff --git a/packages/cow-sdk/src/bridging/providers/across/const/tokens.ts b/packages/cow-sdk/src/bridging/providers/across/const/tokens.ts index 4dd29a6c6..0d278bf69 100644 --- a/packages/cow-sdk/src/bridging/providers/across/const/tokens.ts +++ b/packages/cow-sdk/src/bridging/providers/across/const/tokens.ts @@ -64,5 +64,5 @@ export const ACROSS_TOKEN_MAPPING: Partial + {} as Record, ) diff --git a/packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts b/packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts index e722a3dd2..95cd4c9e5 100644 --- a/packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts +++ b/packages/cow-sdk/src/bridging/providers/across/createAcrossDepositCall.ts @@ -34,7 +34,7 @@ function getMathContract(sellTokenChainId: TargetChainId): WeirollContract { function getBalanceOfSellTokenContract(sellTokenAddress: string): WeirollContract { return createWeirollContract( new EthersContract(sellTokenAddress, ERC20_BALANCE_OF_ABI), - WeirollCommandFlags.STATICCALL + WeirollCommandFlags.STATICCALL, ) } @@ -69,7 +69,7 @@ export function createAcrossDepositCall(params: { // Calculate the new output amount using the actual received intermediate tokens (uses the original quoted fee) const relayFeePercentage = BigInt(suggestedFees.totalRelayFee.pct) const outputAmountIncludingSurplus = planner.add( - mathContract.multiplyAndSubtract(sourceAmountIncludingSurplus, relayFeePercentage) + mathContract.multiplyAndSubtract(sourceAmountIncludingSurplus, relayFeePercentage), ) // Set allowance for SpokePool to transfer bridged tokens @@ -96,8 +96,8 @@ export function createAcrossDepositCall(params: { quoteTimestamp, fillDeadline, exclusivityDeadline, - message - ) + message, + ), ) }) diff --git a/packages/cow-sdk/src/bridging/providers/across/util.ts b/packages/cow-sdk/src/bridging/providers/across/util.ts index 3fc8e0b3e..c7d76e8d1 100644 --- a/packages/cow-sdk/src/bridging/providers/across/util.ts +++ b/packages/cow-sdk/src/bridging/providers/across/util.ts @@ -15,7 +15,7 @@ const PCT_100_PERCENT = 10n ** 18n */ export function getChainConfigs( sourceChainId: TargetChainId, - targetChainId: TargetChainId + targetChainId: TargetChainId, ): { sourceChainConfig: AcrossChainConfig; targetChainConfig: AcrossChainConfig } | undefined { const sourceChainConfig = getChainConfig(sourceChainId) const targetChainConfig = getChainConfig(targetChainId) @@ -40,7 +40,7 @@ export function getTokenAddress(tokenSymbol: string, chainConfig: AcrossChainCon export function toBridgeQuoteResult( request: QuoteBridgeRequest, slippageBps: number, - suggestedFees: SuggestedFeesResponse + suggestedFees: SuggestedFeesResponse, ): AcrossQuoteResult { const { kind } = request @@ -64,7 +64,7 @@ export function toBridgeQuoteResult( function toAmountsAndCosts( request: QuoteBridgeRequest, slippageBps: number, - suggestedFees: SuggestedFeesResponse + suggestedFees: SuggestedFeesResponse, ): BridgeQuoteAmountsAndCosts { const { amount, sellTokenDecimals, buyTokenDecimals } = request diff --git a/packages/cow-sdk/src/bridging/types.ts b/packages/cow-sdk/src/bridging/types.ts index 4dd984cbf..da73f737e 100644 --- a/packages/cow-sdk/src/bridging/types.ts +++ b/packages/cow-sdk/src/bridging/types.ts @@ -198,7 +198,7 @@ export interface BridgeProvider { chainId: SupportedChainId, unsignedCall: EvmCall, signer: Signer, - defaultGasLimit?: bigint + defaultGasLimit?: bigint, ): Promise /** diff --git a/packages/cow-sdk/src/chains/const/index.ts b/packages/cow-sdk/src/chains/const/index.ts index 64f9ad7cb..3fe009935 100644 --- a/packages/cow-sdk/src/chains/const/index.ts +++ b/packages/cow-sdk/src/chains/const/index.ts @@ -32,7 +32,7 @@ export const ALL_SUPPORTED_CHAINS = Object.values(ALL_SUPPORTED_CHAINS_MAP) * The list of supported chains. */ export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = ALL_SUPPORTED_CHAINS.map( - (chain) => chain.id + (chain) => chain.id, ) as SupportedChainId[] /** diff --git a/packages/cow-sdk/src/common/utils/config.ts b/packages/cow-sdk/src/common/utils/config.ts index 0f2c7622e..78cc31f64 100644 --- a/packages/cow-sdk/src/common/utils/config.ts +++ b/packages/cow-sdk/src/common/utils/config.ts @@ -9,7 +9,7 @@ export function mapSupportedNetworks(value: T | ((chainId: SupportedChainId) ...acc, [chainId]: typeof value === 'function' ? (value as (chainId: SupportedChainId) => T)(chainId) : value, }), - {} + {}, ) } diff --git a/packages/cow-sdk/src/composable/Multiplexer.spec.ts b/packages/cow-sdk/src/composable/Multiplexer.spec.ts index fc36d2a66..be73bbaf6 100644 --- a/packages/cow-sdk/src/composable/Multiplexer.spec.ts +++ b/packages/cow-sdk/src/composable/Multiplexer.spec.ts @@ -279,7 +279,7 @@ describe('Multiplexer (ComposableCoW)', () => { await m.prepareProofStruct(ProofLocation.IPFS, undefined, upload2) } catch (e) { expect(e.message).toMatch( - 'Error preparing proof struct: Error: Error uploading to decentralized storage 5: Error: bad' + 'Error preparing proof struct: Error: Error uploading to decentralized storage 5: Error: bad', ) } }) diff --git a/packages/cow-sdk/src/composable/generated/ComposableCoW.ts b/packages/cow-sdk/src/composable/generated/ComposableCoW.ts index 6e60b1c53..cfdeb8949 100644 --- a/packages/cow-sdk/src/composable/generated/ComposableCoW.ts +++ b/packages/cow-sdk/src/composable/generated/ComposableCoW.ts @@ -12,58 +12,49 @@ import type { PopulatedTransaction, Signer, utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, -} from "./common"; +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common' export declare namespace IConditionalOrder { export type ConditionalOrderParamsStruct = { - handler: string; - salt: BytesLike; - staticInput: BytesLike; - }; + handler: string + salt: BytesLike + staticInput: BytesLike + } export type ConditionalOrderParamsStructOutput = [string, string, string] & { - handler: string; - salt: string; - staticInput: string; - }; + handler: string + salt: string + staticInput: string + } } export declare namespace ComposableCoW { - export type ProofStruct = { location: BigNumberish; data: BytesLike }; + export type ProofStruct = { location: BigNumberish; data: BytesLike } export type ProofStructOutput = [BigNumber, string] & { - location: BigNumber; - data: string; - }; + location: BigNumber + data: string + } } export declare namespace GPv2Order { export type DataStruct = { - sellToken: string; - buyToken: string; - receiver: string; - sellAmount: BigNumberish; - buyAmount: BigNumberish; - validTo: BigNumberish; - appData: BytesLike; - feeAmount: BigNumberish; - kind: BytesLike; - partiallyFillable: boolean; - sellTokenBalance: BytesLike; - buyTokenBalance: BytesLike; - }; + sellToken: string + buyToken: string + receiver: string + sellAmount: BigNumberish + buyAmount: BigNumberish + validTo: BigNumberish + appData: BytesLike + feeAmount: BigNumberish + kind: BytesLike + partiallyFillable: boolean + sellTokenBalance: BytesLike + buyTokenBalance: BytesLike + } export type DataStructOutput = [ string, @@ -77,273 +68,198 @@ export declare namespace GPv2Order { string, boolean, string, - string + string, ] & { - sellToken: string; - buyToken: string; - receiver: string; - sellAmount: BigNumber; - buyAmount: BigNumber; - validTo: number; - appData: string; - feeAmount: BigNumber; - kind: string; - partiallyFillable: boolean; - sellTokenBalance: string; - buyTokenBalance: string; - }; + sellToken: string + buyToken: string + receiver: string + sellAmount: BigNumber + buyAmount: BigNumber + validTo: number + appData: string + feeAmount: BigNumber + kind: string + partiallyFillable: boolean + sellTokenBalance: string + buyTokenBalance: string + } } export interface ComposableCoWInterface extends utils.Interface { functions: { - "cabinet(address,bytes32)": FunctionFragment; - "create((address,bytes32,bytes),bool)": FunctionFragment; - "createWithContext((address,bytes32,bytes),address,bytes,bool)": FunctionFragment; - "domainSeparator()": FunctionFragment; - "getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])": FunctionFragment; - "hash((address,bytes32,bytes))": FunctionFragment; - "isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)": FunctionFragment; - "remove(bytes32)": FunctionFragment; - "roots(address)": FunctionFragment; - "setRoot(bytes32,(uint256,bytes))": FunctionFragment; - "setRootWithContext(bytes32,(uint256,bytes),address,bytes)": FunctionFragment; - "setSwapGuard(address)": FunctionFragment; - "singleOrders(address,bytes32)": FunctionFragment; - "swapGuards(address)": FunctionFragment; - }; + 'cabinet(address,bytes32)': FunctionFragment + 'create((address,bytes32,bytes),bool)': FunctionFragment + 'createWithContext((address,bytes32,bytes),address,bytes,bool)': FunctionFragment + 'domainSeparator()': FunctionFragment + 'getTradeableOrderWithSignature(address,(address,bytes32,bytes),bytes,bytes32[])': FunctionFragment + 'hash((address,bytes32,bytes))': FunctionFragment + 'isValidSafeSignature(address,address,bytes32,bytes32,bytes32,bytes,bytes)': FunctionFragment + 'remove(bytes32)': FunctionFragment + 'roots(address)': FunctionFragment + 'setRoot(bytes32,(uint256,bytes))': FunctionFragment + 'setRootWithContext(bytes32,(uint256,bytes),address,bytes)': FunctionFragment + 'setSwapGuard(address)': FunctionFragment + 'singleOrders(address,bytes32)': FunctionFragment + 'swapGuards(address)': FunctionFragment + } getFunction( nameOrSignatureOrTopic: - | "cabinet" - | "create" - | "createWithContext" - | "domainSeparator" - | "getTradeableOrderWithSignature" - | "hash" - | "isValidSafeSignature" - | "remove" - | "roots" - | "setRoot" - | "setRootWithContext" - | "setSwapGuard" - | "singleOrders" - | "swapGuards" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "cabinet", - values: [string, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "create", - values: [IConditionalOrder.ConditionalOrderParamsStruct, boolean] - ): string; - encodeFunctionData( - functionFragment: "createWithContext", - values: [ - IConditionalOrder.ConditionalOrderParamsStruct, - string, - BytesLike, - boolean - ] - ): string; + | 'cabinet' + | 'create' + | 'createWithContext' + | 'domainSeparator' + | 'getTradeableOrderWithSignature' + | 'hash' + | 'isValidSafeSignature' + | 'remove' + | 'roots' + | 'setRoot' + | 'setRootWithContext' + | 'setSwapGuard' + | 'singleOrders' + | 'swapGuards', + ): FunctionFragment + + encodeFunctionData(functionFragment: 'cabinet', values: [string, BytesLike]): string encodeFunctionData( - functionFragment: "domainSeparator", - values?: undefined - ): string; + functionFragment: 'create', + values: [IConditionalOrder.ConditionalOrderParamsStruct, boolean], + ): string encodeFunctionData( - functionFragment: "getTradeableOrderWithSignature", - values: [ - string, - IConditionalOrder.ConditionalOrderParamsStruct, - BytesLike, - BytesLike[] - ] - ): string; + functionFragment: 'createWithContext', + values: [IConditionalOrder.ConditionalOrderParamsStruct, string, BytesLike, boolean], + ): string + encodeFunctionData(functionFragment: 'domainSeparator', values?: undefined): string encodeFunctionData( - functionFragment: "hash", - values: [IConditionalOrder.ConditionalOrderParamsStruct] - ): string; + functionFragment: 'getTradeableOrderWithSignature', + values: [string, IConditionalOrder.ConditionalOrderParamsStruct, BytesLike, BytesLike[]], + ): string + encodeFunctionData(functionFragment: 'hash', values: [IConditionalOrder.ConditionalOrderParamsStruct]): string encodeFunctionData( - functionFragment: "isValidSafeSignature", - values: [ - string, - string, - BytesLike, - BytesLike, - BytesLike, - BytesLike, - BytesLike - ] - ): string; - encodeFunctionData(functionFragment: "remove", values: [BytesLike]): string; - encodeFunctionData(functionFragment: "roots", values: [string]): string; + functionFragment: 'isValidSafeSignature', + values: [string, string, BytesLike, BytesLike, BytesLike, BytesLike, BytesLike], + ): string + encodeFunctionData(functionFragment: 'remove', values: [BytesLike]): string + encodeFunctionData(functionFragment: 'roots', values: [string]): string + encodeFunctionData(functionFragment: 'setRoot', values: [BytesLike, ComposableCoW.ProofStruct]): string encodeFunctionData( - functionFragment: "setRoot", - values: [BytesLike, ComposableCoW.ProofStruct] - ): string; - encodeFunctionData( - functionFragment: "setRootWithContext", - values: [BytesLike, ComposableCoW.ProofStruct, string, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "setSwapGuard", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "singleOrders", - values: [string, BytesLike] - ): string; - encodeFunctionData(functionFragment: "swapGuards", values: [string]): string; - - decodeFunctionResult(functionFragment: "cabinet", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "create", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "createWithContext", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "domainSeparator", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getTradeableOrderWithSignature", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "hash", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isValidSafeSignature", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "remove", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "roots", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setRoot", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setRootWithContext", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setSwapGuard", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "singleOrders", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "swapGuards", data: BytesLike): Result; + functionFragment: 'setRootWithContext', + values: [BytesLike, ComposableCoW.ProofStruct, string, BytesLike], + ): string + encodeFunctionData(functionFragment: 'setSwapGuard', values: [string]): string + encodeFunctionData(functionFragment: 'singleOrders', values: [string, BytesLike]): string + encodeFunctionData(functionFragment: 'swapGuards', values: [string]): string + + decodeFunctionResult(functionFragment: 'cabinet', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'create', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'createWithContext', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'domainSeparator', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'getTradeableOrderWithSignature', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'hash', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isValidSafeSignature', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'remove', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'roots', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setRoot', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setRootWithContext', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setSwapGuard', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'singleOrders', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'swapGuards', data: BytesLike): Result events: { - "ConditionalOrderCreated(address,(address,bytes32,bytes))": EventFragment; - "MerkleRootSet(address,bytes32,(uint256,bytes))": EventFragment; - "SwapGuardSet(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ConditionalOrderCreated"): EventFragment; - getEvent(nameOrSignatureOrTopic: "MerkleRootSet"): EventFragment; - getEvent(nameOrSignatureOrTopic: "SwapGuardSet"): EventFragment; + 'ConditionalOrderCreated(address,(address,bytes32,bytes))': EventFragment + 'MerkleRootSet(address,bytes32,(uint256,bytes))': EventFragment + 'SwapGuardSet(address,address)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'ConditionalOrderCreated'): EventFragment + getEvent(nameOrSignatureOrTopic: 'MerkleRootSet'): EventFragment + getEvent(nameOrSignatureOrTopic: 'SwapGuardSet'): EventFragment } export interface ConditionalOrderCreatedEventObject { - owner: string; - params: IConditionalOrder.ConditionalOrderParamsStructOutput; + owner: string + params: IConditionalOrder.ConditionalOrderParamsStructOutput } export type ConditionalOrderCreatedEvent = TypedEvent< [string, IConditionalOrder.ConditionalOrderParamsStructOutput], ConditionalOrderCreatedEventObject ->; +> -export type ConditionalOrderCreatedEventFilter = - TypedEventFilter; +export type ConditionalOrderCreatedEventFilter = TypedEventFilter export interface MerkleRootSetEventObject { - owner: string; - root: string; - proof: ComposableCoW.ProofStructOutput; + owner: string + root: string + proof: ComposableCoW.ProofStructOutput } -export type MerkleRootSetEvent = TypedEvent< - [string, string, ComposableCoW.ProofStructOutput], - MerkleRootSetEventObject ->; +export type MerkleRootSetEvent = TypedEvent<[string, string, ComposableCoW.ProofStructOutput], MerkleRootSetEventObject> -export type MerkleRootSetEventFilter = TypedEventFilter; +export type MerkleRootSetEventFilter = TypedEventFilter export interface SwapGuardSetEventObject { - owner: string; - swapGuard: string; + owner: string + swapGuard: string } -export type SwapGuardSetEvent = TypedEvent< - [string, string], - SwapGuardSetEventObject ->; +export type SwapGuardSetEvent = TypedEvent<[string, string], SwapGuardSetEventObject> -export type SwapGuardSetEventFilter = TypedEventFilter; +export type SwapGuardSetEventFilter = TypedEventFilter export interface ComposableCoW extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise - interface: ComposableCoWInterface; + interface: ComposableCoWInterface queryFilter( event: TypedEventFilter, fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; + toBlock?: string | number | undefined, + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent functions: { - cabinet( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + cabinet(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise<[string]> create( params: IConditionalOrder.ConditionalOrderParamsStruct, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise createWithContext( params: IConditionalOrder.ConditionalOrderParamsStruct, factory: string, data: BytesLike, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - domainSeparator(overrides?: CallOverrides): Promise<[string]>; + domainSeparator(overrides?: CallOverrides): Promise<[string]> getTradeableOrderWithSignature( owner: string, params: IConditionalOrder.ConditionalOrderParamsStruct, offchainInput: BytesLike, proof: BytesLike[], - overrides?: CallOverrides + overrides?: CallOverrides, ): Promise< [GPv2Order.DataStructOutput, string] & { - order: GPv2Order.DataStructOutput; - signature: string; + order: GPv2Order.DataStructOutput + signature: string } - >; + > - hash( - params: IConditionalOrder.ConditionalOrderParamsStruct, - overrides?: CallOverrides - ): Promise<[string]>; + hash(params: IConditionalOrder.ConditionalOrderParamsStruct, overrides?: CallOverrides): Promise<[string]> isValidSafeSignature( safe: string, @@ -353,83 +269,66 @@ export interface ComposableCoW extends BaseContract { arg4: BytesLike, encodeData: BytesLike, payload: BytesLike, - overrides?: CallOverrides - ): Promise<[string] & { magic: string }>; + overrides?: CallOverrides, + ): Promise<[string] & { magic: string }> - remove( - singleOrderHash: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + remove(singleOrderHash: BytesLike, overrides?: Overrides & { from?: string }): Promise - roots(arg0: string, overrides?: CallOverrides): Promise<[string]>; + roots(arg0: string, overrides?: CallOverrides): Promise<[string]> setRoot( root: BytesLike, proof: ComposableCoW.ProofStruct, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setRootWithContext( root: BytesLike, proof: ComposableCoW.ProofStruct, factory: string, data: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - setSwapGuard( - swapGuard: string, - overrides?: Overrides & { from?: string } - ): Promise; + setSwapGuard(swapGuard: string, overrides?: Overrides & { from?: string }): Promise - singleOrders( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; + singleOrders(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise<[boolean]> - swapGuards(arg0: string, overrides?: CallOverrides): Promise<[string]>; - }; + swapGuards(arg0: string, overrides?: CallOverrides): Promise<[string]> + } - cabinet( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + cabinet(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise create( params: IConditionalOrder.ConditionalOrderParamsStruct, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise createWithContext( params: IConditionalOrder.ConditionalOrderParamsStruct, factory: string, data: BytesLike, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - domainSeparator(overrides?: CallOverrides): Promise; + domainSeparator(overrides?: CallOverrides): Promise getTradeableOrderWithSignature( owner: string, params: IConditionalOrder.ConditionalOrderParamsStruct, offchainInput: BytesLike, proof: BytesLike[], - overrides?: CallOverrides + overrides?: CallOverrides, ): Promise< [GPv2Order.DataStructOutput, string] & { - order: GPv2Order.DataStructOutput; - signature: string; + order: GPv2Order.DataStructOutput + signature: string } - >; + > - hash( - params: IConditionalOrder.ConditionalOrderParamsStruct, - overrides?: CallOverrides - ): Promise; + hash(params: IConditionalOrder.ConditionalOrderParamsStruct, overrides?: CallOverrides): Promise isValidSafeSignature( safe: string, @@ -439,83 +338,66 @@ export interface ComposableCoW extends BaseContract { arg4: BytesLike, encodeData: BytesLike, payload: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - remove( - singleOrderHash: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + remove(singleOrderHash: BytesLike, overrides?: Overrides & { from?: string }): Promise - roots(arg0: string, overrides?: CallOverrides): Promise; + roots(arg0: string, overrides?: CallOverrides): Promise setRoot( root: BytesLike, proof: ComposableCoW.ProofStruct, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setRootWithContext( root: BytesLike, proof: ComposableCoW.ProofStruct, factory: string, data: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - setSwapGuard( - swapGuard: string, - overrides?: Overrides & { from?: string } - ): Promise; + setSwapGuard(swapGuard: string, overrides?: Overrides & { from?: string }): Promise - singleOrders( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + singleOrders(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - swapGuards(arg0: string, overrides?: CallOverrides): Promise; + swapGuards(arg0: string, overrides?: CallOverrides): Promise callStatic: { - cabinet( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + cabinet(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise create( params: IConditionalOrder.ConditionalOrderParamsStruct, dispatch: boolean, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise createWithContext( params: IConditionalOrder.ConditionalOrderParamsStruct, factory: string, data: BytesLike, dispatch: boolean, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - domainSeparator(overrides?: CallOverrides): Promise; + domainSeparator(overrides?: CallOverrides): Promise getTradeableOrderWithSignature( owner: string, params: IConditionalOrder.ConditionalOrderParamsStruct, offchainInput: BytesLike, proof: BytesLike[], - overrides?: CallOverrides + overrides?: CallOverrides, ): Promise< [GPv2Order.DataStructOutput, string] & { - order: GPv2Order.DataStructOutput; - signature: string; + order: GPv2Order.DataStructOutput + signature: string } - >; + > - hash( - params: IConditionalOrder.ConditionalOrderParamsStruct, - overrides?: CallOverrides - ): Promise; + hash(params: IConditionalOrder.ConditionalOrderParamsStruct, overrides?: CallOverrides): Promise isValidSafeSignature( safe: string, @@ -525,107 +407,76 @@ export interface ComposableCoW extends BaseContract { arg4: BytesLike, encodeData: BytesLike, payload: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - remove( - singleOrderHash: BytesLike, - overrides?: CallOverrides - ): Promise; + remove(singleOrderHash: BytesLike, overrides?: CallOverrides): Promise - roots(arg0: string, overrides?: CallOverrides): Promise; + roots(arg0: string, overrides?: CallOverrides): Promise - setRoot( - root: BytesLike, - proof: ComposableCoW.ProofStruct, - overrides?: CallOverrides - ): Promise; + setRoot(root: BytesLike, proof: ComposableCoW.ProofStruct, overrides?: CallOverrides): Promise setRootWithContext( root: BytesLike, proof: ComposableCoW.ProofStruct, factory: string, data: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - setSwapGuard(swapGuard: string, overrides?: CallOverrides): Promise; + setSwapGuard(swapGuard: string, overrides?: CallOverrides): Promise - singleOrders( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + singleOrders(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - swapGuards(arg0: string, overrides?: CallOverrides): Promise; - }; + swapGuards(arg0: string, overrides?: CallOverrides): Promise + } filters: { - "ConditionalOrderCreated(address,(address,bytes32,bytes))"( + 'ConditionalOrderCreated(address,(address,bytes32,bytes))'( owner?: string | null, - params?: null - ): ConditionalOrderCreatedEventFilter; - ConditionalOrderCreated( - owner?: string | null, - params?: null - ): ConditionalOrderCreatedEventFilter; + params?: null, + ): ConditionalOrderCreatedEventFilter + ConditionalOrderCreated(owner?: string | null, params?: null): ConditionalOrderCreatedEventFilter - "MerkleRootSet(address,bytes32,(uint256,bytes))"( - owner?: string | null, - root?: null, - proof?: null - ): MerkleRootSetEventFilter; - MerkleRootSet( + 'MerkleRootSet(address,bytes32,(uint256,bytes))'( owner?: string | null, root?: null, - proof?: null - ): MerkleRootSetEventFilter; + proof?: null, + ): MerkleRootSetEventFilter + MerkleRootSet(owner?: string | null, root?: null, proof?: null): MerkleRootSetEventFilter - "SwapGuardSet(address,address)"( - owner?: string | null, - swapGuard?: null - ): SwapGuardSetEventFilter; - SwapGuardSet( - owner?: string | null, - swapGuard?: null - ): SwapGuardSetEventFilter; - }; + 'SwapGuardSet(address,address)'(owner?: string | null, swapGuard?: null): SwapGuardSetEventFilter + SwapGuardSet(owner?: string | null, swapGuard?: null): SwapGuardSetEventFilter + } estimateGas: { - cabinet( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + cabinet(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise create( params: IConditionalOrder.ConditionalOrderParamsStruct, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise createWithContext( params: IConditionalOrder.ConditionalOrderParamsStruct, factory: string, data: BytesLike, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - domainSeparator(overrides?: CallOverrides): Promise; + domainSeparator(overrides?: CallOverrides): Promise getTradeableOrderWithSignature( owner: string, params: IConditionalOrder.ConditionalOrderParamsStruct, offchainInput: BytesLike, proof: BytesLike[], - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - hash( - params: IConditionalOrder.ConditionalOrderParamsStruct, - overrides?: CallOverrides - ): Promise; + hash(params: IConditionalOrder.ConditionalOrderParamsStruct, overrides?: CallOverrides): Promise isValidSafeSignature( safe: string, @@ -635,79 +486,65 @@ export interface ComposableCoW extends BaseContract { arg4: BytesLike, encodeData: BytesLike, payload: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - remove( - singleOrderHash: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + remove(singleOrderHash: BytesLike, overrides?: Overrides & { from?: string }): Promise - roots(arg0: string, overrides?: CallOverrides): Promise; + roots(arg0: string, overrides?: CallOverrides): Promise setRoot( root: BytesLike, proof: ComposableCoW.ProofStruct, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setRootWithContext( root: BytesLike, proof: ComposableCoW.ProofStruct, factory: string, data: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - setSwapGuard( - swapGuard: string, - overrides?: Overrides & { from?: string } - ): Promise; + setSwapGuard(swapGuard: string, overrides?: Overrides & { from?: string }): Promise - singleOrders( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + singleOrders(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - swapGuards(arg0: string, overrides?: CallOverrides): Promise; - }; + swapGuards(arg0: string, overrides?: CallOverrides): Promise + } populateTransaction: { - cabinet( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + cabinet(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise create( params: IConditionalOrder.ConditionalOrderParamsStruct, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise createWithContext( params: IConditionalOrder.ConditionalOrderParamsStruct, factory: string, data: BytesLike, dispatch: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - domainSeparator(overrides?: CallOverrides): Promise; + domainSeparator(overrides?: CallOverrides): Promise getTradeableOrderWithSignature( owner: string, params: IConditionalOrder.ConditionalOrderParamsStruct, offchainInput: BytesLike, proof: BytesLike[], - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise hash( params: IConditionalOrder.ConditionalOrderParamsStruct, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise isValidSafeSignature( safe: string, @@ -717,47 +554,31 @@ export interface ComposableCoW extends BaseContract { arg4: BytesLike, encodeData: BytesLike, payload: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - remove( - singleOrderHash: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + remove(singleOrderHash: BytesLike, overrides?: Overrides & { from?: string }): Promise - roots( - arg0: string, - overrides?: CallOverrides - ): Promise; + roots(arg0: string, overrides?: CallOverrides): Promise setRoot( root: BytesLike, proof: ComposableCoW.ProofStruct, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setRootWithContext( root: BytesLike, proof: ComposableCoW.ProofStruct, factory: string, data: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; - - setSwapGuard( - swapGuard: string, - overrides?: Overrides & { from?: string } - ): Promise; - - singleOrders( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; - - swapGuards( - arg0: string, - overrides?: CallOverrides - ): Promise; - }; + overrides?: Overrides & { from?: string }, + ): Promise + + setSwapGuard(swapGuard: string, overrides?: Overrides & { from?: string }): Promise + + singleOrders(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise + + swapGuards(arg0: string, overrides?: CallOverrides): Promise + } } diff --git a/packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts b/packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts index 2188156c0..10e314447 100644 --- a/packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts +++ b/packages/cow-sdk/src/composable/generated/ExtensibleFallbackHandler.ts @@ -12,309 +12,196 @@ import type { PopulatedTransaction, Signer, utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, -} from "./common"; +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common' export interface ExtensibleFallbackHandlerInterface extends utils.Interface { functions: { - "domainVerifiers(address,bytes32)": FunctionFragment; - "isValidSignature(bytes32,bytes)": FunctionFragment; - "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": FunctionFragment; - "onERC1155Received(address,address,uint256,uint256,bytes)": FunctionFragment; - "onERC721Received(address,address,uint256,bytes)": FunctionFragment; - "safeInterfaces(address,bytes4)": FunctionFragment; - "safeMethods(address,bytes4)": FunctionFragment; - "setDomainVerifier(bytes32,address)": FunctionFragment; - "setSafeMethod(bytes4,bytes32)": FunctionFragment; - "setSupportedInterface(bytes4,bool)": FunctionFragment; - "setSupportedInterfaceBatch(bytes4,bytes32[])": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - }; + 'domainVerifiers(address,bytes32)': FunctionFragment + 'isValidSignature(bytes32,bytes)': FunctionFragment + 'onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)': FunctionFragment + 'onERC1155Received(address,address,uint256,uint256,bytes)': FunctionFragment + 'onERC721Received(address,address,uint256,bytes)': FunctionFragment + 'safeInterfaces(address,bytes4)': FunctionFragment + 'safeMethods(address,bytes4)': FunctionFragment + 'setDomainVerifier(bytes32,address)': FunctionFragment + 'setSafeMethod(bytes4,bytes32)': FunctionFragment + 'setSupportedInterface(bytes4,bool)': FunctionFragment + 'setSupportedInterfaceBatch(bytes4,bytes32[])': FunctionFragment + 'supportsInterface(bytes4)': FunctionFragment + } getFunction( nameOrSignatureOrTopic: - | "domainVerifiers" - | "isValidSignature" - | "onERC1155BatchReceived" - | "onERC1155Received" - | "onERC721Received" - | "safeInterfaces" - | "safeMethods" - | "setDomainVerifier" - | "setSafeMethod" - | "setSupportedInterface" - | "setSupportedInterfaceBatch" - | "supportsInterface" - ): FunctionFragment; - - encodeFunctionData( - functionFragment: "domainVerifiers", - values: [string, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "isValidSignature", - values: [BytesLike, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "onERC1155BatchReceived", - values: [string, string, BigNumberish[], BigNumberish[], BytesLike] - ): string; - encodeFunctionData( - functionFragment: "onERC1155Received", - values: [string, string, BigNumberish, BigNumberish, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "onERC721Received", - values: [string, string, BigNumberish, BytesLike] - ): string; + | 'domainVerifiers' + | 'isValidSignature' + | 'onERC1155BatchReceived' + | 'onERC1155Received' + | 'onERC721Received' + | 'safeInterfaces' + | 'safeMethods' + | 'setDomainVerifier' + | 'setSafeMethod' + | 'setSupportedInterface' + | 'setSupportedInterfaceBatch' + | 'supportsInterface', + ): FunctionFragment + + encodeFunctionData(functionFragment: 'domainVerifiers', values: [string, BytesLike]): string + encodeFunctionData(functionFragment: 'isValidSignature', values: [BytesLike, BytesLike]): string encodeFunctionData( - functionFragment: "safeInterfaces", - values: [string, BytesLike] - ): string; + functionFragment: 'onERC1155BatchReceived', + values: [string, string, BigNumberish[], BigNumberish[], BytesLike], + ): string encodeFunctionData( - functionFragment: "safeMethods", - values: [string, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "setDomainVerifier", - values: [BytesLike, string] - ): string; - encodeFunctionData( - functionFragment: "setSafeMethod", - values: [BytesLike, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "setSupportedInterface", - values: [BytesLike, boolean] - ): string; - encodeFunctionData( - functionFragment: "setSupportedInterfaceBatch", - values: [BytesLike, BytesLike[]] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "domainVerifiers", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isValidSignature", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "onERC1155BatchReceived", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "onERC1155Received", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "onERC721Received", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeInterfaces", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeMethods", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setDomainVerifier", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setSafeMethod", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setSupportedInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setSupportedInterfaceBatch", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; + functionFragment: 'onERC1155Received', + values: [string, string, BigNumberish, BigNumberish, BytesLike], + ): string + encodeFunctionData(functionFragment: 'onERC721Received', values: [string, string, BigNumberish, BytesLike]): string + encodeFunctionData(functionFragment: 'safeInterfaces', values: [string, BytesLike]): string + encodeFunctionData(functionFragment: 'safeMethods', values: [string, BytesLike]): string + encodeFunctionData(functionFragment: 'setDomainVerifier', values: [BytesLike, string]): string + encodeFunctionData(functionFragment: 'setSafeMethod', values: [BytesLike, BytesLike]): string + encodeFunctionData(functionFragment: 'setSupportedInterface', values: [BytesLike, boolean]): string + encodeFunctionData(functionFragment: 'setSupportedInterfaceBatch', values: [BytesLike, BytesLike[]]): string + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string + + decodeFunctionResult(functionFragment: 'domainVerifiers', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'isValidSignature', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'onERC1155BatchReceived', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'onERC1155Received', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'onERC721Received', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'safeInterfaces', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'safeMethods', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setDomainVerifier', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setSafeMethod', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setSupportedInterface', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'setSupportedInterfaceBatch', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result events: { - "AddedDomainVerifier(address,bytes32,address)": EventFragment; - "AddedInterface(address,bytes4)": EventFragment; - "AddedSafeMethod(address,bytes4,bytes32)": EventFragment; - "ChangedDomainVerifier(address,bytes32,address,address)": EventFragment; - "ChangedSafeMethod(address,bytes4,bytes32,bytes32)": EventFragment; - "RemovedDomainVerifier(address,bytes32)": EventFragment; - "RemovedInterface(address,bytes4)": EventFragment; - "RemovedSafeMethod(address,bytes4)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "AddedDomainVerifier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "AddedInterface"): EventFragment; - getEvent(nameOrSignatureOrTopic: "AddedSafeMethod"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ChangedDomainVerifier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ChangedSafeMethod"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RemovedDomainVerifier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RemovedInterface"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RemovedSafeMethod"): EventFragment; + 'AddedDomainVerifier(address,bytes32,address)': EventFragment + 'AddedInterface(address,bytes4)': EventFragment + 'AddedSafeMethod(address,bytes4,bytes32)': EventFragment + 'ChangedDomainVerifier(address,bytes32,address,address)': EventFragment + 'ChangedSafeMethod(address,bytes4,bytes32,bytes32)': EventFragment + 'RemovedDomainVerifier(address,bytes32)': EventFragment + 'RemovedInterface(address,bytes4)': EventFragment + 'RemovedSafeMethod(address,bytes4)': EventFragment + } + + getEvent(nameOrSignatureOrTopic: 'AddedDomainVerifier'): EventFragment + getEvent(nameOrSignatureOrTopic: 'AddedInterface'): EventFragment + getEvent(nameOrSignatureOrTopic: 'AddedSafeMethod'): EventFragment + getEvent(nameOrSignatureOrTopic: 'ChangedDomainVerifier'): EventFragment + getEvent(nameOrSignatureOrTopic: 'ChangedSafeMethod'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RemovedDomainVerifier'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RemovedInterface'): EventFragment + getEvent(nameOrSignatureOrTopic: 'RemovedSafeMethod'): EventFragment } export interface AddedDomainVerifierEventObject { - safe: string; - domainSeparator: string; - verifier: string; + safe: string + domainSeparator: string + verifier: string } -export type AddedDomainVerifierEvent = TypedEvent< - [string, string, string], - AddedDomainVerifierEventObject ->; +export type AddedDomainVerifierEvent = TypedEvent<[string, string, string], AddedDomainVerifierEventObject> -export type AddedDomainVerifierEventFilter = - TypedEventFilter; +export type AddedDomainVerifierEventFilter = TypedEventFilter export interface AddedInterfaceEventObject { - safe: string; - interfaceId: string; + safe: string + interfaceId: string } -export type AddedInterfaceEvent = TypedEvent< - [string, string], - AddedInterfaceEventObject ->; +export type AddedInterfaceEvent = TypedEvent<[string, string], AddedInterfaceEventObject> -export type AddedInterfaceEventFilter = TypedEventFilter; +export type AddedInterfaceEventFilter = TypedEventFilter export interface AddedSafeMethodEventObject { - safe: string; - selector: string; - method: string; + safe: string + selector: string + method: string } -export type AddedSafeMethodEvent = TypedEvent< - [string, string, string], - AddedSafeMethodEventObject ->; +export type AddedSafeMethodEvent = TypedEvent<[string, string, string], AddedSafeMethodEventObject> -export type AddedSafeMethodEventFilter = TypedEventFilter; +export type AddedSafeMethodEventFilter = TypedEventFilter export interface ChangedDomainVerifierEventObject { - safe: string; - domainSeparator: string; - oldVerifier: string; - newVerifier: string; + safe: string + domainSeparator: string + oldVerifier: string + newVerifier: string } -export type ChangedDomainVerifierEvent = TypedEvent< - [string, string, string, string], - ChangedDomainVerifierEventObject ->; +export type ChangedDomainVerifierEvent = TypedEvent<[string, string, string, string], ChangedDomainVerifierEventObject> -export type ChangedDomainVerifierEventFilter = - TypedEventFilter; +export type ChangedDomainVerifierEventFilter = TypedEventFilter export interface ChangedSafeMethodEventObject { - safe: string; - selector: string; - oldMethod: string; - newMethod: string; + safe: string + selector: string + oldMethod: string + newMethod: string } -export type ChangedSafeMethodEvent = TypedEvent< - [string, string, string, string], - ChangedSafeMethodEventObject ->; +export type ChangedSafeMethodEvent = TypedEvent<[string, string, string, string], ChangedSafeMethodEventObject> -export type ChangedSafeMethodEventFilter = - TypedEventFilter; +export type ChangedSafeMethodEventFilter = TypedEventFilter export interface RemovedDomainVerifierEventObject { - safe: string; - domainSeparator: string; + safe: string + domainSeparator: string } -export type RemovedDomainVerifierEvent = TypedEvent< - [string, string], - RemovedDomainVerifierEventObject ->; +export type RemovedDomainVerifierEvent = TypedEvent<[string, string], RemovedDomainVerifierEventObject> -export type RemovedDomainVerifierEventFilter = - TypedEventFilter; +export type RemovedDomainVerifierEventFilter = TypedEventFilter export interface RemovedInterfaceEventObject { - safe: string; - interfaceId: string; + safe: string + interfaceId: string } -export type RemovedInterfaceEvent = TypedEvent< - [string, string], - RemovedInterfaceEventObject ->; +export type RemovedInterfaceEvent = TypedEvent<[string, string], RemovedInterfaceEventObject> -export type RemovedInterfaceEventFilter = - TypedEventFilter; +export type RemovedInterfaceEventFilter = TypedEventFilter export interface RemovedSafeMethodEventObject { - safe: string; - selector: string; + safe: string + selector: string } -export type RemovedSafeMethodEvent = TypedEvent< - [string, string], - RemovedSafeMethodEventObject ->; +export type RemovedSafeMethodEvent = TypedEvent<[string, string], RemovedSafeMethodEventObject> -export type RemovedSafeMethodEventFilter = - TypedEventFilter; +export type RemovedSafeMethodEventFilter = TypedEventFilter export interface ExtensibleFallbackHandler extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise - interface: ExtensibleFallbackHandlerInterface; + interface: ExtensibleFallbackHandlerInterface queryFilter( event: TypedEventFilter, fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; + toBlock?: string | number | undefined, + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent functions: { - domainVerifiers( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + domainVerifiers(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise<[string]> isValidSignature( _hash: BytesLike, signature: BytesLike, - overrides?: CallOverrides - ): Promise<[string] & { magic: string }>; + overrides?: CallOverrides, + ): Promise<[string] & { magic: string }> onERC1155BatchReceived( arg0: string, @@ -322,8 +209,8 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish[], arg3: BigNumberish[], arg4: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + overrides?: CallOverrides, + ): Promise<[string]> onERC1155Received( arg0: string, @@ -331,70 +218,51 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish, arg3: BigNumberish, arg4: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + overrides?: CallOverrides, + ): Promise<[string]> onERC721Received( arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + overrides?: CallOverrides, + ): Promise<[string]> - safeInterfaces( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; + safeInterfaces(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise<[boolean]> - safeMethods( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; + safeMethods(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise<[string]> setDomainVerifier( domainSeparator: BytesLike, newVerifier: string, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSafeMethod( selector: BytesLike, newMethod: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterface( interfaceId: BytesLike, supported: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterfaceBatch( _interfaceId: BytesLike, handlerWithSelectors: BytesLike[], - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]> + } - domainVerifiers( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + domainVerifiers(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - isValidSignature( - _hash: BytesLike, - signature: BytesLike, - overrides?: CallOverrides - ): Promise; + isValidSignature(_hash: BytesLike, signature: BytesLike, overrides?: CallOverrides): Promise onERC1155BatchReceived( arg0: string, @@ -402,8 +270,8 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish[], arg3: BigNumberish[], arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC1155Received( arg0: string, @@ -411,70 +279,51 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish, arg3: BigNumberish, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC721Received( arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - safeInterfaces( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeInterfaces(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - safeMethods( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeMethods(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise setDomainVerifier( domainSeparator: BytesLike, newVerifier: string, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSafeMethod( selector: BytesLike, newMethod: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterface( interfaceId: BytesLike, supported: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterfaceBatch( _interfaceId: BytesLike, handlerWithSelectors: BytesLike[], - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise callStatic: { - domainVerifiers( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + domainVerifiers(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - isValidSignature( - _hash: BytesLike, - signature: BytesLike, - overrides?: CallOverrides - ): Promise; + isValidSignature(_hash: BytesLike, signature: BytesLike, overrides?: CallOverrides): Promise onERC1155BatchReceived( arg0: string, @@ -482,8 +331,8 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish[], arg3: BigNumberish[], arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC1155Received( arg0: string, @@ -491,157 +340,97 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish, arg3: BigNumberish, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC721Received( arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - safeInterfaces( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeInterfaces(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - safeMethods( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeMethods(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - setDomainVerifier( - domainSeparator: BytesLike, - newVerifier: string, - overrides?: CallOverrides - ): Promise; + setDomainVerifier(domainSeparator: BytesLike, newVerifier: string, overrides?: CallOverrides): Promise - setSafeMethod( - selector: BytesLike, - newMethod: BytesLike, - overrides?: CallOverrides - ): Promise; + setSafeMethod(selector: BytesLike, newMethod: BytesLike, overrides?: CallOverrides): Promise - setSupportedInterface( - interfaceId: BytesLike, - supported: boolean, - overrides?: CallOverrides - ): Promise; + setSupportedInterface(interfaceId: BytesLike, supported: boolean, overrides?: CallOverrides): Promise setSupportedInterfaceBatch( _interfaceId: BytesLike, handlerWithSelectors: BytesLike[], - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise + } filters: { - "AddedDomainVerifier(address,bytes32,address)"( - safe?: string | null, - domainSeparator?: null, - verifier?: null - ): AddedDomainVerifierEventFilter; - AddedDomainVerifier( + 'AddedDomainVerifier(address,bytes32,address)'( safe?: string | null, domainSeparator?: null, - verifier?: null - ): AddedDomainVerifierEventFilter; + verifier?: null, + ): AddedDomainVerifierEventFilter + AddedDomainVerifier(safe?: string | null, domainSeparator?: null, verifier?: null): AddedDomainVerifierEventFilter - "AddedInterface(address,bytes4)"( - safe?: string | null, - interfaceId?: null - ): AddedInterfaceEventFilter; - AddedInterface( - safe?: string | null, - interfaceId?: null - ): AddedInterfaceEventFilter; + 'AddedInterface(address,bytes4)'(safe?: string | null, interfaceId?: null): AddedInterfaceEventFilter + AddedInterface(safe?: string | null, interfaceId?: null): AddedInterfaceEventFilter - "AddedSafeMethod(address,bytes4,bytes32)"( - safe?: string | null, - selector?: null, - method?: null - ): AddedSafeMethodEventFilter; - AddedSafeMethod( + 'AddedSafeMethod(address,bytes4,bytes32)'( safe?: string | null, selector?: null, - method?: null - ): AddedSafeMethodEventFilter; + method?: null, + ): AddedSafeMethodEventFilter + AddedSafeMethod(safe?: string | null, selector?: null, method?: null): AddedSafeMethodEventFilter - "ChangedDomainVerifier(address,bytes32,address,address)"( + 'ChangedDomainVerifier(address,bytes32,address,address)'( safe?: string | null, domainSeparator?: null, oldVerifier?: null, - newVerifier?: null - ): ChangedDomainVerifierEventFilter; + newVerifier?: null, + ): ChangedDomainVerifierEventFilter ChangedDomainVerifier( safe?: string | null, domainSeparator?: null, oldVerifier?: null, - newVerifier?: null - ): ChangedDomainVerifierEventFilter; + newVerifier?: null, + ): ChangedDomainVerifierEventFilter - "ChangedSafeMethod(address,bytes4,bytes32,bytes32)"( + 'ChangedSafeMethod(address,bytes4,bytes32,bytes32)'( safe?: string | null, selector?: null, oldMethod?: null, - newMethod?: null - ): ChangedSafeMethodEventFilter; + newMethod?: null, + ): ChangedSafeMethodEventFilter ChangedSafeMethod( safe?: string | null, selector?: null, oldMethod?: null, - newMethod?: null - ): ChangedSafeMethodEventFilter; + newMethod?: null, + ): ChangedSafeMethodEventFilter - "RemovedDomainVerifier(address,bytes32)"( - safe?: string | null, - domainSeparator?: null - ): RemovedDomainVerifierEventFilter; - RemovedDomainVerifier( + 'RemovedDomainVerifier(address,bytes32)'( safe?: string | null, - domainSeparator?: null - ): RemovedDomainVerifierEventFilter; + domainSeparator?: null, + ): RemovedDomainVerifierEventFilter + RemovedDomainVerifier(safe?: string | null, domainSeparator?: null): RemovedDomainVerifierEventFilter - "RemovedInterface(address,bytes4)"( - safe?: string | null, - interfaceId?: null - ): RemovedInterfaceEventFilter; - RemovedInterface( - safe?: string | null, - interfaceId?: null - ): RemovedInterfaceEventFilter; + 'RemovedInterface(address,bytes4)'(safe?: string | null, interfaceId?: null): RemovedInterfaceEventFilter + RemovedInterface(safe?: string | null, interfaceId?: null): RemovedInterfaceEventFilter - "RemovedSafeMethod(address,bytes4)"( - safe?: string | null, - selector?: null - ): RemovedSafeMethodEventFilter; - RemovedSafeMethod( - safe?: string | null, - selector?: null - ): RemovedSafeMethodEventFilter; - }; + 'RemovedSafeMethod(address,bytes4)'(safe?: string | null, selector?: null): RemovedSafeMethodEventFilter + RemovedSafeMethod(safe?: string | null, selector?: null): RemovedSafeMethodEventFilter + } estimateGas: { - domainVerifiers( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + domainVerifiers(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - isValidSignature( - _hash: BytesLike, - signature: BytesLike, - overrides?: CallOverrides - ): Promise; + isValidSignature(_hash: BytesLike, signature: BytesLike, overrides?: CallOverrides): Promise onERC1155BatchReceived( arg0: string, @@ -649,8 +438,8 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish[], arg3: BigNumberish[], arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC1155Received( arg0: string, @@ -658,71 +447,52 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish, arg3: BigNumberish, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC721Received( arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - safeInterfaces( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeInterfaces(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - safeMethods( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeMethods(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise setDomainVerifier( domainSeparator: BytesLike, newVerifier: string, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSafeMethod( selector: BytesLike, newMethod: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterface( interfaceId: BytesLike, supported: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterfaceBatch( _interfaceId: BytesLike, handlerWithSelectors: BytesLike[], - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise + } populateTransaction: { - domainVerifiers( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + domainVerifiers(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - isValidSignature( - _hash: BytesLike, - signature: BytesLike, - overrides?: CallOverrides - ): Promise; + isValidSignature(_hash: BytesLike, signature: BytesLike, overrides?: CallOverrides): Promise onERC1155BatchReceived( arg0: string, @@ -730,8 +500,8 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish[], arg3: BigNumberish[], arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC1155Received( arg0: string, @@ -739,56 +509,45 @@ export interface ExtensibleFallbackHandler extends BaseContract { arg2: BigNumberish, arg3: BigNumberish, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise onERC721Received( arg0: string, arg1: string, arg2: BigNumberish, arg3: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - safeInterfaces( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeInterfaces(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise - safeMethods( - arg0: string, - arg1: BytesLike, - overrides?: CallOverrides - ): Promise; + safeMethods(arg0: string, arg1: BytesLike, overrides?: CallOverrides): Promise setDomainVerifier( domainSeparator: BytesLike, newVerifier: string, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSafeMethod( selector: BytesLike, newMethod: BytesLike, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterface( interfaceId: BytesLike, supported: boolean, - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise setSupportedInterfaceBatch( _interfaceId: BytesLike, handlerWithSelectors: BytesLike[], - overrides?: Overrides & { from?: string } - ): Promise; + overrides?: Overrides & { from?: string }, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise + } } diff --git a/packages/cow-sdk/src/composable/generated/TWAP.ts b/packages/cow-sdk/src/composable/generated/TWAP.ts index e08c76153..30eac2a81 100644 --- a/packages/cow-sdk/src/composable/generated/TWAP.ts +++ b/packages/cow-sdk/src/composable/generated/TWAP.ts @@ -10,49 +10,40 @@ import type { PopulatedTransaction, Signer, utils, -} from "ethers"; -import type { - FunctionFragment, - Result, - EventFragment, -} from "@ethersproject/abi"; -import type { Listener, Provider } from "@ethersproject/providers"; -import type { - TypedEventFilter, - TypedEvent, - TypedListener, - OnEvent, -} from "./common"; +} from 'ethers' +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi' +import type { Listener, Provider } from '@ethersproject/providers' +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common' export declare namespace IConditionalOrder { export type ConditionalOrderParamsStruct = { - handler: string; - salt: BytesLike; - staticInput: BytesLike; - }; + handler: string + salt: BytesLike + staticInput: BytesLike + } export type ConditionalOrderParamsStructOutput = [string, string, string] & { - handler: string; - salt: string; - staticInput: string; - }; + handler: string + salt: string + staticInput: string + } } export declare namespace GPv2Order { export type DataStruct = { - sellToken: string; - buyToken: string; - receiver: string; - sellAmount: BigNumberish; - buyAmount: BigNumberish; - validTo: BigNumberish; - appData: BytesLike; - feeAmount: BigNumberish; - kind: BytesLike; - partiallyFillable: boolean; - sellTokenBalance: BytesLike; - buyTokenBalance: BytesLike; - }; + sellToken: string + buyToken: string + receiver: string + sellAmount: BigNumberish + buyAmount: BigNumberish + validTo: BigNumberish + appData: BytesLike + feeAmount: BigNumberish + kind: BytesLike + partiallyFillable: boolean + sellTokenBalance: BytesLike + buyTokenBalance: BytesLike + } export type DataStructOutput = [ string, @@ -66,110 +57,85 @@ export declare namespace GPv2Order { string, boolean, string, - string + string, ] & { - sellToken: string; - buyToken: string; - receiver: string; - sellAmount: BigNumber; - buyAmount: BigNumber; - validTo: number; - appData: string; - feeAmount: BigNumber; - kind: string; - partiallyFillable: boolean; - sellTokenBalance: string; - buyTokenBalance: string; - }; + sellToken: string + buyToken: string + receiver: string + sellAmount: BigNumber + buyAmount: BigNumber + validTo: number + appData: string + feeAmount: BigNumber + kind: string + partiallyFillable: boolean + sellTokenBalance: string + buyTokenBalance: string + } } export interface TWAPInterface extends utils.Interface { functions: { - "getTradeableOrder(address,address,bytes32,bytes,bytes)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))": FunctionFragment; - }; + 'getTradeableOrder(address,address,bytes32,bytes,bytes)': FunctionFragment + 'supportsInterface(bytes4)': FunctionFragment + 'verify(address,address,bytes32,bytes32,bytes32,bytes,bytes,(address,address,address,uint256,uint256,uint32,bytes32,uint256,bytes32,bool,bytes32,bytes32))': FunctionFragment + } - getFunction( - nameOrSignatureOrTopic: "getTradeableOrder" | "supportsInterface" | "verify" - ): FunctionFragment; + getFunction(nameOrSignatureOrTopic: 'getTradeableOrder' | 'supportsInterface' | 'verify'): FunctionFragment encodeFunctionData( - functionFragment: "getTradeableOrder", - values: [string, string, BytesLike, BytesLike, BytesLike] - ): string; + functionFragment: 'getTradeableOrder', + values: [string, string, BytesLike, BytesLike, BytesLike], + ): string + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "verify", - values: [ - string, - string, - BytesLike, - BytesLike, - BytesLike, - BytesLike, - BytesLike, - GPv2Order.DataStruct - ] - ): string; - - decodeFunctionResult( - functionFragment: "getTradeableOrder", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "verify", data: BytesLike): Result; + functionFragment: 'verify', + values: [string, string, BytesLike, BytesLike, BytesLike, BytesLike, BytesLike, GPv2Order.DataStruct], + ): string + + decodeFunctionResult(functionFragment: 'getTradeableOrder', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result + decodeFunctionResult(functionFragment: 'verify', data: BytesLike): Result events: { - "ConditionalOrderCreated(address,(address,bytes32,bytes))": EventFragment; - }; + 'ConditionalOrderCreated(address,(address,bytes32,bytes))': EventFragment + } - getEvent(nameOrSignatureOrTopic: "ConditionalOrderCreated"): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ConditionalOrderCreated'): EventFragment } export interface ConditionalOrderCreatedEventObject { - owner: string; - params: IConditionalOrder.ConditionalOrderParamsStructOutput; + owner: string + params: IConditionalOrder.ConditionalOrderParamsStructOutput } export type ConditionalOrderCreatedEvent = TypedEvent< [string, IConditionalOrder.ConditionalOrderParamsStructOutput], ConditionalOrderCreatedEventObject ->; +> -export type ConditionalOrderCreatedEventFilter = - TypedEventFilter; +export type ConditionalOrderCreatedEventFilter = TypedEventFilter export interface TWAP extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; + connect(signerOrProvider: Signer | Provider | string): this + attach(addressOrName: string): this + deployed(): Promise - interface: TWAPInterface; + interface: TWAPInterface queryFilter( event: TypedEventFilter, fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; + toBlock?: string | number | undefined, + ): Promise> + + listeners(eventFilter?: TypedEventFilter): Array> + listeners(eventName?: string): Array + removeAllListeners(eventFilter: TypedEventFilter): this + removeAllListeners(eventName?: string): this + off: OnEvent + on: OnEvent + once: OnEvent + removeListener: OnEvent functions: { getTradeableOrder( @@ -178,15 +144,10 @@ export interface TWAP extends BaseContract { ctx: BytesLike, staticInput: BytesLike, arg4: BytesLike, - overrides?: CallOverrides - ): Promise< - [GPv2Order.DataStructOutput] & { order: GPv2Order.DataStructOutput } - >; + overrides?: CallOverrides, + ): Promise<[GPv2Order.DataStructOutput] & { order: GPv2Order.DataStructOutput }> - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]> verify( owner: string, @@ -197,9 +158,9 @@ export interface TWAP extends BaseContract { staticInput: BytesLike, offchainInput: BytesLike, arg7: GPv2Order.DataStruct, - overrides?: CallOverrides - ): Promise<[void]>; - }; + overrides?: CallOverrides, + ): Promise<[void]> + } getTradeableOrder( owner: string, @@ -207,13 +168,10 @@ export interface TWAP extends BaseContract { ctx: BytesLike, staticInput: BytesLike, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise verify( owner: string, @@ -224,8 +182,8 @@ export interface TWAP extends BaseContract { staticInput: BytesLike, offchainInput: BytesLike, arg7: GPv2Order.DataStruct, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise callStatic: { getTradeableOrder( @@ -234,13 +192,10 @@ export interface TWAP extends BaseContract { ctx: BytesLike, staticInput: BytesLike, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise verify( owner: string, @@ -251,20 +206,17 @@ export interface TWAP extends BaseContract { staticInput: BytesLike, offchainInput: BytesLike, arg7: GPv2Order.DataStruct, - overrides?: CallOverrides - ): Promise; - }; + overrides?: CallOverrides, + ): Promise + } filters: { - "ConditionalOrderCreated(address,(address,bytes32,bytes))"( - owner?: string | null, - params?: null - ): ConditionalOrderCreatedEventFilter; - ConditionalOrderCreated( + 'ConditionalOrderCreated(address,(address,bytes32,bytes))'( owner?: string | null, - params?: null - ): ConditionalOrderCreatedEventFilter; - }; + params?: null, + ): ConditionalOrderCreatedEventFilter + ConditionalOrderCreated(owner?: string | null, params?: null): ConditionalOrderCreatedEventFilter + } estimateGas: { getTradeableOrder( @@ -273,13 +225,10 @@ export interface TWAP extends BaseContract { ctx: BytesLike, staticInput: BytesLike, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise verify( owner: string, @@ -290,9 +239,9 @@ export interface TWAP extends BaseContract { staticInput: BytesLike, offchainInput: BytesLike, arg7: GPv2Order.DataStruct, - overrides?: CallOverrides - ): Promise; - }; + overrides?: CallOverrides, + ): Promise + } populateTransaction: { getTradeableOrder( @@ -301,13 +250,10 @@ export interface TWAP extends BaseContract { ctx: BytesLike, staticInput: BytesLike, arg4: BytesLike, - overrides?: CallOverrides - ): Promise; + overrides?: CallOverrides, + ): Promise - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise verify( owner: string, @@ -318,7 +264,7 @@ export interface TWAP extends BaseContract { staticInput: BytesLike, offchainInput: BytesLike, arg7: GPv2Order.DataStruct, - overrides?: CallOverrides - ): Promise; - }; + overrides?: CallOverrides, + ): Promise + } } diff --git a/packages/cow-sdk/src/composable/generated/common.ts b/packages/cow-sdk/src/composable/generated/common.ts index 2fc40c7fb..70a550de4 100644 --- a/packages/cow-sdk/src/composable/generated/common.ts +++ b/packages/cow-sdk/src/composable/generated/common.ts @@ -1,44 +1,30 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type { Listener } from "@ethersproject/providers"; -import type { Event, EventFilter } from "ethers"; - -export interface TypedEvent< - TArgsArray extends Array = any, - TArgsObject = any -> extends Event { - args: TArgsArray & TArgsObject; +import type { Listener } from '@ethersproject/providers' +import type { Event, EventFilter } from 'ethers' + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject } -export interface TypedEventFilter<_TEvent extends TypedEvent> - extends EventFilter {} +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} export interface TypedListener { - (...listenerArg: [...__TypechainArgsArray, TEvent]): void; + (...listenerArg: [...__TypechainArgsArray, TEvent]): void } -type __TypechainArgsArray = T extends TypedEvent ? U : never; +type __TypechainArgsArray = T extends TypedEvent ? U : never export interface OnEvent { - ( - eventFilter: TypedEventFilter, - listener: TypedListener - ): TRes; - (eventName: string, listener: Listener): TRes; + (eventFilter: TypedEventFilter, listener: TypedListener): TRes + (eventName: string, listener: Listener): TRes } export type MinEthersFactory = { - deploy(...a: ARGS[]): Promise; -}; - -export type GetContractTypeFromFactory = F extends MinEthersFactory< - infer C, - any -> - ? C - : never; - -export type GetARGsTypeFromFactory = F extends MinEthersFactory - ? Parameters - : never; + deploy(...a: ARGS[]): Promise +} + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never diff --git a/packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts b/packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts index e942a7712..91dbf1c3f 100644 --- a/packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts +++ b/packages/cow-sdk/src/composable/generated/factories/ComposableCoW__factory.ts @@ -2,628 +2,625 @@ /* tslint:disable */ /* eslint-disable */ -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { ComposableCoW, ComposableCoWInterface } from "../ComposableCoW"; +import { Contract, Signer, utils } from 'ethers' +import type { Provider } from '@ethersproject/providers' +import type { ComposableCoW, ComposableCoWInterface } from '../ComposableCoW' const _abi = [ { inputs: [ { - internalType: "address", - name: "_settlement", - type: "address", + internalType: 'address', + name: '_settlement', + type: 'address', }, ], - stateMutability: "nonpayable", - type: "constructor", + stateMutability: 'nonpayable', + type: 'constructor', }, { inputs: [], - name: "InterfaceNotSupported", - type: "error", + name: 'InterfaceNotSupported', + type: 'error', }, { inputs: [], - name: "InvalidHandler", - type: "error", + name: 'InvalidHandler', + type: 'error', }, { inputs: [], - name: "ProofNotAuthed", - type: "error", + name: 'ProofNotAuthed', + type: 'error', }, { inputs: [], - name: "SingleOrderNotAuthed", - type: "error", + name: 'SingleOrderNotAuthed', + type: 'error', }, { inputs: [], - name: "SwapGuardRestricted", - type: "error", + name: 'SwapGuardRestricted', + type: 'error', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], indexed: false, - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, ], - name: "ConditionalOrderCreated", - type: "event", + name: 'ConditionalOrderCreated', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { indexed: false, - internalType: "bytes32", - name: "root", - type: "bytes32", + internalType: 'bytes32', + name: 'root', + type: 'bytes32', }, { components: [ { - internalType: "uint256", - name: "location", - type: "uint256", + internalType: 'uint256', + name: 'location', + type: 'uint256', }, { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: 'bytes', + name: 'data', + type: 'bytes', }, ], indexed: false, - internalType: "struct ComposableCoW.Proof", - name: "proof", - type: "tuple", + internalType: 'struct ComposableCoW.Proof', + name: 'proof', + type: 'tuple', }, ], - name: "MerkleRootSet", - type: "event", + name: 'MerkleRootSet', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { indexed: false, - internalType: "contract ISwapGuard", - name: "swapGuard", - type: "address", + internalType: 'contract ISwapGuard', + name: 'swapGuard', + type: 'address', }, ], - name: "SwapGuardSet", - type: "event", + name: 'SwapGuardSet', + type: 'event', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - name: "cabinet", + name: 'cabinet', outputs: [ { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, { - internalType: "bool", - name: "dispatch", - type: "bool", + internalType: 'bool', + name: 'dispatch', + type: 'bool', }, ], - name: "create", + name: 'create', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, { - internalType: "contract IValueFactory", - name: "factory", - type: "address", + internalType: 'contract IValueFactory', + name: 'factory', + type: 'address', }, { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: 'bytes', + name: 'data', + type: 'bytes', }, { - internalType: "bool", - name: "dispatch", - type: "bool", + internalType: 'bool', + name: 'dispatch', + type: 'bool', }, ], - name: "createWithContext", + name: 'createWithContext', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [], - name: "domainSeparator", + name: 'domainSeparator', outputs: [ { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, { - internalType: "bytes", - name: "offchainInput", - type: "bytes", + internalType: 'bytes', + name: 'offchainInput', + type: 'bytes', }, { - internalType: "bytes32[]", - name: "proof", - type: "bytes32[]", + internalType: 'bytes32[]', + name: 'proof', + type: 'bytes32[]', }, ], - name: "getTradeableOrderWithSignature", + name: 'getTradeableOrderWithSignature', outputs: [ { components: [ { - internalType: "contract IERC20", - name: "sellToken", - type: "address", + internalType: 'contract IERC20', + name: 'sellToken', + type: 'address', }, { - internalType: "contract IERC20", - name: "buyToken", - type: "address", + internalType: 'contract IERC20', + name: 'buyToken', + type: 'address', }, { - internalType: "address", - name: "receiver", - type: "address", + internalType: 'address', + name: 'receiver', + type: 'address', }, { - internalType: "uint256", - name: "sellAmount", - type: "uint256", + internalType: 'uint256', + name: 'sellAmount', + type: 'uint256', }, { - internalType: "uint256", - name: "buyAmount", - type: "uint256", + internalType: 'uint256', + name: 'buyAmount', + type: 'uint256', }, { - internalType: "uint32", - name: "validTo", - type: "uint32", + internalType: 'uint32', + name: 'validTo', + type: 'uint32', }, { - internalType: "bytes32", - name: "appData", - type: "bytes32", + internalType: 'bytes32', + name: 'appData', + type: 'bytes32', }, { - internalType: "uint256", - name: "feeAmount", - type: "uint256", + internalType: 'uint256', + name: 'feeAmount', + type: 'uint256', }, { - internalType: "bytes32", - name: "kind", - type: "bytes32", + internalType: 'bytes32', + name: 'kind', + type: 'bytes32', }, { - internalType: "bool", - name: "partiallyFillable", - type: "bool", + internalType: 'bool', + name: 'partiallyFillable', + type: 'bool', }, { - internalType: "bytes32", - name: "sellTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'sellTokenBalance', + type: 'bytes32', }, { - internalType: "bytes32", - name: "buyTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'buyTokenBalance', + type: 'bytes32', }, ], - internalType: "struct GPv2Order.Data", - name: "order", - type: "tuple", + internalType: 'struct GPv2Order.Data', + name: 'order', + type: 'tuple', }, { - internalType: "bytes", - name: "signature", - type: "bytes", + internalType: 'bytes', + name: 'signature', + type: 'bytes', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, ], - name: "hash", + name: 'hash', outputs: [ { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - stateMutability: "pure", - type: "function", + stateMutability: 'pure', + type: 'function', }, { inputs: [ { - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { - internalType: "address", - name: "sender", - type: "address", + internalType: 'address', + name: 'sender', + type: 'address', }, { - internalType: "bytes32", - name: "_hash", - type: "bytes32", + internalType: 'bytes32', + name: '_hash', + type: 'bytes32', }, { - internalType: "bytes32", - name: "_domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: '_domainSeparator', + type: 'bytes32', }, { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, { - internalType: "bytes", - name: "encodeData", - type: "bytes", + internalType: 'bytes', + name: 'encodeData', + type: 'bytes', }, { - internalType: "bytes", - name: "payload", - type: "bytes", + internalType: 'bytes', + name: 'payload', + type: 'bytes', }, ], - name: "isValidSafeSignature", + name: 'isValidSafeSignature', outputs: [ { - internalType: "bytes4", - name: "magic", - type: "bytes4", + internalType: 'bytes4', + name: 'magic', + type: 'bytes4', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "bytes32", - name: "singleOrderHash", - type: "bytes32", + internalType: 'bytes32', + name: 'singleOrderHash', + type: 'bytes32', }, ], - name: "remove", + name: 'remove', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, ], - name: "roots", + name: 'roots', outputs: [ { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "bytes32", - name: "root", - type: "bytes32", + internalType: 'bytes32', + name: 'root', + type: 'bytes32', }, { components: [ { - internalType: "uint256", - name: "location", - type: "uint256", + internalType: 'uint256', + name: 'location', + type: 'uint256', }, { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: 'bytes', + name: 'data', + type: 'bytes', }, ], - internalType: "struct ComposableCoW.Proof", - name: "proof", - type: "tuple", + internalType: 'struct ComposableCoW.Proof', + name: 'proof', + type: 'tuple', }, ], - name: "setRoot", + name: 'setRoot', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "bytes32", - name: "root", - type: "bytes32", + internalType: 'bytes32', + name: 'root', + type: 'bytes32', }, { components: [ { - internalType: "uint256", - name: "location", - type: "uint256", + internalType: 'uint256', + name: 'location', + type: 'uint256', }, { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: 'bytes', + name: 'data', + type: 'bytes', }, ], - internalType: "struct ComposableCoW.Proof", - name: "proof", - type: "tuple", + internalType: 'struct ComposableCoW.Proof', + name: 'proof', + type: 'tuple', }, { - internalType: "contract IValueFactory", - name: "factory", - type: "address", + internalType: 'contract IValueFactory', + name: 'factory', + type: 'address', }, { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: 'bytes', + name: 'data', + type: 'bytes', }, ], - name: "setRootWithContext", + name: 'setRootWithContext', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "contract ISwapGuard", - name: "swapGuard", - type: "address", + internalType: 'contract ISwapGuard', + name: 'swapGuard', + type: 'address', }, ], - name: "setSwapGuard", + name: 'setSwapGuard', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - name: "singleOrders", + name: 'singleOrders', outputs: [ { - internalType: "bool", - name: "", - type: "bool", + internalType: 'bool', + name: '', + type: 'bool', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, ], - name: "swapGuards", + name: 'swapGuards', outputs: [ { - internalType: "contract ISwapGuard", - name: "", - type: "address", + internalType: 'contract ISwapGuard', + name: '', + type: 'address', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, -] as const; +] as const export class ComposableCoW__factory { - static readonly abi = _abi; + static readonly abi = _abi static createInterface(): ComposableCoWInterface { - return new utils.Interface(_abi) as ComposableCoWInterface; + return new utils.Interface(_abi) as ComposableCoWInterface } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ComposableCoW { - return new Contract(address, _abi, signerOrProvider) as ComposableCoW; + static connect(address: string, signerOrProvider: Signer | Provider): ComposableCoW { + return new Contract(address, _abi, signerOrProvider) as ComposableCoW } } diff --git a/packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts b/packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts index a5b3684fc..dde49d87a 100644 --- a/packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts +++ b/packages/cow-sdk/src/composable/generated/factories/ExtensibleFallbackHandler__factory.ts @@ -2,12 +2,9 @@ /* tslint:disable */ /* eslint-disable */ -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { - ExtensibleFallbackHandler, - ExtensibleFallbackHandlerInterface, -} from "../ExtensibleFallbackHandler"; +import { Contract, Signer, utils } from 'ethers' +import type { Provider } from '@ethersproject/providers' +import type { ExtensibleFallbackHandler, ExtensibleFallbackHandlerInterface } from '../ExtensibleFallbackHandler' const _abi = [ { @@ -15,507 +12,500 @@ const _abi = [ inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes32", - name: "domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: 'domainSeparator', + type: 'bytes32', }, { indexed: false, - internalType: "contract ISafeSignatureVerifier", - name: "verifier", - type: "address", + internalType: 'contract ISafeSignatureVerifier', + name: 'verifier', + type: 'address', }, ], - name: "AddedDomainVerifier", - type: "event", + name: 'AddedDomainVerifier', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', }, ], - name: "AddedInterface", - type: "event", + name: 'AddedInterface', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes4", - name: "selector", - type: "bytes4", + internalType: 'bytes4', + name: 'selector', + type: 'bytes4', }, { indexed: false, - internalType: "bytes32", - name: "method", - type: "bytes32", + internalType: 'bytes32', + name: 'method', + type: 'bytes32', }, ], - name: "AddedSafeMethod", - type: "event", + name: 'AddedSafeMethod', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes32", - name: "domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: 'domainSeparator', + type: 'bytes32', }, { indexed: false, - internalType: "contract ISafeSignatureVerifier", - name: "oldVerifier", - type: "address", + internalType: 'contract ISafeSignatureVerifier', + name: 'oldVerifier', + type: 'address', }, { indexed: false, - internalType: "contract ISafeSignatureVerifier", - name: "newVerifier", - type: "address", + internalType: 'contract ISafeSignatureVerifier', + name: 'newVerifier', + type: 'address', }, ], - name: "ChangedDomainVerifier", - type: "event", + name: 'ChangedDomainVerifier', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes4", - name: "selector", - type: "bytes4", + internalType: 'bytes4', + name: 'selector', + type: 'bytes4', }, { indexed: false, - internalType: "bytes32", - name: "oldMethod", - type: "bytes32", + internalType: 'bytes32', + name: 'oldMethod', + type: 'bytes32', }, { indexed: false, - internalType: "bytes32", - name: "newMethod", - type: "bytes32", + internalType: 'bytes32', + name: 'newMethod', + type: 'bytes32', }, ], - name: "ChangedSafeMethod", - type: "event", + name: 'ChangedSafeMethod', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes32", - name: "domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: 'domainSeparator', + type: 'bytes32', }, ], - name: "RemovedDomainVerifier", - type: "event", + name: 'RemovedDomainVerifier', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', }, ], - name: "RemovedInterface", - type: "event", + name: 'RemovedInterface', + type: 'event', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "contract Safe", - name: "safe", - type: "address", + internalType: 'contract Safe', + name: 'safe', + type: 'address', }, { indexed: false, - internalType: "bytes4", - name: "selector", - type: "bytes4", + internalType: 'bytes4', + name: 'selector', + type: 'bytes4', }, ], - name: "RemovedSafeMethod", - type: "event", + name: 'RemovedSafeMethod', + type: 'event', }, { - stateMutability: "nonpayable", - type: "fallback", + stateMutability: 'nonpayable', + type: 'fallback', }, { inputs: [ { - internalType: "contract Safe", - name: "", - type: "address", + internalType: 'contract Safe', + name: '', + type: 'address', }, { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - name: "domainVerifiers", + name: 'domainVerifiers', outputs: [ { - internalType: "contract ISafeSignatureVerifier", - name: "", - type: "address", + internalType: 'contract ISafeSignatureVerifier', + name: '', + type: 'address', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "bytes32", - name: "_hash", - type: "bytes32", + internalType: 'bytes32', + name: '_hash', + type: 'bytes32', }, { - internalType: "bytes", - name: "signature", - type: "bytes", + internalType: 'bytes', + name: 'signature', + type: 'bytes', }, ], - name: "isValidSignature", + name: 'isValidSignature', outputs: [ { - internalType: "bytes4", - name: "magic", - type: "bytes4", + internalType: 'bytes4', + name: 'magic', + type: 'bytes4', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "uint256[]", - name: "", - type: "uint256[]", + internalType: 'uint256[]', + name: '', + type: 'uint256[]', }, { - internalType: "uint256[]", - name: "", - type: "uint256[]", + internalType: 'uint256[]', + name: '', + type: 'uint256[]', }, { - internalType: "bytes", - name: "", - type: "bytes", + internalType: 'bytes', + name: '', + type: 'bytes', }, ], - name: "onERC1155BatchReceived", + name: 'onERC1155BatchReceived', outputs: [ { - internalType: "bytes4", - name: "", - type: "bytes4", + internalType: 'bytes4', + name: '', + type: 'bytes4', }, ], - stateMutability: "pure", - type: "function", + stateMutability: 'pure', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "uint256", - name: "", - type: "uint256", + internalType: 'uint256', + name: '', + type: 'uint256', }, { - internalType: "uint256", - name: "", - type: "uint256", + internalType: 'uint256', + name: '', + type: 'uint256', }, { - internalType: "bytes", - name: "", - type: "bytes", + internalType: 'bytes', + name: '', + type: 'bytes', }, ], - name: "onERC1155Received", + name: 'onERC1155Received', outputs: [ { - internalType: "bytes4", - name: "", - type: "bytes4", + internalType: 'bytes4', + name: '', + type: 'bytes4', }, ], - stateMutability: "pure", - type: "function", + stateMutability: 'pure', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "uint256", - name: "", - type: "uint256", + internalType: 'uint256', + name: '', + type: 'uint256', }, { - internalType: "bytes", - name: "", - type: "bytes", + internalType: 'bytes', + name: '', + type: 'bytes', }, ], - name: "onERC721Received", + name: 'onERC721Received', outputs: [ { - internalType: "bytes4", - name: "", - type: "bytes4", + internalType: 'bytes4', + name: '', + type: 'bytes4', }, ], - stateMutability: "pure", - type: "function", + stateMutability: 'pure', + type: 'function', }, { inputs: [ { - internalType: "contract Safe", - name: "", - type: "address", + internalType: 'contract Safe', + name: '', + type: 'address', }, { - internalType: "bytes4", - name: "", - type: "bytes4", + internalType: 'bytes4', + name: '', + type: 'bytes4', }, ], - name: "safeInterfaces", + name: 'safeInterfaces', outputs: [ { - internalType: "bool", - name: "", - type: "bool", + internalType: 'bool', + name: '', + type: 'bool', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "contract Safe", - name: "", - type: "address", + internalType: 'contract Safe', + name: '', + type: 'address', }, { - internalType: "bytes4", - name: "", - type: "bytes4", + internalType: 'bytes4', + name: '', + type: 'bytes4', }, ], - name: "safeMethods", + name: 'safeMethods', outputs: [ { - internalType: "bytes32", - name: "", - type: "bytes32", + internalType: 'bytes32', + name: '', + type: 'bytes32', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "bytes32", - name: "domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: 'domainSeparator', + type: 'bytes32', }, { - internalType: "contract ISafeSignatureVerifier", - name: "newVerifier", - type: "address", + internalType: 'contract ISafeSignatureVerifier', + name: 'newVerifier', + type: 'address', }, ], - name: "setDomainVerifier", + name: 'setDomainVerifier', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "bytes4", - name: "selector", - type: "bytes4", + internalType: 'bytes4', + name: 'selector', + type: 'bytes4', }, { - internalType: "bytes32", - name: "newMethod", - type: "bytes32", + internalType: 'bytes32', + name: 'newMethod', + type: 'bytes32', }, ], - name: "setSafeMethod", + name: 'setSafeMethod', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', }, { - internalType: "bool", - name: "supported", - type: "bool", + internalType: 'bool', + name: 'supported', + type: 'bool', }, ], - name: "setSupportedInterface", + name: 'setSupportedInterface', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "bytes4", - name: "_interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: '_interfaceId', + type: 'bytes4', }, { - internalType: "bytes32[]", - name: "handlerWithSelectors", - type: "bytes32[]", + internalType: 'bytes32[]', + name: 'handlerWithSelectors', + type: 'bytes32[]', }, ], - name: "setSupportedInterfaceBatch", + name: 'setSupportedInterfaceBatch', outputs: [], - stateMutability: "nonpayable", - type: "function", + stateMutability: 'nonpayable', + type: 'function', }, { inputs: [ { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', }, ], - name: "supportsInterface", + name: 'supportsInterface', outputs: [ { - internalType: "bool", - name: "", - type: "bool", + internalType: 'bool', + name: '', + type: 'bool', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, -] as const; +] as const export class ExtensibleFallbackHandler__factory { - static readonly abi = _abi; + static readonly abi = _abi static createInterface(): ExtensibleFallbackHandlerInterface { - return new utils.Interface(_abi) as ExtensibleFallbackHandlerInterface; + return new utils.Interface(_abi) as ExtensibleFallbackHandlerInterface } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ExtensibleFallbackHandler { - return new Contract( - address, - _abi, - signerOrProvider - ) as ExtensibleFallbackHandler; + static connect(address: string, signerOrProvider: Signer | Provider): ExtensibleFallbackHandler { + return new Contract(address, _abi, signerOrProvider) as ExtensibleFallbackHandler } } diff --git a/packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts b/packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts index f1a0a8aed..9a25f7925 100644 --- a/packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts +++ b/packages/cow-sdk/src/composable/generated/factories/TWAP__factory.ts @@ -2,341 +2,341 @@ /* tslint:disable */ /* eslint-disable */ -import { Contract, Signer, utils } from "ethers"; -import type { Provider } from "@ethersproject/providers"; -import type { TWAP, TWAPInterface } from "../TWAP"; +import { Contract, Signer, utils } from 'ethers' +import type { Provider } from '@ethersproject/providers' +import type { TWAP, TWAPInterface } from '../TWAP' const _abi = [ { inputs: [ { - internalType: "contract ComposableCoW", - name: "_composableCow", - type: "address", + internalType: 'contract ComposableCoW', + name: '_composableCow', + type: 'address', }, ], - stateMutability: "nonpayable", - type: "constructor", + stateMutability: 'nonpayable', + type: 'constructor', }, { inputs: [], - name: "InvalidFrequency", - type: "error", + name: 'InvalidFrequency', + type: 'error', }, { inputs: [], - name: "InvalidMinPartLimit", - type: "error", + name: 'InvalidMinPartLimit', + type: 'error', }, { inputs: [], - name: "InvalidNumParts", - type: "error", + name: 'InvalidNumParts', + type: 'error', }, { inputs: [], - name: "InvalidPartSellAmount", - type: "error", + name: 'InvalidPartSellAmount', + type: 'error', }, { inputs: [], - name: "InvalidSameToken", - type: "error", + name: 'InvalidSameToken', + type: 'error', }, { inputs: [], - name: "InvalidSpan", - type: "error", + name: 'InvalidSpan', + type: 'error', }, { inputs: [], - name: "InvalidStartTime", - type: "error", + name: 'InvalidStartTime', + type: 'error', }, { inputs: [], - name: "InvalidToken", - type: "error", + name: 'InvalidToken', + type: 'error', }, { inputs: [], - name: "OrderNotValid", - type: "error", + name: 'OrderNotValid', + type: 'error', }, { anonymous: false, inputs: [ { indexed: true, - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { components: [ { - internalType: "contract IConditionalOrder", - name: "handler", - type: "address", + internalType: 'contract IConditionalOrder', + name: 'handler', + type: 'address', }, { - internalType: "bytes32", - name: "salt", - type: "bytes32", + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, ], indexed: false, - internalType: "struct IConditionalOrder.ConditionalOrderParams", - name: "params", - type: "tuple", + internalType: 'struct IConditionalOrder.ConditionalOrderParams', + name: 'params', + type: 'tuple', }, ], - name: "ConditionalOrderCreated", - type: "event", + name: 'ConditionalOrderCreated', + type: 'event', }, { inputs: [ { - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { - internalType: "address", - name: "", - type: "address", + internalType: 'address', + name: '', + type: 'address', }, { - internalType: "bytes32", - name: "ctx", - type: "bytes32", + internalType: 'bytes32', + name: 'ctx', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, { - internalType: "bytes", - name: "", - type: "bytes", + internalType: 'bytes', + name: '', + type: 'bytes', }, ], - name: "getTradeableOrder", + name: 'getTradeableOrder', outputs: [ { components: [ { - internalType: "contract IERC20", - name: "sellToken", - type: "address", + internalType: 'contract IERC20', + name: 'sellToken', + type: 'address', }, { - internalType: "contract IERC20", - name: "buyToken", - type: "address", + internalType: 'contract IERC20', + name: 'buyToken', + type: 'address', }, { - internalType: "address", - name: "receiver", - type: "address", + internalType: 'address', + name: 'receiver', + type: 'address', }, { - internalType: "uint256", - name: "sellAmount", - type: "uint256", + internalType: 'uint256', + name: 'sellAmount', + type: 'uint256', }, { - internalType: "uint256", - name: "buyAmount", - type: "uint256", + internalType: 'uint256', + name: 'buyAmount', + type: 'uint256', }, { - internalType: "uint32", - name: "validTo", - type: "uint32", + internalType: 'uint32', + name: 'validTo', + type: 'uint32', }, { - internalType: "bytes32", - name: "appData", - type: "bytes32", + internalType: 'bytes32', + name: 'appData', + type: 'bytes32', }, { - internalType: "uint256", - name: "feeAmount", - type: "uint256", + internalType: 'uint256', + name: 'feeAmount', + type: 'uint256', }, { - internalType: "bytes32", - name: "kind", - type: "bytes32", + internalType: 'bytes32', + name: 'kind', + type: 'bytes32', }, { - internalType: "bool", - name: "partiallyFillable", - type: "bool", + internalType: 'bool', + name: 'partiallyFillable', + type: 'bool', }, { - internalType: "bytes32", - name: "sellTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'sellTokenBalance', + type: 'bytes32', }, { - internalType: "bytes32", - name: "buyTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'buyTokenBalance', + type: 'bytes32', }, ], - internalType: "struct GPv2Order.Data", - name: "order", - type: "tuple", + internalType: 'struct GPv2Order.Data', + name: 'order', + type: 'tuple', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', }, ], - name: "supportsInterface", + name: 'supportsInterface', outputs: [ { - internalType: "bool", - name: "", - type: "bool", + internalType: 'bool', + name: '', + type: 'bool', }, ], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, { inputs: [ { - internalType: "address", - name: "owner", - type: "address", + internalType: 'address', + name: 'owner', + type: 'address', }, { - internalType: "address", - name: "sender", - type: "address", + internalType: 'address', + name: 'sender', + type: 'address', }, { - internalType: "bytes32", - name: "_hash", - type: "bytes32", + internalType: 'bytes32', + name: '_hash', + type: 'bytes32', }, { - internalType: "bytes32", - name: "domainSeparator", - type: "bytes32", + internalType: 'bytes32', + name: 'domainSeparator', + type: 'bytes32', }, { - internalType: "bytes32", - name: "ctx", - type: "bytes32", + internalType: 'bytes32', + name: 'ctx', + type: 'bytes32', }, { - internalType: "bytes", - name: "staticInput", - type: "bytes", + internalType: 'bytes', + name: 'staticInput', + type: 'bytes', }, { - internalType: "bytes", - name: "offchainInput", - type: "bytes", + internalType: 'bytes', + name: 'offchainInput', + type: 'bytes', }, { components: [ { - internalType: "contract IERC20", - name: "sellToken", - type: "address", + internalType: 'contract IERC20', + name: 'sellToken', + type: 'address', }, { - internalType: "contract IERC20", - name: "buyToken", - type: "address", + internalType: 'contract IERC20', + name: 'buyToken', + type: 'address', }, { - internalType: "address", - name: "receiver", - type: "address", + internalType: 'address', + name: 'receiver', + type: 'address', }, { - internalType: "uint256", - name: "sellAmount", - type: "uint256", + internalType: 'uint256', + name: 'sellAmount', + type: 'uint256', }, { - internalType: "uint256", - name: "buyAmount", - type: "uint256", + internalType: 'uint256', + name: 'buyAmount', + type: 'uint256', }, { - internalType: "uint32", - name: "validTo", - type: "uint32", + internalType: 'uint32', + name: 'validTo', + type: 'uint32', }, { - internalType: "bytes32", - name: "appData", - type: "bytes32", + internalType: 'bytes32', + name: 'appData', + type: 'bytes32', }, { - internalType: "uint256", - name: "feeAmount", - type: "uint256", + internalType: 'uint256', + name: 'feeAmount', + type: 'uint256', }, { - internalType: "bytes32", - name: "kind", - type: "bytes32", + internalType: 'bytes32', + name: 'kind', + type: 'bytes32', }, { - internalType: "bool", - name: "partiallyFillable", - type: "bool", + internalType: 'bool', + name: 'partiallyFillable', + type: 'bool', }, { - internalType: "bytes32", - name: "sellTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'sellTokenBalance', + type: 'bytes32', }, { - internalType: "bytes32", - name: "buyTokenBalance", - type: "bytes32", + internalType: 'bytes32', + name: 'buyTokenBalance', + type: 'bytes32', }, ], - internalType: "struct GPv2Order.Data", - name: "", - type: "tuple", + internalType: 'struct GPv2Order.Data', + name: '', + type: 'tuple', }, ], - name: "verify", + name: 'verify', outputs: [], - stateMutability: "view", - type: "function", + stateMutability: 'view', + type: 'function', }, -] as const; +] as const export class TWAP__factory { - static readonly abi = _abi; + static readonly abi = _abi static createInterface(): TWAPInterface { - return new utils.Interface(_abi) as TWAPInterface; + return new utils.Interface(_abi) as TWAPInterface } static connect(address: string, signerOrProvider: Signer | Provider): TWAP { - return new Contract(address, _abi, signerOrProvider) as TWAP; + return new Contract(address, _abi, signerOrProvider) as TWAP } } diff --git a/packages/cow-sdk/src/composable/generated/factories/index.ts b/packages/cow-sdk/src/composable/generated/factories/index.ts index 1051d1212..06d878bc4 100644 --- a/packages/cow-sdk/src/composable/generated/factories/index.ts +++ b/packages/cow-sdk/src/composable/generated/factories/index.ts @@ -1,6 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export { ComposableCoW__factory } from "./ComposableCoW__factory"; -export { ExtensibleFallbackHandler__factory } from "./ExtensibleFallbackHandler__factory"; -export { TWAP__factory } from "./TWAP__factory"; +export { ComposableCoW__factory } from './ComposableCoW__factory' +export { ExtensibleFallbackHandler__factory } from './ExtensibleFallbackHandler__factory' +export { TWAP__factory } from './TWAP__factory' diff --git a/packages/cow-sdk/src/composable/generated/index.ts b/packages/cow-sdk/src/composable/generated/index.ts index 0bd58a816..bca1df4cc 100644 --- a/packages/cow-sdk/src/composable/generated/index.ts +++ b/packages/cow-sdk/src/composable/generated/index.ts @@ -1,10 +1,10 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { ComposableCoW } from "./ComposableCoW"; -export type { ExtensibleFallbackHandler } from "./ExtensibleFallbackHandler"; -export type { TWAP } from "./TWAP"; -export * as factories from "./factories"; -export { ComposableCoW__factory } from "./factories/ComposableCoW__factory"; -export { ExtensibleFallbackHandler__factory } from "./factories/ExtensibleFallbackHandler__factory"; -export { TWAP__factory } from "./factories/TWAP__factory"; +export type { ComposableCoW } from './ComposableCoW' +export type { ExtensibleFallbackHandler } from './ExtensibleFallbackHandler' +export type { TWAP } from './TWAP' +export * as factories from './factories' +export { ComposableCoW__factory } from './factories/ComposableCoW__factory' +export { ExtensibleFallbackHandler__factory } from './factories/ExtensibleFallbackHandler__factory' +export { TWAP__factory } from './factories/TWAP__factory' diff --git a/packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts b/packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts index 7fbe0eb03..7d5fba7e9 100644 --- a/packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts +++ b/packages/cow-sdk/src/composable/orderTypes/Twap.spec.ts @@ -78,7 +78,7 @@ describe('Constructor', () => { test('Create Twap with invalid handler', () => { expect(() => new Twap({ handler: '0xdeaddeaddeaddeaddeaddeaddeaddeaddeaddead', data: TWAP_PARAMS_TEST })).toThrow( - 'InvalidHandler' + 'InvalidHandler', ) }) }) @@ -125,7 +125,7 @@ describe('Id', () => { test('Id changes for different params and same salt', () => { const twap = Twap.fromData( { ...TWAP_PARAMS_TEST, startTime: { startType: StartTimeValue.AT_EPOCH, epoch: BigNumber.from(123456789) } }, - SALT + SALT, ) expect(twap.id).toEqual('0xe993544057dbc8504c4e38a6fe35845a81e0849c11242a6070f9d25152598df6') @@ -177,7 +177,7 @@ describe('Validate', () => { Twap.fromData({ ...TWAP_PARAMS_TEST, startTime: { startType: StartTimeValue.AT_EPOCH, epoch: BigNumber.from(-1) }, - }).isValid() + }).isValid(), ).toEqual({ isValid: false, reason: 'InvalidStartTime', @@ -206,7 +206,7 @@ describe('Validate', () => { durationType: DurationType.LIMIT_DURATION, duration: TWAP_PARAMS_TEST.timeBetweenParts.add(1), }, - }).isValid() + }).isValid(), ).toEqual({ isValid: false, reason: 'InvalidSpan', @@ -238,7 +238,7 @@ describe('Deserialize', () => { test('Deserializes correctly order with t0 set to an epoch', () => { const twap = Twap.deserialize( - '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000006cf1e9ca41f7611def408122793c358a3d11e5a541617665537761707065722d545741502d537761700000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000003765a685a401622c060e5d700d9ad89413363a9100000000000000000000000000000000000000000000000009b6e64a8ec6000000000000000000000000000000000000000000000000000000000000055d4a800000000000000000000000000000000000000000000000000000000067f702df0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000006cf1e9ca41f7611def408122793c358a3d11e5a541617665537761707065722d545741502d537761700000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001400000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000003765a685a401622c060e5d700d9ad89413363a9100000000000000000000000000000000000000000000000009b6e64a8ec6000000000000000000000000000000000000000000000000000000000000055d4a800000000000000000000000000000000000000000000000000000000067f702df0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', ) expect(twap.handler).toEqual('0x6cF1e9cA41f7611dEf408122793c358a3d11E5a5') @@ -280,7 +280,7 @@ describe('To String', () => { test('toString: Default', () => { const twap = Twap.fromData(TWAP_PARAMS_TEST, SALT) expect(twap.toString()).toEqual( - 'twap (0xd8a6889486a47d8ca8f4189f11573b39dbc04f605719ebf4050e44ae53c1bedf): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + 'twap (0xd8a6889486a47d8ca8f4189f11573b39dbc04f605719ebf4050e44ae53c1bedf): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}', ) }) test('toString: start time at epoch', () => { @@ -292,10 +292,10 @@ describe('To String', () => { epoch: BigNumber.from(1692876646), }, }, - SALT + SALT, ) expect(twap.toString()).toEqual( - 'twap (0x28b19554c54f10b67f6ef7e72bdc552fb865b12d33b797ac51227768705fff0d): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":1692876646,"timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + 'twap (0x28b19554c54f10b67f6ef7e72bdc552fb865b12d33b797ac51227768705fff0d): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":1692876646,"timeBetweenParts":3600,"durationOfPart":"AUTO","receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}', ) }) @@ -308,10 +308,10 @@ describe('To String', () => { duration: BigNumber.from(1000), }, }, - SALT + SALT, ) expect(twap.toString()).toEqual( - 'twap (0x7352e87b6e5d7c4e27479a13b7ba8bc0d67a947d1692994bd995c9dcc94c166a): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":1000,"receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}' + 'twap (0x7352e87b6e5d7c4e27479a13b7ba8bc0d67a947d1692994bd995c9dcc94c166a): {"sellAmount":"1000000000000000000","sellToken":"0x6810e776880C02933D47DB1b9fc05908e5386b96","buyAmount":"1000000000000000000","buyToken":"0xDAE5F1590db13E3B40423B5b5c5fbf175515910b","numberOfParts":"10","startTime":"AT_MINING_TIME","timeBetweenParts":3600,"durationOfPart":1000,"receiver":"0xDeaDbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF","appData":"0xd51f28edffcaaa76be4a22f6375ad289272c037f3cc072345676e88d92ced8b5"}', ) }) }) @@ -323,7 +323,7 @@ describe('Poll Validate', () => { const mockEndTimestamp: jest.MockedFunction<(startTimestamp: number) => number> = jest.fn() const mockGetBlock: jest.MockedFunction< ( - blockHashOrBlockTag: providers.BlockTag | string | Promise + blockHashOrBlockTag: providers.BlockTag | string | Promise, ) => Promise > = jest.fn() @@ -444,7 +444,7 @@ describe('Poll Validate', () => { Promise.resolve({ number: blockNumber, timestamp: blockTimestamp, - } as providers.Block) + } as providers.Block), ) const startTime = blockTimestamp + 1 mockCabinet.mockReturnValue(uint256Helper(startTime)) @@ -480,7 +480,7 @@ describe('Current TWAP part is in the Order Book', () => { blockNumber, blockTimestamp, }, - } as PollParams) + }) as PollParams class MockTwap extends Twap { // Just make handlePollFailedAlreadyPresent public so we can call it in isolation diff --git a/packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts b/packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts index 289bca88a..2fe52d76c 100644 --- a/packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts +++ b/packages/cow-sdk/src/composable/orderTypes/test/TestConditionalOrder.ts @@ -55,7 +55,7 @@ export class TestConditionalOrder extends ConditionalOrder { protected async handlePollFailedAlreadyPresent( _orderUid: string, _order: GPv2Order.DataStruct, - _params: PollParams + _params: PollParams, ): Promise { return undefined } diff --git a/packages/cow-sdk/src/cow-shed/README.md b/packages/cow-sdk/src/cow-shed/README.md index 89551d8cb..665e2908e 100644 --- a/packages/cow-sdk/src/cow-shed/README.md +++ b/packages/cow-sdk/src/cow-shed/README.md @@ -32,7 +32,7 @@ const calls: ICoWShedCall[] = [ value: 0n, isDelegateCall: true, allowFailure: false, - } + }, ] // Sign the calls @@ -47,14 +47,11 @@ const { signedMulticall, gasLimit, cowShedAccount } = preAuthorizedCall const { to, data, value } = signedMulticall // Execute the transaction using any wallet. The calldata has been pre-authed, so you don't need any special permissions to send this transaction -let anotherWallet = new ethers.Wallet(''); +let anotherWallet = new ethers.Wallet('') const tx = await anotherWallet.sendTransaction({ to, data, value, - gasLimit, + gasLimit, }) ``` - - - diff --git a/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts index 06b423720..9e16ca9ab 100644 --- a/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts +++ b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.spec.ts @@ -53,7 +53,7 @@ describe('CowShedHooks', () => { expect(defaultCowShed.getFactoryAddress()).toBe(COW_SHED_FACTORY) expect(defaultCowShed.getImplementationAddress()).toBe(COW_SHED_IMPLEMENTATION) expect(defaultCowShed.proxyCreationCode()).toBe( - '0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033' + '0x60a034608e57601f61037138819003918201601f19168301916001600160401b038311848410176093578084926040948552833981010312608e57604b602060458360a9565b920160a9565b6080527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc556040516102b490816100bd8239608051818181608f01526101720152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b0382168203608e5756fe60806040526004361015610018575b3661019457610194565b6000803560e01c908163025b22bc1461003b575063f851a4400361000e5761010d565b3461010a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261010a5773ffffffffffffffffffffffffffffffffffffffff60043581811691828203610106577f0000000000000000000000000000000000000000000000000000000000000000163314600014610101577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8280a280f35b61023d565b8380fd5b80fd5b346101645760007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610164576020610146610169565b73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b600080fd5b333003610101577f000000000000000000000000000000000000000000000000000000000000000090565b60ff7f68df44b1011761f481358c0f49a711192727fb02c377d697bcb0ea8ff8393ac0541615806101ef575b1561023d5760046040517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b507f400ada75000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000006000351614156101c0565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546000808092368280378136915af43d82803e1561027a573d90f35b3d90fdfea2646970667358221220c7c26ff3040b96a28e96d6d27b743972943aeaef81cc821544c5fe1e24f9b17264736f6c63430008190033', ) }) }) diff --git a/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts index df1a62e0f..9e63291b0 100644 --- a/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts +++ b/packages/cow-sdk/src/cow-shed/contracts/CoWShedHooks.ts @@ -40,7 +40,10 @@ export const COW_SHED_712_TYPES = { } export class CowShedHooks { - constructor(private chainId: SupportedChainId, private customOptions?: ICoWShedOptions) {} + constructor( + private chainId: SupportedChainId, + private customOptions?: ICoWShedOptions, + ) {} proxyOf(user: string) { const salt = defaultAbiCoder.encode(['address'], [user]) @@ -49,7 +52,7 @@ export class CowShedHooks { [ this.proxyCreationCode(), defaultAbiCoder.encode(['address', 'address'], [this.getImplementationAddress(), user]), - ] + ], ) return getCreate2Address(this.getFactoryAddress(), salt, initCodeHash) } @@ -59,7 +62,7 @@ export class CowShedHooks { nonce: string, deadline: bigint, user: string, - signature: string + signature: string, ): string { return getCoWShedFactoryInterface().encodeFunctionData('executeHooks', [calls, nonce, deadline, user, signature]) } @@ -69,7 +72,7 @@ export class CowShedHooks { nonce: string, deadline: bigint, signer: Signer, - signingScheme: EcdsaSigningScheme + signingScheme: EcdsaSigningScheme, ): Promise { const user = await signer.getAddress() const proxy = this.proxyOf(user) @@ -116,7 +119,7 @@ async function ecdsaSignTypedData( owner: Signer, domain: TypedDataDomain, types: TypedDataTypes, - data: Record + data: Record, ): Promise { let signature: string | null = null diff --git a/packages/cow-sdk/src/order-book/api.ts b/packages/cow-sdk/src/order-book/api.ts index 4590a2158..f2e7d29e4 100644 --- a/packages/cow-sdk/src/order-book/api.ts +++ b/packages/cow-sdk/src/order-book/api.ts @@ -55,11 +55,14 @@ export const ORDER_BOOK_STAGING_CONFIG: ApiBaseUrls = { } function cleanObjectFromUndefinedValues(obj: Record): typeof obj { - return Object.keys(obj).reduce((acc, key) => { - const val = obj[key] - if (typeof val !== 'undefined') acc[key] = val - return acc - }, {} as typeof obj) + return Object.keys(obj).reduce( + (acc, key) => { + const val = obj[key] + if (typeof val !== 'undefined') acc[key] = val + return acc + }, + {} as typeof obj, + ) } /** @@ -165,7 +168,7 @@ export class OrderBookApi { */ getTrades( request: { owner?: Address; orderUid?: UID }, - contextOverride: PartialApiContext = {} + contextOverride: PartialApiContext = {}, ): Promise> { if (request.owner && request.orderUid) { return Promise.reject(new CowError('Cannot specify both owner and orderId')) @@ -188,15 +191,15 @@ export class OrderBookApi { */ getOrders( { owner, offset = 0, limit = 1000 }: GetOrdersRequest, - contextOverride: PartialApiContext = {} + contextOverride: PartialApiContext = {}, ): Promise> { const query = new URLSearchParams( - cleanObjectFromUndefinedValues({ offset: offset.toString(), limit: limit.toString() }) + cleanObjectFromUndefinedValues({ offset: offset.toString(), limit: limit.toString() }), ) return this.fetch>( { path: `/api/v1/account/${owner}/orders`, method: 'GET', query }, - contextOverride + contextOverride, ).then((orders) => { return orders.map(transformOrder) }) @@ -212,7 +215,7 @@ export class OrderBookApi { getTxOrders(txHash: TransactionHash, contextOverride: PartialApiContext = {}): Promise> { return this.fetch>( { path: `/api/v1/transactions/${txHash}/orders`, method: 'GET' }, - contextOverride + contextOverride, ).then((orders) => { return orders.map(transformOrder) }) @@ -292,7 +295,7 @@ export class OrderBookApi { */ sendSignedOrderCancellations( requestBody: OrderCancellations, - contextOverride: PartialApiContext = {} + contextOverride: PartialApiContext = {}, ): Promise { return this.fetch({ path: '/api/v1/orders', method: 'DELETE', body: requestBody }, contextOverride) } @@ -350,11 +353,11 @@ export class OrderBookApi { uploadAppData( appDataHash: AppDataHash, fullAppData: string, - contextOverride: PartialApiContext = {} + contextOverride: PartialApiContext = {}, ): Promise { return this.fetch( { path: `/api/v1/app_data/${appDataHash}`, method: 'PUT', body: { fullAppData } }, - contextOverride + contextOverride, ) } @@ -370,14 +373,14 @@ export class OrderBookApi { */ getSolverCompetition( auctionIdorTx: number | string, - contextOverride: PartialApiContext = {} + contextOverride: PartialApiContext = {}, ): Promise { return this.fetch( { path: `/api/v1/solver_competition${typeof auctionIdorTx === 'string' ? '/by_tx_hash' : ''}/${auctionIdorTx}`, method: 'GET', }, - contextOverride + contextOverride, ) } diff --git a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts index a954954fb..b815b1bb1 100644 --- a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts +++ b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts @@ -63,7 +63,7 @@ describe('Calculation of before/after fees amounts', () => { }) expect(result.afterNetworkCosts.sellAmount.toString()).toBe( - String(BigInt(orderParams.sellAmount) + BigInt(orderParams.feeAmount)) + String(BigInt(orderParams.sellAmount) + BigInt(orderParams.feeAmount)), ) }) @@ -81,7 +81,7 @@ describe('Calculation of before/after fees amounts', () => { (+orderParams.sellAmount + +orderParams.feeAmount) * // SellAmountAfterNetworkCosts (+orderParams.buyAmount / +orderParams.sellAmount) ) // Price - .toFixed() + .toFixed(), ) }) }) diff --git a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts index 167ae7c18..511864113 100644 --- a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts +++ b/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts @@ -64,7 +64,7 @@ function _getQuoteAmountsWithCosts(params: { */ const sellAmountAfterNetworkCosts = getBigNumber( sellAmountBeforeNetworkCosts.big + networkCostAmount.big, - sellDecimals + sellDecimals, ) /** diff --git a/packages/cow-sdk/src/order-book/request.ts b/packages/cow-sdk/src/order-book/request.ts index cf4a685bd..4dd5714ed 100644 --- a/packages/cow-sdk/src/order-book/request.ts +++ b/packages/cow-sdk/src/order-book/request.ts @@ -11,7 +11,10 @@ export class OrderBookApiError extends Error { * @param body The body of the response. * @constructor */ - constructor(public readonly response: Response, public readonly body: T) { + constructor( + public readonly response: Response, + public readonly body: T, + ) { super(typeof body === 'string' ? body : response.statusText) } } @@ -105,7 +108,7 @@ export async function request( baseUrl: string, { path, query, method, body }: FetchParams, rateLimiter: RateLimiter, - backoffOpts: BackoffOptions + backoffOpts: BackoffOptions, ): Promise { const queryString = query ? '?' + query : '' const headers = { diff --git a/packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts b/packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts index a733a435d..8183232bf 100644 --- a/packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts +++ b/packages/cow-sdk/src/order-signing/orderSigningUtils.spec.ts @@ -57,7 +57,7 @@ describe('OrderSigningApi', () => { const result = await OrderSigningUtils.signOrderCancellations( ordersUids, SupportedChainId.MAINNET, - instance(signer) + instance(signer), ) const [domain, typedData, ids] = capture(signer._signTypedData).first() diff --git a/packages/cow-sdk/src/order-signing/orderSigningUtils.ts b/packages/cow-sdk/src/order-signing/orderSigningUtils.ts index 5f537c42a..a2263fd76 100644 --- a/packages/cow-sdk/src/order-signing/orderSigningUtils.ts +++ b/packages/cow-sdk/src/order-signing/orderSigningUtils.ts @@ -67,7 +67,7 @@ export class OrderSigningUtils { static async signOrderCancellation( orderUid: string, chainId: SupportedChainId, - signer: Signer + signer: Signer, ): Promise { const { signOrderCancellation } = await getSignUtils() return signOrderCancellation(orderUid, chainId, signer) @@ -83,7 +83,7 @@ export class OrderSigningUtils { static async signOrderCancellations( orderUids: string[], chainId: SupportedChainId, - signer: Signer + signer: Signer, ): Promise { const { signOrderCancellations } = await getSignUtils() return signOrderCancellations(orderUids, chainId, signer) @@ -109,7 +109,7 @@ export class OrderSigningUtils { static async generateOrderId( chainId: SupportedChainId, order: Order, - params: Pick + params: Pick, ): Promise<{ orderId: string; orderDigest: string }> { const { generateOrderId } = await getSignUtils() return generateOrderId(chainId, order, params) diff --git a/packages/cow-sdk/src/subgraph/api.spec.ts b/packages/cow-sdk/src/subgraph/api.spec.ts index 0e2b1da52..ba5a802d7 100644 --- a/packages/cow-sdk/src/subgraph/api.spec.ts +++ b/packages/cow-sdk/src/subgraph/api.spec.ts @@ -248,7 +248,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( prodUrls[SupportedChainId.MAINNET], - getFetchParameters(TOTALS_QUERY, 'Totals') + getFetchParameters(TOTALS_QUERY, 'Totals'), ) expect(totals).toEqual(TOTALS_RESPONSE.data.totals[0]) }) @@ -262,7 +262,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( prodUrls[SupportedChainId.MAINNET], - getFetchParameters(LAST_DAYS_VOLUME_QUERY, 'LastDaysVolume', { days: 7 }) + getFetchParameters(LAST_DAYS_VOLUME_QUERY, 'LastDaysVolume', { days: 7 }), ) expect(response).toEqual(LAST_7_DAYS_VOLUME_RESPONSE.data) }) @@ -276,7 +276,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( prodUrls[SupportedChainId.MAINNET], - getFetchParameters(LAST_HOURS_VOLUME_QUERY, 'LastHoursVolume', { hours: 24 }) + getFetchParameters(LAST_HOURS_VOLUME_QUERY, 'LastHoursVolume', { hours: 24 }), ) expect(response).toEqual(LAST_24_HOURS_VOLUME_RESPONSE.data) }) @@ -300,7 +300,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( prodUrls[SupportedChainId.MAINNET], - getFetchParameters(query, 'TokensByVolume') + getFetchParameters(query, 'TokensByVolume'), ) expect(response).toEqual(TOKENS_BY_VOLUME_RESPONSE.data) }) @@ -322,7 +322,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( prodUrls[SupportedChainId.MAINNET], - getFetchParameters(query, 'InvalidQuery') + getFetchParameters(query, 'InvalidQuery'), ) }) @@ -346,7 +346,7 @@ describe('CoW subgraph URL', () => { expect(fetchMock).toHaveBeenCalledTimes(1) expect(fetchMock).toHaveBeenCalledWith( customEnvConfig[SupportedChainId.MAINNET], - getFetchParameters(TOTALS_QUERY, 'Totals') + getFetchParameters(TOTALS_QUERY, 'Totals'), ) expect(totals).toEqual(TOTALS_RESPONSE.data.totals[0]) }) diff --git a/packages/cow-sdk/src/subgraph/api.ts b/packages/cow-sdk/src/subgraph/api.ts index 924dd5891..e6861cb3d 100644 --- a/packages/cow-sdk/src/subgraph/api.ts +++ b/packages/cow-sdk/src/subgraph/api.ts @@ -95,7 +95,7 @@ export class SubgraphApi { */ async getLastHoursVolume( hours: number, - contextOverride: PartialSubgraphApiContext = {} + contextOverride: PartialSubgraphApiContext = {}, ): Promise { return this.runQuery(LAST_HOURS_VOLUME_QUERY, { hours }, contextOverride) } @@ -111,7 +111,7 @@ export class SubgraphApi { async runQuery( query: string | DocumentNode, variables: Variables | undefined = undefined, - contextOverride: PartialSubgraphApiContext = {} + contextOverride: PartialSubgraphApiContext = {}, ): Promise { const { chainId, env } = this.getContextWithOverride(contextOverride) const baseUrl = this.getEnvConfigs(env)[chainId] @@ -125,7 +125,7 @@ export class SubgraphApi { } catch (error) { console.error(`[subgraph:${this.API_NAME}]`, error) throw new CowError( - `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}` + `Error running query: ${query}. Variables: ${JSON.stringify(variables)}. API: ${baseUrl}. Inner Error: ${error}`, ) } } diff --git a/packages/cow-sdk/src/subgraph/graphql.ts b/packages/cow-sdk/src/subgraph/graphql.ts index 8b070625a..82923f278 100644 --- a/packages/cow-sdk/src/subgraph/graphql.ts +++ b/packages/cow-sdk/src/subgraph/graphql.ts @@ -1,204 +1,203 @@ /* tslint:disable */ /* eslint-disable */ -export type Maybe = T | null; -export type InputMaybe = Maybe; -export type Exact = { [K in keyof T]: T[K] }; -export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; -export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type Maybe = T | null +export type InputMaybe = Maybe +export type Exact = { [K in keyof T]: T[K] } +export type MakeOptional = Omit & { [SubKey in K]?: Maybe } +export type MakeMaybe = Omit & { [SubKey in K]: Maybe } /** All built-in and custom scalars, mapped to their actual values */ export type Scalars = { - ID: string; - String: string; - Boolean: boolean; - Int: number; - Float: number; - BigDecimal: any; - BigInt: any; - Bytes: any; - Int8: any; - Timestamp: any; -}; + ID: string + String: string + Boolean: boolean + Int: number + Float: number + BigDecimal: any + BigInt: any + Bytes: any + Int8: any + Timestamp: any +} export enum Aggregation_Interval { Day = 'day', - Hour = 'hour' + Hour = 'hour', } export type BlockChangedFilter = { - number_gte: Scalars['Int']; -}; + number_gte: Scalars['Int'] +} export type Block_Height = { - hash?: InputMaybe; - number?: InputMaybe; - number_gte?: InputMaybe; -}; + hash?: InputMaybe + number?: InputMaybe + number_gte?: InputMaybe +} export type Bundle = { - __typename?: 'Bundle'; + __typename?: 'Bundle' /** Price of ETH in usd */ - ethPriceUSD: Scalars['BigDecimal']; + ethPriceUSD: Scalars['BigDecimal'] /** Singleton #1 */ - id: Scalars['ID']; -}; + id: Scalars['ID'] +} export type Bundle_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - ethPriceUSD?: InputMaybe; - ethPriceUSD_gt?: InputMaybe; - ethPriceUSD_gte?: InputMaybe; - ethPriceUSD_in?: InputMaybe>; - ethPriceUSD_lt?: InputMaybe; - ethPriceUSD_lte?: InputMaybe; - ethPriceUSD_not?: InputMaybe; - ethPriceUSD_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + ethPriceUSD?: InputMaybe + ethPriceUSD_gt?: InputMaybe + ethPriceUSD_gte?: InputMaybe + ethPriceUSD_in?: InputMaybe> + ethPriceUSD_lt?: InputMaybe + ethPriceUSD_lte?: InputMaybe + ethPriceUSD_not?: InputMaybe + ethPriceUSD_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> +} export enum Bundle_OrderBy { EthPriceUsd = 'ethPriceUSD', - Id = 'id' + Id = 'id', } export type DailyTotal = { - __typename?: 'DailyTotal'; + __typename?: 'DailyTotal' /** Total fees in Eth */ - feesEth?: Maybe; + feesEth?: Maybe /** Total fees in USD */ - feesUsd?: Maybe; + feesUsd?: Maybe /** Day timestamp */ - id: Scalars['ID']; + id: Scalars['ID'] /** Number of trades */ - numberOfTrades: Scalars['BigInt']; + numberOfTrades: Scalars['BigInt'] /** Total number of orders placed */ - orders: Scalars['BigInt']; + orders: Scalars['BigInt'] /** Total number of batches settled */ - settlements: Scalars['BigInt']; + settlements: Scalars['BigInt'] /** Start day timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Traded tokens */ - tokens: Array; + tokens: Array /** Total number of tokens traded */ - totalTokens: Scalars['BigInt']; + totalTokens: Scalars['BigInt'] /** Total traded volume in ETH */ - volumeEth?: Maybe; + volumeEth?: Maybe /** Total traded volume in USD */ - volumeUsd?: Maybe; -}; - + volumeUsd?: Maybe +} export type DailyTotalTokensArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type DailyTotal_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - feesEth?: InputMaybe; - feesEth_gt?: InputMaybe; - feesEth_gte?: InputMaybe; - feesEth_in?: InputMaybe>; - feesEth_lt?: InputMaybe; - feesEth_lte?: InputMaybe; - feesEth_not?: InputMaybe; - feesEth_not_in?: InputMaybe>; - feesUsd?: InputMaybe; - feesUsd_gt?: InputMaybe; - feesUsd_gte?: InputMaybe; - feesUsd_in?: InputMaybe>; - feesUsd_lt?: InputMaybe; - feesUsd_lte?: InputMaybe; - feesUsd_not?: InputMaybe; - feesUsd_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - numberOfTrades?: InputMaybe; - numberOfTrades_gt?: InputMaybe; - numberOfTrades_gte?: InputMaybe; - numberOfTrades_in?: InputMaybe>; - numberOfTrades_lt?: InputMaybe; - numberOfTrades_lte?: InputMaybe; - numberOfTrades_not?: InputMaybe; - numberOfTrades_not_in?: InputMaybe>; - or?: InputMaybe>>; - orders?: InputMaybe; - orders_gt?: InputMaybe; - orders_gte?: InputMaybe; - orders_in?: InputMaybe>; - orders_lt?: InputMaybe; - orders_lte?: InputMaybe; - orders_not?: InputMaybe; - orders_not_in?: InputMaybe>; - settlements?: InputMaybe; - settlements_gt?: InputMaybe; - settlements_gte?: InputMaybe; - settlements_in?: InputMaybe>; - settlements_lt?: InputMaybe; - settlements_lte?: InputMaybe; - settlements_not?: InputMaybe; - settlements_not_in?: InputMaybe>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - tokens?: InputMaybe>; - tokens_?: InputMaybe; - tokens_contains?: InputMaybe>; - tokens_contains_nocase?: InputMaybe>; - tokens_not?: InputMaybe>; - tokens_not_contains?: InputMaybe>; - tokens_not_contains_nocase?: InputMaybe>; - totalTokens?: InputMaybe; - totalTokens_gt?: InputMaybe; - totalTokens_gte?: InputMaybe; - totalTokens_in?: InputMaybe>; - totalTokens_lt?: InputMaybe; - totalTokens_lte?: InputMaybe; - totalTokens_not?: InputMaybe; - totalTokens_not_in?: InputMaybe>; - volumeEth?: InputMaybe; - volumeEth_gt?: InputMaybe; - volumeEth_gte?: InputMaybe; - volumeEth_in?: InputMaybe>; - volumeEth_lt?: InputMaybe; - volumeEth_lte?: InputMaybe; - volumeEth_not?: InputMaybe; - volumeEth_not_in?: InputMaybe>; - volumeUsd?: InputMaybe; - volumeUsd_gt?: InputMaybe; - volumeUsd_gte?: InputMaybe; - volumeUsd_in?: InputMaybe>; - volumeUsd_lt?: InputMaybe; - volumeUsd_lte?: InputMaybe; - volumeUsd_not?: InputMaybe; - volumeUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + feesEth?: InputMaybe + feesEth_gt?: InputMaybe + feesEth_gte?: InputMaybe + feesEth_in?: InputMaybe> + feesEth_lt?: InputMaybe + feesEth_lte?: InputMaybe + feesEth_not?: InputMaybe + feesEth_not_in?: InputMaybe> + feesUsd?: InputMaybe + feesUsd_gt?: InputMaybe + feesUsd_gte?: InputMaybe + feesUsd_in?: InputMaybe> + feesUsd_lt?: InputMaybe + feesUsd_lte?: InputMaybe + feesUsd_not?: InputMaybe + feesUsd_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + numberOfTrades?: InputMaybe + numberOfTrades_gt?: InputMaybe + numberOfTrades_gte?: InputMaybe + numberOfTrades_in?: InputMaybe> + numberOfTrades_lt?: InputMaybe + numberOfTrades_lte?: InputMaybe + numberOfTrades_not?: InputMaybe + numberOfTrades_not_in?: InputMaybe> + or?: InputMaybe>> + orders?: InputMaybe + orders_gt?: InputMaybe + orders_gte?: InputMaybe + orders_in?: InputMaybe> + orders_lt?: InputMaybe + orders_lte?: InputMaybe + orders_not?: InputMaybe + orders_not_in?: InputMaybe> + settlements?: InputMaybe + settlements_gt?: InputMaybe + settlements_gte?: InputMaybe + settlements_in?: InputMaybe> + settlements_lt?: InputMaybe + settlements_lte?: InputMaybe + settlements_not?: InputMaybe + settlements_not_in?: InputMaybe> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + tokens?: InputMaybe> + tokens_?: InputMaybe + tokens_contains?: InputMaybe> + tokens_contains_nocase?: InputMaybe> + tokens_not?: InputMaybe> + tokens_not_contains?: InputMaybe> + tokens_not_contains_nocase?: InputMaybe> + totalTokens?: InputMaybe + totalTokens_gt?: InputMaybe + totalTokens_gte?: InputMaybe + totalTokens_in?: InputMaybe> + totalTokens_lt?: InputMaybe + totalTokens_lte?: InputMaybe + totalTokens_not?: InputMaybe + totalTokens_not_in?: InputMaybe> + volumeEth?: InputMaybe + volumeEth_gt?: InputMaybe + volumeEth_gte?: InputMaybe + volumeEth_in?: InputMaybe> + volumeEth_lt?: InputMaybe + volumeEth_lte?: InputMaybe + volumeEth_not?: InputMaybe + volumeEth_not_in?: InputMaybe> + volumeUsd?: InputMaybe + volumeUsd_gt?: InputMaybe + volumeUsd_gte?: InputMaybe + volumeUsd_in?: InputMaybe> + volumeUsd_lt?: InputMaybe + volumeUsd_lte?: InputMaybe + volumeUsd_not?: InputMaybe + volumeUsd_not_in?: InputMaybe> +} export enum DailyTotal_OrderBy { FeesEth = 'feesEth', @@ -211,137 +210,136 @@ export enum DailyTotal_OrderBy { Tokens = 'tokens', TotalTokens = 'totalTokens', VolumeEth = 'volumeEth', - VolumeUsd = 'volumeUsd' + VolumeUsd = 'volumeUsd', } export type HourlyTotal = { - __typename?: 'HourlyTotal'; + __typename?: 'HourlyTotal' /** Total fees in Eth */ - feesEth?: Maybe; + feesEth?: Maybe /** Total fees in USD */ - feesUsd?: Maybe; + feesUsd?: Maybe /** Hour timestamp */ - id: Scalars['ID']; + id: Scalars['ID'] /** Number of trades */ - numberOfTrades: Scalars['BigInt']; + numberOfTrades: Scalars['BigInt'] /** Total number of orders placed */ - orders: Scalars['BigInt']; + orders: Scalars['BigInt'] /** Total number of batches settled */ - settlements: Scalars['BigInt']; + settlements: Scalars['BigInt'] /** Start hour timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Traded tokens */ - tokens: Array; + tokens: Array /** Total number of tokens traded */ - totalTokens: Scalars['BigInt']; + totalTokens: Scalars['BigInt'] /** Total traded volume in ETH */ - volumeEth?: Maybe; + volumeEth?: Maybe /** Total traded volume in USD */ - volumeUsd?: Maybe; -}; - + volumeUsd?: Maybe +} export type HourlyTotalTokensArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type HourlyTotal_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - feesEth?: InputMaybe; - feesEth_gt?: InputMaybe; - feesEth_gte?: InputMaybe; - feesEth_in?: InputMaybe>; - feesEth_lt?: InputMaybe; - feesEth_lte?: InputMaybe; - feesEth_not?: InputMaybe; - feesEth_not_in?: InputMaybe>; - feesUsd?: InputMaybe; - feesUsd_gt?: InputMaybe; - feesUsd_gte?: InputMaybe; - feesUsd_in?: InputMaybe>; - feesUsd_lt?: InputMaybe; - feesUsd_lte?: InputMaybe; - feesUsd_not?: InputMaybe; - feesUsd_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - numberOfTrades?: InputMaybe; - numberOfTrades_gt?: InputMaybe; - numberOfTrades_gte?: InputMaybe; - numberOfTrades_in?: InputMaybe>; - numberOfTrades_lt?: InputMaybe; - numberOfTrades_lte?: InputMaybe; - numberOfTrades_not?: InputMaybe; - numberOfTrades_not_in?: InputMaybe>; - or?: InputMaybe>>; - orders?: InputMaybe; - orders_gt?: InputMaybe; - orders_gte?: InputMaybe; - orders_in?: InputMaybe>; - orders_lt?: InputMaybe; - orders_lte?: InputMaybe; - orders_not?: InputMaybe; - orders_not_in?: InputMaybe>; - settlements?: InputMaybe; - settlements_gt?: InputMaybe; - settlements_gte?: InputMaybe; - settlements_in?: InputMaybe>; - settlements_lt?: InputMaybe; - settlements_lte?: InputMaybe; - settlements_not?: InputMaybe; - settlements_not_in?: InputMaybe>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - tokens?: InputMaybe>; - tokens_?: InputMaybe; - tokens_contains?: InputMaybe>; - tokens_contains_nocase?: InputMaybe>; - tokens_not?: InputMaybe>; - tokens_not_contains?: InputMaybe>; - tokens_not_contains_nocase?: InputMaybe>; - totalTokens?: InputMaybe; - totalTokens_gt?: InputMaybe; - totalTokens_gte?: InputMaybe; - totalTokens_in?: InputMaybe>; - totalTokens_lt?: InputMaybe; - totalTokens_lte?: InputMaybe; - totalTokens_not?: InputMaybe; - totalTokens_not_in?: InputMaybe>; - volumeEth?: InputMaybe; - volumeEth_gt?: InputMaybe; - volumeEth_gte?: InputMaybe; - volumeEth_in?: InputMaybe>; - volumeEth_lt?: InputMaybe; - volumeEth_lte?: InputMaybe; - volumeEth_not?: InputMaybe; - volumeEth_not_in?: InputMaybe>; - volumeUsd?: InputMaybe; - volumeUsd_gt?: InputMaybe; - volumeUsd_gte?: InputMaybe; - volumeUsd_in?: InputMaybe>; - volumeUsd_lt?: InputMaybe; - volumeUsd_lte?: InputMaybe; - volumeUsd_not?: InputMaybe; - volumeUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + feesEth?: InputMaybe + feesEth_gt?: InputMaybe + feesEth_gte?: InputMaybe + feesEth_in?: InputMaybe> + feesEth_lt?: InputMaybe + feesEth_lte?: InputMaybe + feesEth_not?: InputMaybe + feesEth_not_in?: InputMaybe> + feesUsd?: InputMaybe + feesUsd_gt?: InputMaybe + feesUsd_gte?: InputMaybe + feesUsd_in?: InputMaybe> + feesUsd_lt?: InputMaybe + feesUsd_lte?: InputMaybe + feesUsd_not?: InputMaybe + feesUsd_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + numberOfTrades?: InputMaybe + numberOfTrades_gt?: InputMaybe + numberOfTrades_gte?: InputMaybe + numberOfTrades_in?: InputMaybe> + numberOfTrades_lt?: InputMaybe + numberOfTrades_lte?: InputMaybe + numberOfTrades_not?: InputMaybe + numberOfTrades_not_in?: InputMaybe> + or?: InputMaybe>> + orders?: InputMaybe + orders_gt?: InputMaybe + orders_gte?: InputMaybe + orders_in?: InputMaybe> + orders_lt?: InputMaybe + orders_lte?: InputMaybe + orders_not?: InputMaybe + orders_not_in?: InputMaybe> + settlements?: InputMaybe + settlements_gt?: InputMaybe + settlements_gte?: InputMaybe + settlements_in?: InputMaybe> + settlements_lt?: InputMaybe + settlements_lte?: InputMaybe + settlements_not?: InputMaybe + settlements_not_in?: InputMaybe> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + tokens?: InputMaybe> + tokens_?: InputMaybe + tokens_contains?: InputMaybe> + tokens_contains_nocase?: InputMaybe> + tokens_not?: InputMaybe> + tokens_not_contains?: InputMaybe> + tokens_not_contains_nocase?: InputMaybe> + totalTokens?: InputMaybe + totalTokens_gt?: InputMaybe + totalTokens_gte?: InputMaybe + totalTokens_in?: InputMaybe> + totalTokens_lt?: InputMaybe + totalTokens_lte?: InputMaybe + totalTokens_not?: InputMaybe + totalTokens_not_in?: InputMaybe> + volumeEth?: InputMaybe + volumeEth_gt?: InputMaybe + volumeEth_gte?: InputMaybe + volumeEth_in?: InputMaybe> + volumeEth_lt?: InputMaybe + volumeEth_lte?: InputMaybe + volumeEth_not?: InputMaybe + volumeEth_not_in?: InputMaybe> + volumeUsd?: InputMaybe + volumeUsd_gt?: InputMaybe + volumeUsd_gte?: InputMaybe + volumeUsd_in?: InputMaybe> + volumeUsd_lt?: InputMaybe + volumeUsd_lte?: InputMaybe + volumeUsd_not?: InputMaybe + volumeUsd_not_in?: InputMaybe> +} export enum HourlyTotal_OrderBy { FeesEth = 'feesEth', @@ -354,112 +352,111 @@ export enum HourlyTotal_OrderBy { Tokens = 'tokens', TotalTokens = 'totalTokens', VolumeEth = 'volumeEth', - VolumeUsd = 'volumeUsd' + VolumeUsd = 'volumeUsd', } export type Order = { - __typename?: 'Order'; + __typename?: 'Order' /** Trade's OrderUid to hex string */ - id: Scalars['ID']; + id: Scalars['ID'] /** block's timestamp on invalidate event */ - invalidateTimestamp?: Maybe; + invalidateTimestamp?: Maybe /** Boolean value to show if the order is signed */ - isSigned?: Maybe; + isSigned?: Maybe /** Boolean value true by default unless is invalidated by the event */ - isValid?: Maybe; + isValid?: Maybe /** Trade's owner or presign User */ - owner?: Maybe; + owner?: Maybe /** block's timestamp on presign event */ - presignTimestamp?: Maybe; + presignTimestamp?: Maybe /** Array of trades on the order */ - trades?: Maybe>; + trades?: Maybe> /** block's timestamp on trade event */ - tradesTimestamp?: Maybe; -}; - + tradesTimestamp?: Maybe +} export type OrderTradesArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} /** Defines the order direction, either ascending or descending */ export enum OrderDirection { Asc = 'asc', - Desc = 'desc' + Desc = 'desc', } export type Order_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - invalidateTimestamp?: InputMaybe; - invalidateTimestamp_gt?: InputMaybe; - invalidateTimestamp_gte?: InputMaybe; - invalidateTimestamp_in?: InputMaybe>; - invalidateTimestamp_lt?: InputMaybe; - invalidateTimestamp_lte?: InputMaybe; - invalidateTimestamp_not?: InputMaybe; - invalidateTimestamp_not_in?: InputMaybe>; - isSigned?: InputMaybe; - isSigned_in?: InputMaybe>; - isSigned_not?: InputMaybe; - isSigned_not_in?: InputMaybe>; - isValid?: InputMaybe; - isValid_in?: InputMaybe>; - isValid_not?: InputMaybe; - isValid_not_in?: InputMaybe>; - or?: InputMaybe>>; - owner?: InputMaybe; - owner_?: InputMaybe; - owner_contains?: InputMaybe; - owner_contains_nocase?: InputMaybe; - owner_ends_with?: InputMaybe; - owner_ends_with_nocase?: InputMaybe; - owner_gt?: InputMaybe; - owner_gte?: InputMaybe; - owner_in?: InputMaybe>; - owner_lt?: InputMaybe; - owner_lte?: InputMaybe; - owner_not?: InputMaybe; - owner_not_contains?: InputMaybe; - owner_not_contains_nocase?: InputMaybe; - owner_not_ends_with?: InputMaybe; - owner_not_ends_with_nocase?: InputMaybe; - owner_not_in?: InputMaybe>; - owner_not_starts_with?: InputMaybe; - owner_not_starts_with_nocase?: InputMaybe; - owner_starts_with?: InputMaybe; - owner_starts_with_nocase?: InputMaybe; - presignTimestamp?: InputMaybe; - presignTimestamp_gt?: InputMaybe; - presignTimestamp_gte?: InputMaybe; - presignTimestamp_in?: InputMaybe>; - presignTimestamp_lt?: InputMaybe; - presignTimestamp_lte?: InputMaybe; - presignTimestamp_not?: InputMaybe; - presignTimestamp_not_in?: InputMaybe>; - tradesTimestamp?: InputMaybe; - tradesTimestamp_gt?: InputMaybe; - tradesTimestamp_gte?: InputMaybe; - tradesTimestamp_in?: InputMaybe>; - tradesTimestamp_lt?: InputMaybe; - tradesTimestamp_lte?: InputMaybe; - tradesTimestamp_not?: InputMaybe; - tradesTimestamp_not_in?: InputMaybe>; - trades_?: InputMaybe; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + invalidateTimestamp?: InputMaybe + invalidateTimestamp_gt?: InputMaybe + invalidateTimestamp_gte?: InputMaybe + invalidateTimestamp_in?: InputMaybe> + invalidateTimestamp_lt?: InputMaybe + invalidateTimestamp_lte?: InputMaybe + invalidateTimestamp_not?: InputMaybe + invalidateTimestamp_not_in?: InputMaybe> + isSigned?: InputMaybe + isSigned_in?: InputMaybe> + isSigned_not?: InputMaybe + isSigned_not_in?: InputMaybe> + isValid?: InputMaybe + isValid_in?: InputMaybe> + isValid_not?: InputMaybe + isValid_not_in?: InputMaybe> + or?: InputMaybe>> + owner?: InputMaybe + owner_?: InputMaybe + owner_contains?: InputMaybe + owner_contains_nocase?: InputMaybe + owner_ends_with?: InputMaybe + owner_ends_with_nocase?: InputMaybe + owner_gt?: InputMaybe + owner_gte?: InputMaybe + owner_in?: InputMaybe> + owner_lt?: InputMaybe + owner_lte?: InputMaybe + owner_not?: InputMaybe + owner_not_contains?: InputMaybe + owner_not_contains_nocase?: InputMaybe + owner_not_ends_with?: InputMaybe + owner_not_ends_with_nocase?: InputMaybe + owner_not_in?: InputMaybe> + owner_not_starts_with?: InputMaybe + owner_not_starts_with_nocase?: InputMaybe + owner_starts_with?: InputMaybe + owner_starts_with_nocase?: InputMaybe + presignTimestamp?: InputMaybe + presignTimestamp_gt?: InputMaybe + presignTimestamp_gte?: InputMaybe + presignTimestamp_in?: InputMaybe> + presignTimestamp_lt?: InputMaybe + presignTimestamp_lte?: InputMaybe + presignTimestamp_not?: InputMaybe + presignTimestamp_not_in?: InputMaybe> + tradesTimestamp?: InputMaybe + tradesTimestamp_gt?: InputMaybe + tradesTimestamp_gte?: InputMaybe + tradesTimestamp_in?: InputMaybe> + tradesTimestamp_lt?: InputMaybe + tradesTimestamp_lte?: InputMaybe + tradesTimestamp_not?: InputMaybe + tradesTimestamp_not_in?: InputMaybe> + trades_?: InputMaybe +} export enum Order_OrderBy { Id = 'id', @@ -478,191 +475,191 @@ export enum Order_OrderBy { OwnerTradedAmountUsd = 'owner__tradedAmountUsd', PresignTimestamp = 'presignTimestamp', Trades = 'trades', - TradesTimestamp = 'tradesTimestamp' + TradesTimestamp = 'tradesTimestamp', } export type Pair = { - __typename?: 'Pair'; + __typename?: 'Pair' /** Token0-token1 sorted by token0 < token1 */ - id: Scalars['ID']; + id: Scalars['ID'] /** The token 0 address lower than token1 */ - token0: Token; + token0: Token /** Token0 last trade price */ - token0Price?: Maybe; + token0Price?: Maybe /** Token 0 price expressed in token1 in the last trade */ - token0relativePrice?: Maybe; + token0relativePrice?: Maybe /** The token 1 address greater than token0 */ - token1: Token; + token1: Token /** Token1 last trade price */ - token1Price?: Maybe; + token1Price?: Maybe /** Token 1 price expressed in token1 in the last trade */ - token1relativePrice?: Maybe; + token1relativePrice?: Maybe /** Total volume of token 0 traded */ - volumeToken0?: Maybe; + volumeToken0?: Maybe /** Total volume of token 1 traded */ - volumeToken1?: Maybe; + volumeToken1?: Maybe /** Total volume in Eth */ - volumeTradedEth?: Maybe; + volumeTradedEth?: Maybe /** Total volume in Usd */ - volumeTradedUsd?: Maybe; -}; + volumeTradedUsd?: Maybe +} export type PairDaily = { - __typename?: 'PairDaily'; + __typename?: 'PairDaily' /** token0-token1-timestamp sorted by token0 < token1 */ - id: Scalars['ID']; + id: Scalars['ID'] /** Start day timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** The token 0 address lower than token1 */ - token0: Token; + token0: Token /** Token0 last trade price */ - token0Price?: Maybe; + token0Price?: Maybe /** Token 0 price expressed in token1 in the last trade */ - token0relativePrice?: Maybe; + token0relativePrice?: Maybe /** The token 1 address greater than token0 */ - token1: Token; + token1: Token /** Token1 last trade price */ - token1Price?: Maybe; + token1Price?: Maybe /** Token 1 price expressed in token1 in the last trade */ - token1relativePrice?: Maybe; + token1relativePrice?: Maybe /** Total volume of token 0 traded */ - volumeToken0?: Maybe; + volumeToken0?: Maybe /** Total volume of token 1 traded */ - volumeToken1?: Maybe; + volumeToken1?: Maybe /** Total volume in Eth */ - volumeTradedEth?: Maybe; + volumeTradedEth?: Maybe /** Total volume in Usd */ - volumeTradedUsd?: Maybe; -}; + volumeTradedUsd?: Maybe +} export type PairDaily_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - token0?: InputMaybe; - token0Price?: InputMaybe; - token0Price_gt?: InputMaybe; - token0Price_gte?: InputMaybe; - token0Price_in?: InputMaybe>; - token0Price_lt?: InputMaybe; - token0Price_lte?: InputMaybe; - token0Price_not?: InputMaybe; - token0Price_not_in?: InputMaybe>; - token0_?: InputMaybe; - token0_contains?: InputMaybe; - token0_contains_nocase?: InputMaybe; - token0_ends_with?: InputMaybe; - token0_ends_with_nocase?: InputMaybe; - token0_gt?: InputMaybe; - token0_gte?: InputMaybe; - token0_in?: InputMaybe>; - token0_lt?: InputMaybe; - token0_lte?: InputMaybe; - token0_not?: InputMaybe; - token0_not_contains?: InputMaybe; - token0_not_contains_nocase?: InputMaybe; - token0_not_ends_with?: InputMaybe; - token0_not_ends_with_nocase?: InputMaybe; - token0_not_in?: InputMaybe>; - token0_not_starts_with?: InputMaybe; - token0_not_starts_with_nocase?: InputMaybe; - token0_starts_with?: InputMaybe; - token0_starts_with_nocase?: InputMaybe; - token0relativePrice?: InputMaybe; - token0relativePrice_gt?: InputMaybe; - token0relativePrice_gte?: InputMaybe; - token0relativePrice_in?: InputMaybe>; - token0relativePrice_lt?: InputMaybe; - token0relativePrice_lte?: InputMaybe; - token0relativePrice_not?: InputMaybe; - token0relativePrice_not_in?: InputMaybe>; - token1?: InputMaybe; - token1Price?: InputMaybe; - token1Price_gt?: InputMaybe; - token1Price_gte?: InputMaybe; - token1Price_in?: InputMaybe>; - token1Price_lt?: InputMaybe; - token1Price_lte?: InputMaybe; - token1Price_not?: InputMaybe; - token1Price_not_in?: InputMaybe>; - token1_?: InputMaybe; - token1_contains?: InputMaybe; - token1_contains_nocase?: InputMaybe; - token1_ends_with?: InputMaybe; - token1_ends_with_nocase?: InputMaybe; - token1_gt?: InputMaybe; - token1_gte?: InputMaybe; - token1_in?: InputMaybe>; - token1_lt?: InputMaybe; - token1_lte?: InputMaybe; - token1_not?: InputMaybe; - token1_not_contains?: InputMaybe; - token1_not_contains_nocase?: InputMaybe; - token1_not_ends_with?: InputMaybe; - token1_not_ends_with_nocase?: InputMaybe; - token1_not_in?: InputMaybe>; - token1_not_starts_with?: InputMaybe; - token1_not_starts_with_nocase?: InputMaybe; - token1_starts_with?: InputMaybe; - token1_starts_with_nocase?: InputMaybe; - token1relativePrice?: InputMaybe; - token1relativePrice_gt?: InputMaybe; - token1relativePrice_gte?: InputMaybe; - token1relativePrice_in?: InputMaybe>; - token1relativePrice_lt?: InputMaybe; - token1relativePrice_lte?: InputMaybe; - token1relativePrice_not?: InputMaybe; - token1relativePrice_not_in?: InputMaybe>; - volumeToken0?: InputMaybe; - volumeToken0_gt?: InputMaybe; - volumeToken0_gte?: InputMaybe; - volumeToken0_in?: InputMaybe>; - volumeToken0_lt?: InputMaybe; - volumeToken0_lte?: InputMaybe; - volumeToken0_not?: InputMaybe; - volumeToken0_not_in?: InputMaybe>; - volumeToken1?: InputMaybe; - volumeToken1_gt?: InputMaybe; - volumeToken1_gte?: InputMaybe; - volumeToken1_in?: InputMaybe>; - volumeToken1_lt?: InputMaybe; - volumeToken1_lte?: InputMaybe; - volumeToken1_not?: InputMaybe; - volumeToken1_not_in?: InputMaybe>; - volumeTradedEth?: InputMaybe; - volumeTradedEth_gt?: InputMaybe; - volumeTradedEth_gte?: InputMaybe; - volumeTradedEth_in?: InputMaybe>; - volumeTradedEth_lt?: InputMaybe; - volumeTradedEth_lte?: InputMaybe; - volumeTradedEth_not?: InputMaybe; - volumeTradedEth_not_in?: InputMaybe>; - volumeTradedUsd?: InputMaybe; - volumeTradedUsd_gt?: InputMaybe; - volumeTradedUsd_gte?: InputMaybe; - volumeTradedUsd_in?: InputMaybe>; - volumeTradedUsd_lt?: InputMaybe; - volumeTradedUsd_lte?: InputMaybe; - volumeTradedUsd_not?: InputMaybe; - volumeTradedUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + token0?: InputMaybe + token0Price?: InputMaybe + token0Price_gt?: InputMaybe + token0Price_gte?: InputMaybe + token0Price_in?: InputMaybe> + token0Price_lt?: InputMaybe + token0Price_lte?: InputMaybe + token0Price_not?: InputMaybe + token0Price_not_in?: InputMaybe> + token0_?: InputMaybe + token0_contains?: InputMaybe + token0_contains_nocase?: InputMaybe + token0_ends_with?: InputMaybe + token0_ends_with_nocase?: InputMaybe + token0_gt?: InputMaybe + token0_gte?: InputMaybe + token0_in?: InputMaybe> + token0_lt?: InputMaybe + token0_lte?: InputMaybe + token0_not?: InputMaybe + token0_not_contains?: InputMaybe + token0_not_contains_nocase?: InputMaybe + token0_not_ends_with?: InputMaybe + token0_not_ends_with_nocase?: InputMaybe + token0_not_in?: InputMaybe> + token0_not_starts_with?: InputMaybe + token0_not_starts_with_nocase?: InputMaybe + token0_starts_with?: InputMaybe + token0_starts_with_nocase?: InputMaybe + token0relativePrice?: InputMaybe + token0relativePrice_gt?: InputMaybe + token0relativePrice_gte?: InputMaybe + token0relativePrice_in?: InputMaybe> + token0relativePrice_lt?: InputMaybe + token0relativePrice_lte?: InputMaybe + token0relativePrice_not?: InputMaybe + token0relativePrice_not_in?: InputMaybe> + token1?: InputMaybe + token1Price?: InputMaybe + token1Price_gt?: InputMaybe + token1Price_gte?: InputMaybe + token1Price_in?: InputMaybe> + token1Price_lt?: InputMaybe + token1Price_lte?: InputMaybe + token1Price_not?: InputMaybe + token1Price_not_in?: InputMaybe> + token1_?: InputMaybe + token1_contains?: InputMaybe + token1_contains_nocase?: InputMaybe + token1_ends_with?: InputMaybe + token1_ends_with_nocase?: InputMaybe + token1_gt?: InputMaybe + token1_gte?: InputMaybe + token1_in?: InputMaybe> + token1_lt?: InputMaybe + token1_lte?: InputMaybe + token1_not?: InputMaybe + token1_not_contains?: InputMaybe + token1_not_contains_nocase?: InputMaybe + token1_not_ends_with?: InputMaybe + token1_not_ends_with_nocase?: InputMaybe + token1_not_in?: InputMaybe> + token1_not_starts_with?: InputMaybe + token1_not_starts_with_nocase?: InputMaybe + token1_starts_with?: InputMaybe + token1_starts_with_nocase?: InputMaybe + token1relativePrice?: InputMaybe + token1relativePrice_gt?: InputMaybe + token1relativePrice_gte?: InputMaybe + token1relativePrice_in?: InputMaybe> + token1relativePrice_lt?: InputMaybe + token1relativePrice_lte?: InputMaybe + token1relativePrice_not?: InputMaybe + token1relativePrice_not_in?: InputMaybe> + volumeToken0?: InputMaybe + volumeToken0_gt?: InputMaybe + volumeToken0_gte?: InputMaybe + volumeToken0_in?: InputMaybe> + volumeToken0_lt?: InputMaybe + volumeToken0_lte?: InputMaybe + volumeToken0_not?: InputMaybe + volumeToken0_not_in?: InputMaybe> + volumeToken1?: InputMaybe + volumeToken1_gt?: InputMaybe + volumeToken1_gte?: InputMaybe + volumeToken1_in?: InputMaybe> + volumeToken1_lt?: InputMaybe + volumeToken1_lte?: InputMaybe + volumeToken1_not?: InputMaybe + volumeToken1_not_in?: InputMaybe> + volumeTradedEth?: InputMaybe + volumeTradedEth_gt?: InputMaybe + volumeTradedEth_gte?: InputMaybe + volumeTradedEth_in?: InputMaybe> + volumeTradedEth_lt?: InputMaybe + volumeTradedEth_lte?: InputMaybe + volumeTradedEth_not?: InputMaybe + volumeTradedEth_not_in?: InputMaybe> + volumeTradedUsd?: InputMaybe + volumeTradedUsd_gt?: InputMaybe + volumeTradedUsd_gte?: InputMaybe + volumeTradedUsd_in?: InputMaybe> + volumeTradedUsd_lt?: InputMaybe + volumeTradedUsd_lte?: InputMaybe + volumeTradedUsd_not?: InputMaybe + volumeTradedUsd_not_in?: InputMaybe> +} export enum PairDaily_OrderBy { Id = 'id', @@ -700,165 +697,165 @@ export enum PairDaily_OrderBy { VolumeToken0 = 'volumeToken0', VolumeToken1 = 'volumeToken1', VolumeTradedEth = 'volumeTradedEth', - VolumeTradedUsd = 'volumeTradedUsd' + VolumeTradedUsd = 'volumeTradedUsd', } export type PairHourly = { - __typename?: 'PairHourly'; + __typename?: 'PairHourly' /** token0-token1-timestamp sorted by token0 < token1 */ - id: Scalars['ID']; + id: Scalars['ID'] /** Start hour timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** The token 0 address lower than token1 */ - token0: Token; + token0: Token /** Token0 last trade price */ - token0Price?: Maybe; + token0Price?: Maybe /** Token 0 price expressed in token1 in the last trade */ - token0relativePrice?: Maybe; + token0relativePrice?: Maybe /** The token 1 address greater than token0 */ - token1: Token; + token1: Token /** Token1 last trade price */ - token1Price?: Maybe; + token1Price?: Maybe /** Token 1 price expressed in token1 in the last trade */ - token1relativePrice?: Maybe; + token1relativePrice?: Maybe /** Total volume of token 0 traded */ - volumeToken0?: Maybe; + volumeToken0?: Maybe /** Total volume of token 1 traded */ - volumeToken1?: Maybe; + volumeToken1?: Maybe /** Total volume in Eth */ - volumeTradedEth?: Maybe; + volumeTradedEth?: Maybe /** Total volume in Usd */ - volumeTradedUsd?: Maybe; -}; + volumeTradedUsd?: Maybe +} export type PairHourly_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - token0?: InputMaybe; - token0Price?: InputMaybe; - token0Price_gt?: InputMaybe; - token0Price_gte?: InputMaybe; - token0Price_in?: InputMaybe>; - token0Price_lt?: InputMaybe; - token0Price_lte?: InputMaybe; - token0Price_not?: InputMaybe; - token0Price_not_in?: InputMaybe>; - token0_?: InputMaybe; - token0_contains?: InputMaybe; - token0_contains_nocase?: InputMaybe; - token0_ends_with?: InputMaybe; - token0_ends_with_nocase?: InputMaybe; - token0_gt?: InputMaybe; - token0_gte?: InputMaybe; - token0_in?: InputMaybe>; - token0_lt?: InputMaybe; - token0_lte?: InputMaybe; - token0_not?: InputMaybe; - token0_not_contains?: InputMaybe; - token0_not_contains_nocase?: InputMaybe; - token0_not_ends_with?: InputMaybe; - token0_not_ends_with_nocase?: InputMaybe; - token0_not_in?: InputMaybe>; - token0_not_starts_with?: InputMaybe; - token0_not_starts_with_nocase?: InputMaybe; - token0_starts_with?: InputMaybe; - token0_starts_with_nocase?: InputMaybe; - token0relativePrice?: InputMaybe; - token0relativePrice_gt?: InputMaybe; - token0relativePrice_gte?: InputMaybe; - token0relativePrice_in?: InputMaybe>; - token0relativePrice_lt?: InputMaybe; - token0relativePrice_lte?: InputMaybe; - token0relativePrice_not?: InputMaybe; - token0relativePrice_not_in?: InputMaybe>; - token1?: InputMaybe; - token1Price?: InputMaybe; - token1Price_gt?: InputMaybe; - token1Price_gte?: InputMaybe; - token1Price_in?: InputMaybe>; - token1Price_lt?: InputMaybe; - token1Price_lte?: InputMaybe; - token1Price_not?: InputMaybe; - token1Price_not_in?: InputMaybe>; - token1_?: InputMaybe; - token1_contains?: InputMaybe; - token1_contains_nocase?: InputMaybe; - token1_ends_with?: InputMaybe; - token1_ends_with_nocase?: InputMaybe; - token1_gt?: InputMaybe; - token1_gte?: InputMaybe; - token1_in?: InputMaybe>; - token1_lt?: InputMaybe; - token1_lte?: InputMaybe; - token1_not?: InputMaybe; - token1_not_contains?: InputMaybe; - token1_not_contains_nocase?: InputMaybe; - token1_not_ends_with?: InputMaybe; - token1_not_ends_with_nocase?: InputMaybe; - token1_not_in?: InputMaybe>; - token1_not_starts_with?: InputMaybe; - token1_not_starts_with_nocase?: InputMaybe; - token1_starts_with?: InputMaybe; - token1_starts_with_nocase?: InputMaybe; - token1relativePrice?: InputMaybe; - token1relativePrice_gt?: InputMaybe; - token1relativePrice_gte?: InputMaybe; - token1relativePrice_in?: InputMaybe>; - token1relativePrice_lt?: InputMaybe; - token1relativePrice_lte?: InputMaybe; - token1relativePrice_not?: InputMaybe; - token1relativePrice_not_in?: InputMaybe>; - volumeToken0?: InputMaybe; - volumeToken0_gt?: InputMaybe; - volumeToken0_gte?: InputMaybe; - volumeToken0_in?: InputMaybe>; - volumeToken0_lt?: InputMaybe; - volumeToken0_lte?: InputMaybe; - volumeToken0_not?: InputMaybe; - volumeToken0_not_in?: InputMaybe>; - volumeToken1?: InputMaybe; - volumeToken1_gt?: InputMaybe; - volumeToken1_gte?: InputMaybe; - volumeToken1_in?: InputMaybe>; - volumeToken1_lt?: InputMaybe; - volumeToken1_lte?: InputMaybe; - volumeToken1_not?: InputMaybe; - volumeToken1_not_in?: InputMaybe>; - volumeTradedEth?: InputMaybe; - volumeTradedEth_gt?: InputMaybe; - volumeTradedEth_gte?: InputMaybe; - volumeTradedEth_in?: InputMaybe>; - volumeTradedEth_lt?: InputMaybe; - volumeTradedEth_lte?: InputMaybe; - volumeTradedEth_not?: InputMaybe; - volumeTradedEth_not_in?: InputMaybe>; - volumeTradedUsd?: InputMaybe; - volumeTradedUsd_gt?: InputMaybe; - volumeTradedUsd_gte?: InputMaybe; - volumeTradedUsd_in?: InputMaybe>; - volumeTradedUsd_lt?: InputMaybe; - volumeTradedUsd_lte?: InputMaybe; - volumeTradedUsd_not?: InputMaybe; - volumeTradedUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + token0?: InputMaybe + token0Price?: InputMaybe + token0Price_gt?: InputMaybe + token0Price_gte?: InputMaybe + token0Price_in?: InputMaybe> + token0Price_lt?: InputMaybe + token0Price_lte?: InputMaybe + token0Price_not?: InputMaybe + token0Price_not_in?: InputMaybe> + token0_?: InputMaybe + token0_contains?: InputMaybe + token0_contains_nocase?: InputMaybe + token0_ends_with?: InputMaybe + token0_ends_with_nocase?: InputMaybe + token0_gt?: InputMaybe + token0_gte?: InputMaybe + token0_in?: InputMaybe> + token0_lt?: InputMaybe + token0_lte?: InputMaybe + token0_not?: InputMaybe + token0_not_contains?: InputMaybe + token0_not_contains_nocase?: InputMaybe + token0_not_ends_with?: InputMaybe + token0_not_ends_with_nocase?: InputMaybe + token0_not_in?: InputMaybe> + token0_not_starts_with?: InputMaybe + token0_not_starts_with_nocase?: InputMaybe + token0_starts_with?: InputMaybe + token0_starts_with_nocase?: InputMaybe + token0relativePrice?: InputMaybe + token0relativePrice_gt?: InputMaybe + token0relativePrice_gte?: InputMaybe + token0relativePrice_in?: InputMaybe> + token0relativePrice_lt?: InputMaybe + token0relativePrice_lte?: InputMaybe + token0relativePrice_not?: InputMaybe + token0relativePrice_not_in?: InputMaybe> + token1?: InputMaybe + token1Price?: InputMaybe + token1Price_gt?: InputMaybe + token1Price_gte?: InputMaybe + token1Price_in?: InputMaybe> + token1Price_lt?: InputMaybe + token1Price_lte?: InputMaybe + token1Price_not?: InputMaybe + token1Price_not_in?: InputMaybe> + token1_?: InputMaybe + token1_contains?: InputMaybe + token1_contains_nocase?: InputMaybe + token1_ends_with?: InputMaybe + token1_ends_with_nocase?: InputMaybe + token1_gt?: InputMaybe + token1_gte?: InputMaybe + token1_in?: InputMaybe> + token1_lt?: InputMaybe + token1_lte?: InputMaybe + token1_not?: InputMaybe + token1_not_contains?: InputMaybe + token1_not_contains_nocase?: InputMaybe + token1_not_ends_with?: InputMaybe + token1_not_ends_with_nocase?: InputMaybe + token1_not_in?: InputMaybe> + token1_not_starts_with?: InputMaybe + token1_not_starts_with_nocase?: InputMaybe + token1_starts_with?: InputMaybe + token1_starts_with_nocase?: InputMaybe + token1relativePrice?: InputMaybe + token1relativePrice_gt?: InputMaybe + token1relativePrice_gte?: InputMaybe + token1relativePrice_in?: InputMaybe> + token1relativePrice_lt?: InputMaybe + token1relativePrice_lte?: InputMaybe + token1relativePrice_not?: InputMaybe + token1relativePrice_not_in?: InputMaybe> + volumeToken0?: InputMaybe + volumeToken0_gt?: InputMaybe + volumeToken0_gte?: InputMaybe + volumeToken0_in?: InputMaybe> + volumeToken0_lt?: InputMaybe + volumeToken0_lte?: InputMaybe + volumeToken0_not?: InputMaybe + volumeToken0_not_in?: InputMaybe> + volumeToken1?: InputMaybe + volumeToken1_gt?: InputMaybe + volumeToken1_gte?: InputMaybe + volumeToken1_in?: InputMaybe> + volumeToken1_lt?: InputMaybe + volumeToken1_lte?: InputMaybe + volumeToken1_not?: InputMaybe + volumeToken1_not_in?: InputMaybe> + volumeTradedEth?: InputMaybe + volumeTradedEth_gt?: InputMaybe + volumeTradedEth_gte?: InputMaybe + volumeTradedEth_in?: InputMaybe> + volumeTradedEth_lt?: InputMaybe + volumeTradedEth_lte?: InputMaybe + volumeTradedEth_not?: InputMaybe + volumeTradedEth_not_in?: InputMaybe> + volumeTradedUsd?: InputMaybe + volumeTradedUsd_gt?: InputMaybe + volumeTradedUsd_gte?: InputMaybe + volumeTradedUsd_in?: InputMaybe> + volumeTradedUsd_lt?: InputMaybe + volumeTradedUsd_lte?: InputMaybe + volumeTradedUsd_not?: InputMaybe + volumeTradedUsd_not_in?: InputMaybe> +} export enum PairHourly_OrderBy { Id = 'id', @@ -896,129 +893,129 @@ export enum PairHourly_OrderBy { VolumeToken0 = 'volumeToken0', VolumeToken1 = 'volumeToken1', VolumeTradedEth = 'volumeTradedEth', - VolumeTradedUsd = 'volumeTradedUsd' + VolumeTradedUsd = 'volumeTradedUsd', } export type Pair_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - token0?: InputMaybe; - token0Price?: InputMaybe; - token0Price_gt?: InputMaybe; - token0Price_gte?: InputMaybe; - token0Price_in?: InputMaybe>; - token0Price_lt?: InputMaybe; - token0Price_lte?: InputMaybe; - token0Price_not?: InputMaybe; - token0Price_not_in?: InputMaybe>; - token0_?: InputMaybe; - token0_contains?: InputMaybe; - token0_contains_nocase?: InputMaybe; - token0_ends_with?: InputMaybe; - token0_ends_with_nocase?: InputMaybe; - token0_gt?: InputMaybe; - token0_gte?: InputMaybe; - token0_in?: InputMaybe>; - token0_lt?: InputMaybe; - token0_lte?: InputMaybe; - token0_not?: InputMaybe; - token0_not_contains?: InputMaybe; - token0_not_contains_nocase?: InputMaybe; - token0_not_ends_with?: InputMaybe; - token0_not_ends_with_nocase?: InputMaybe; - token0_not_in?: InputMaybe>; - token0_not_starts_with?: InputMaybe; - token0_not_starts_with_nocase?: InputMaybe; - token0_starts_with?: InputMaybe; - token0_starts_with_nocase?: InputMaybe; - token0relativePrice?: InputMaybe; - token0relativePrice_gt?: InputMaybe; - token0relativePrice_gte?: InputMaybe; - token0relativePrice_in?: InputMaybe>; - token0relativePrice_lt?: InputMaybe; - token0relativePrice_lte?: InputMaybe; - token0relativePrice_not?: InputMaybe; - token0relativePrice_not_in?: InputMaybe>; - token1?: InputMaybe; - token1Price?: InputMaybe; - token1Price_gt?: InputMaybe; - token1Price_gte?: InputMaybe; - token1Price_in?: InputMaybe>; - token1Price_lt?: InputMaybe; - token1Price_lte?: InputMaybe; - token1Price_not?: InputMaybe; - token1Price_not_in?: InputMaybe>; - token1_?: InputMaybe; - token1_contains?: InputMaybe; - token1_contains_nocase?: InputMaybe; - token1_ends_with?: InputMaybe; - token1_ends_with_nocase?: InputMaybe; - token1_gt?: InputMaybe; - token1_gte?: InputMaybe; - token1_in?: InputMaybe>; - token1_lt?: InputMaybe; - token1_lte?: InputMaybe; - token1_not?: InputMaybe; - token1_not_contains?: InputMaybe; - token1_not_contains_nocase?: InputMaybe; - token1_not_ends_with?: InputMaybe; - token1_not_ends_with_nocase?: InputMaybe; - token1_not_in?: InputMaybe>; - token1_not_starts_with?: InputMaybe; - token1_not_starts_with_nocase?: InputMaybe; - token1_starts_with?: InputMaybe; - token1_starts_with_nocase?: InputMaybe; - token1relativePrice?: InputMaybe; - token1relativePrice_gt?: InputMaybe; - token1relativePrice_gte?: InputMaybe; - token1relativePrice_in?: InputMaybe>; - token1relativePrice_lt?: InputMaybe; - token1relativePrice_lte?: InputMaybe; - token1relativePrice_not?: InputMaybe; - token1relativePrice_not_in?: InputMaybe>; - volumeToken0?: InputMaybe; - volumeToken0_gt?: InputMaybe; - volumeToken0_gte?: InputMaybe; - volumeToken0_in?: InputMaybe>; - volumeToken0_lt?: InputMaybe; - volumeToken0_lte?: InputMaybe; - volumeToken0_not?: InputMaybe; - volumeToken0_not_in?: InputMaybe>; - volumeToken1?: InputMaybe; - volumeToken1_gt?: InputMaybe; - volumeToken1_gte?: InputMaybe; - volumeToken1_in?: InputMaybe>; - volumeToken1_lt?: InputMaybe; - volumeToken1_lte?: InputMaybe; - volumeToken1_not?: InputMaybe; - volumeToken1_not_in?: InputMaybe>; - volumeTradedEth?: InputMaybe; - volumeTradedEth_gt?: InputMaybe; - volumeTradedEth_gte?: InputMaybe; - volumeTradedEth_in?: InputMaybe>; - volumeTradedEth_lt?: InputMaybe; - volumeTradedEth_lte?: InputMaybe; - volumeTradedEth_not?: InputMaybe; - volumeTradedEth_not_in?: InputMaybe>; - volumeTradedUsd?: InputMaybe; - volumeTradedUsd_gt?: InputMaybe; - volumeTradedUsd_gte?: InputMaybe; - volumeTradedUsd_in?: InputMaybe>; - volumeTradedUsd_lt?: InputMaybe; - volumeTradedUsd_lte?: InputMaybe; - volumeTradedUsd_not?: InputMaybe; - volumeTradedUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + token0?: InputMaybe + token0Price?: InputMaybe + token0Price_gt?: InputMaybe + token0Price_gte?: InputMaybe + token0Price_in?: InputMaybe> + token0Price_lt?: InputMaybe + token0Price_lte?: InputMaybe + token0Price_not?: InputMaybe + token0Price_not_in?: InputMaybe> + token0_?: InputMaybe + token0_contains?: InputMaybe + token0_contains_nocase?: InputMaybe + token0_ends_with?: InputMaybe + token0_ends_with_nocase?: InputMaybe + token0_gt?: InputMaybe + token0_gte?: InputMaybe + token0_in?: InputMaybe> + token0_lt?: InputMaybe + token0_lte?: InputMaybe + token0_not?: InputMaybe + token0_not_contains?: InputMaybe + token0_not_contains_nocase?: InputMaybe + token0_not_ends_with?: InputMaybe + token0_not_ends_with_nocase?: InputMaybe + token0_not_in?: InputMaybe> + token0_not_starts_with?: InputMaybe + token0_not_starts_with_nocase?: InputMaybe + token0_starts_with?: InputMaybe + token0_starts_with_nocase?: InputMaybe + token0relativePrice?: InputMaybe + token0relativePrice_gt?: InputMaybe + token0relativePrice_gte?: InputMaybe + token0relativePrice_in?: InputMaybe> + token0relativePrice_lt?: InputMaybe + token0relativePrice_lte?: InputMaybe + token0relativePrice_not?: InputMaybe + token0relativePrice_not_in?: InputMaybe> + token1?: InputMaybe + token1Price?: InputMaybe + token1Price_gt?: InputMaybe + token1Price_gte?: InputMaybe + token1Price_in?: InputMaybe> + token1Price_lt?: InputMaybe + token1Price_lte?: InputMaybe + token1Price_not?: InputMaybe + token1Price_not_in?: InputMaybe> + token1_?: InputMaybe + token1_contains?: InputMaybe + token1_contains_nocase?: InputMaybe + token1_ends_with?: InputMaybe + token1_ends_with_nocase?: InputMaybe + token1_gt?: InputMaybe + token1_gte?: InputMaybe + token1_in?: InputMaybe> + token1_lt?: InputMaybe + token1_lte?: InputMaybe + token1_not?: InputMaybe + token1_not_contains?: InputMaybe + token1_not_contains_nocase?: InputMaybe + token1_not_ends_with?: InputMaybe + token1_not_ends_with_nocase?: InputMaybe + token1_not_in?: InputMaybe> + token1_not_starts_with?: InputMaybe + token1_not_starts_with_nocase?: InputMaybe + token1_starts_with?: InputMaybe + token1_starts_with_nocase?: InputMaybe + token1relativePrice?: InputMaybe + token1relativePrice_gt?: InputMaybe + token1relativePrice_gte?: InputMaybe + token1relativePrice_in?: InputMaybe> + token1relativePrice_lt?: InputMaybe + token1relativePrice_lte?: InputMaybe + token1relativePrice_not?: InputMaybe + token1relativePrice_not_in?: InputMaybe> + volumeToken0?: InputMaybe + volumeToken0_gt?: InputMaybe + volumeToken0_gte?: InputMaybe + volumeToken0_in?: InputMaybe> + volumeToken0_lt?: InputMaybe + volumeToken0_lte?: InputMaybe + volumeToken0_not?: InputMaybe + volumeToken0_not_in?: InputMaybe> + volumeToken1?: InputMaybe + volumeToken1_gt?: InputMaybe + volumeToken1_gte?: InputMaybe + volumeToken1_in?: InputMaybe> + volumeToken1_lt?: InputMaybe + volumeToken1_lte?: InputMaybe + volumeToken1_not?: InputMaybe + volumeToken1_not_in?: InputMaybe> + volumeTradedEth?: InputMaybe + volumeTradedEth_gt?: InputMaybe + volumeTradedEth_gte?: InputMaybe + volumeTradedEth_in?: InputMaybe> + volumeTradedEth_lt?: InputMaybe + volumeTradedEth_lte?: InputMaybe + volumeTradedEth_not?: InputMaybe + volumeTradedEth_not_in?: InputMaybe> + volumeTradedUsd?: InputMaybe + volumeTradedUsd_gt?: InputMaybe + volumeTradedUsd_gte?: InputMaybe + volumeTradedUsd_in?: InputMaybe> + volumeTradedUsd_lt?: InputMaybe + volumeTradedUsd_lte?: InputMaybe + volumeTradedUsd_not?: InputMaybe + volumeTradedUsd_not_in?: InputMaybe> +} export enum Pair_OrderBy { Id = 'id', @@ -1055,437 +1052,401 @@ export enum Pair_OrderBy { VolumeToken0 = 'volumeToken0', VolumeToken1 = 'volumeToken1', VolumeTradedEth = 'volumeTradedEth', - VolumeTradedUsd = 'volumeTradedUsd' + VolumeTradedUsd = 'volumeTradedUsd', } export type Query = { - __typename?: 'Query'; + __typename?: 'Query' /** Access to subgraph metadata */ - _meta?: Maybe<_Meta_>; - bundle?: Maybe; - bundles: Array; - dailyTotal?: Maybe; - dailyTotals: Array; - hourlyTotal?: Maybe; - hourlyTotals: Array; - order?: Maybe; - orders: Array; - pair?: Maybe; - pairDailies: Array; - pairDaily?: Maybe; - pairHourlies: Array; - pairHourly?: Maybe; - pairs: Array; - settlement?: Maybe; - settlements: Array; - token?: Maybe; - tokenDailyTotal?: Maybe; - tokenDailyTotals: Array; - tokenHourlyTotal?: Maybe; - tokenHourlyTotals: Array; - tokenTradingEvent?: Maybe; - tokenTradingEvents: Array; - tokens: Array; - total?: Maybe; - totals: Array; - trade?: Maybe; - trades: Array; - uniswapPool?: Maybe; - uniswapPools: Array; - uniswapToken?: Maybe; - uniswapTokens: Array; - user?: Maybe; - users: Array; -}; - + _meta?: Maybe<_Meta_> + bundle?: Maybe + bundles: Array + dailyTotal?: Maybe + dailyTotals: Array + hourlyTotal?: Maybe + hourlyTotals: Array + order?: Maybe + orders: Array + pair?: Maybe + pairDailies: Array + pairDaily?: Maybe + pairHourlies: Array + pairHourly?: Maybe + pairs: Array + settlement?: Maybe + settlements: Array + token?: Maybe + tokenDailyTotal?: Maybe + tokenDailyTotals: Array + tokenHourlyTotal?: Maybe + tokenHourlyTotals: Array + tokenTradingEvent?: Maybe + tokenTradingEvents: Array + tokens: Array + total?: Maybe + totals: Array + trade?: Maybe + trades: Array + uniswapPool?: Maybe + uniswapPools: Array + uniswapToken?: Maybe + uniswapTokens: Array + user?: Maybe + users: Array +} export type Query_MetaArgs = { - block?: InputMaybe; -}; - + block?: InputMaybe +} export type QueryBundleArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryBundlesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryDailyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryDailyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryHourlyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryHourlyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryOrderArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryOrdersArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryPairArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryPairDailiesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryPairDailyArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryPairHourliesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryPairHourlyArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryPairsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QuerySettlementArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QuerySettlementsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTokenArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTokenDailyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTokenDailyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTokenHourlyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTokenHourlyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTokenTradingEventArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTokenTradingEventsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTokensArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryTradeArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryTradesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryUniswapPoolArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryUniswapPoolsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryUniswapTokenArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryUniswapTokensArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type QueryUserArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type QueryUsersArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type Settlement = { - __typename?: 'Settlement'; + __typename?: 'Settlement' /** First trade timestamp */ - firstTradeTimestamp: Scalars['Int']; + firstTradeTimestamp: Scalars['Int'] /** TxHash */ - id: Scalars['ID']; + id: Scalars['ID'] /** User who solved the settlement */ - solver?: Maybe; + solver?: Maybe /** Collection of trades */ - trades?: Maybe>; + trades?: Maybe> /** Transaction hash */ - txHash: Scalars['Bytes']; -}; - + txHash: Scalars['Bytes'] +} export type SettlementTradesArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type Settlement_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - firstTradeTimestamp?: InputMaybe; - firstTradeTimestamp_gt?: InputMaybe; - firstTradeTimestamp_gte?: InputMaybe; - firstTradeTimestamp_in?: InputMaybe>; - firstTradeTimestamp_lt?: InputMaybe; - firstTradeTimestamp_lte?: InputMaybe; - firstTradeTimestamp_not?: InputMaybe; - firstTradeTimestamp_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - solver?: InputMaybe; - solver_?: InputMaybe; - solver_contains?: InputMaybe; - solver_contains_nocase?: InputMaybe; - solver_ends_with?: InputMaybe; - solver_ends_with_nocase?: InputMaybe; - solver_gt?: InputMaybe; - solver_gte?: InputMaybe; - solver_in?: InputMaybe>; - solver_lt?: InputMaybe; - solver_lte?: InputMaybe; - solver_not?: InputMaybe; - solver_not_contains?: InputMaybe; - solver_not_contains_nocase?: InputMaybe; - solver_not_ends_with?: InputMaybe; - solver_not_ends_with_nocase?: InputMaybe; - solver_not_in?: InputMaybe>; - solver_not_starts_with?: InputMaybe; - solver_not_starts_with_nocase?: InputMaybe; - solver_starts_with?: InputMaybe; - solver_starts_with_nocase?: InputMaybe; - trades_?: InputMaybe; - txHash?: InputMaybe; - txHash_contains?: InputMaybe; - txHash_gt?: InputMaybe; - txHash_gte?: InputMaybe; - txHash_in?: InputMaybe>; - txHash_lt?: InputMaybe; - txHash_lte?: InputMaybe; - txHash_not?: InputMaybe; - txHash_not_contains?: InputMaybe; - txHash_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + firstTradeTimestamp?: InputMaybe + firstTradeTimestamp_gt?: InputMaybe + firstTradeTimestamp_gte?: InputMaybe + firstTradeTimestamp_in?: InputMaybe> + firstTradeTimestamp_lt?: InputMaybe + firstTradeTimestamp_lte?: InputMaybe + firstTradeTimestamp_not?: InputMaybe + firstTradeTimestamp_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + solver?: InputMaybe + solver_?: InputMaybe + solver_contains?: InputMaybe + solver_contains_nocase?: InputMaybe + solver_ends_with?: InputMaybe + solver_ends_with_nocase?: InputMaybe + solver_gt?: InputMaybe + solver_gte?: InputMaybe + solver_in?: InputMaybe> + solver_lt?: InputMaybe + solver_lte?: InputMaybe + solver_not?: InputMaybe + solver_not_contains?: InputMaybe + solver_not_contains_nocase?: InputMaybe + solver_not_ends_with?: InputMaybe + solver_not_ends_with_nocase?: InputMaybe + solver_not_in?: InputMaybe> + solver_not_starts_with?: InputMaybe + solver_not_starts_with_nocase?: InputMaybe + solver_starts_with?: InputMaybe + solver_starts_with_nocase?: InputMaybe + trades_?: InputMaybe + txHash?: InputMaybe + txHash_contains?: InputMaybe + txHash_gt?: InputMaybe + txHash_gte?: InputMaybe + txHash_in?: InputMaybe> + txHash_lt?: InputMaybe + txHash_lte?: InputMaybe + txHash_not?: InputMaybe + txHash_not_contains?: InputMaybe + txHash_not_in?: InputMaybe> +} export enum Settlement_OrderBy { FirstTradeTimestamp = 'firstTradeTimestamp', @@ -1501,564 +1462,526 @@ export enum Settlement_OrderBy { SolverTradedAmountEth = 'solver__tradedAmountEth', SolverTradedAmountUsd = 'solver__tradedAmountUsd', Trades = 'trades', - TxHash = 'txHash' + TxHash = 'txHash', } export type Subscription = { - __typename?: 'Subscription'; + __typename?: 'Subscription' /** Access to subgraph metadata */ - _meta?: Maybe<_Meta_>; - bundle?: Maybe; - bundles: Array; - dailyTotal?: Maybe; - dailyTotals: Array; - hourlyTotal?: Maybe; - hourlyTotals: Array; - order?: Maybe; - orders: Array; - pair?: Maybe; - pairDailies: Array; - pairDaily?: Maybe; - pairHourlies: Array; - pairHourly?: Maybe; - pairs: Array; - settlement?: Maybe; - settlements: Array; - token?: Maybe; - tokenDailyTotal?: Maybe; - tokenDailyTotals: Array; - tokenHourlyTotal?: Maybe; - tokenHourlyTotals: Array; - tokenTradingEvent?: Maybe; - tokenTradingEvents: Array; - tokens: Array; - total?: Maybe; - totals: Array; - trade?: Maybe; - trades: Array; - uniswapPool?: Maybe; - uniswapPools: Array; - uniswapToken?: Maybe; - uniswapTokens: Array; - user?: Maybe; - users: Array; -}; - + _meta?: Maybe<_Meta_> + bundle?: Maybe + bundles: Array + dailyTotal?: Maybe + dailyTotals: Array + hourlyTotal?: Maybe + hourlyTotals: Array + order?: Maybe + orders: Array + pair?: Maybe + pairDailies: Array + pairDaily?: Maybe + pairHourlies: Array + pairHourly?: Maybe + pairs: Array + settlement?: Maybe + settlements: Array + token?: Maybe + tokenDailyTotal?: Maybe + tokenDailyTotals: Array + tokenHourlyTotal?: Maybe + tokenHourlyTotals: Array + tokenTradingEvent?: Maybe + tokenTradingEvents: Array + tokens: Array + total?: Maybe + totals: Array + trade?: Maybe + trades: Array + uniswapPool?: Maybe + uniswapPools: Array + uniswapToken?: Maybe + uniswapTokens: Array + user?: Maybe + users: Array +} export type Subscription_MetaArgs = { - block?: InputMaybe; -}; - + block?: InputMaybe +} export type SubscriptionBundleArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionBundlesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionDailyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionDailyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionHourlyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionHourlyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionOrderArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionOrdersArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionPairArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionPairDailiesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionPairDailyArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionPairHourliesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionPairHourlyArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionPairsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionSettlementArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionSettlementsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTokenArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTokenDailyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTokenDailyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTokenHourlyTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTokenHourlyTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTokenTradingEventArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTokenTradingEventsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTokensArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTotalArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTotalsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionTradeArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionTradesArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionUniswapPoolArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionUniswapPoolsArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionUniswapTokenArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionUniswapTokensArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; - + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type SubscriptionUserArgs = { - block?: InputMaybe; - id: Scalars['ID']; - subgraphError?: _SubgraphErrorPolicy_; -}; - + block?: InputMaybe + id: Scalars['ID'] + subgraphError?: _SubgraphErrorPolicy_ +} export type SubscriptionUsersArgs = { - block?: InputMaybe; - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - subgraphError?: _SubgraphErrorPolicy_; - where?: InputMaybe; -}; + block?: InputMaybe + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + subgraphError?: _SubgraphErrorPolicy_ + where?: InputMaybe +} export type Token = { - __typename?: 'Token'; + __typename?: 'Token' /** Token address */ - address: Scalars['Bytes']; + address: Scalars['Bytes'] /** Daily totals */ - dailyTotals: Array; + dailyTotals: Array /** Token decimals fetched by contract call */ - decimals: Scalars['Int']; + decimals: Scalars['Int'] /** First token trade block timestamp */ - firstTradeTimestamp: Scalars['Int']; + firstTradeTimestamp: Scalars['Int'] /** History of trading for this token */ - history: Array; + history: Array /** Hourly totals */ - hourlyTotals: Array; + hourlyTotals: Array /** Token address to hexString */ - id: Scalars['ID']; + id: Scalars['ID'] /** Token name fetched by ERC20 contract call */ - name: Scalars['String']; + name: Scalars['String'] /** Total trades */ - numberOfTrades: Scalars['Int']; + numberOfTrades: Scalars['Int'] /** Derived price in ETH */ - priceEth?: Maybe; + priceEth?: Maybe /** Derived price in USD */ - priceUsd?: Maybe; + priceUsd?: Maybe /** Token symbol fetched by contract call */ - symbol: Scalars['String']; + symbol: Scalars['String'] /** Total volume managed in CowSwap */ - totalVolume?: Maybe; + totalVolume?: Maybe /** Total volume in Eth */ - totalVolumeEth: Scalars['BigDecimal']; + totalVolumeEth: Scalars['BigDecimal'] /** Total volume in Usd */ - totalVolumeUsd: Scalars['BigDecimal']; -}; - + totalVolumeUsd: Scalars['BigDecimal'] +} export type TokenDailyTotalsArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; - + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type TokenHistoryArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; - + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type TokenHourlyTotalsArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type TokenDailyTotal = { - __typename?: 'TokenDailyTotal'; + __typename?: 'TokenDailyTotal' /** Average trade price */ - averagePrice: Scalars['BigDecimal']; + averagePrice: Scalars['BigDecimal'] /** Last trade price */ - closePrice: Scalars['BigDecimal']; + closePrice: Scalars['BigDecimal'] /** Higher trade price */ - higherPrice: Scalars['BigDecimal']; + higherPrice: Scalars['BigDecimal'] /** TokenAddress + timestamp day */ - id: Scalars['ID']; + id: Scalars['ID'] /** Lower trade price */ - lowerPrice: Scalars['BigDecimal']; + lowerPrice: Scalars['BigDecimal'] /** First trade price */ - openPrice: Scalars['BigDecimal']; + openPrice: Scalars['BigDecimal'] /** Start day timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Token address */ - token: Token; + token: Token /** Number of trades that day */ - totalTrades: Scalars['BigInt']; + totalTrades: Scalars['BigInt'] /** Total volume traded that day in token */ - totalVolume: Scalars['BigInt']; + totalVolume: Scalars['BigInt'] /** Total amount traded that day in ETH */ - totalVolumeEth: Scalars['BigDecimal']; + totalVolumeEth: Scalars['BigDecimal'] /** Total amount traded that day in USD */ - totalVolumeUsd: Scalars['BigDecimal']; -}; + totalVolumeUsd: Scalars['BigDecimal'] +} export type TokenDailyTotal_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - averagePrice?: InputMaybe; - averagePrice_gt?: InputMaybe; - averagePrice_gte?: InputMaybe; - averagePrice_in?: InputMaybe>; - averagePrice_lt?: InputMaybe; - averagePrice_lte?: InputMaybe; - averagePrice_not?: InputMaybe; - averagePrice_not_in?: InputMaybe>; - closePrice?: InputMaybe; - closePrice_gt?: InputMaybe; - closePrice_gte?: InputMaybe; - closePrice_in?: InputMaybe>; - closePrice_lt?: InputMaybe; - closePrice_lte?: InputMaybe; - closePrice_not?: InputMaybe; - closePrice_not_in?: InputMaybe>; - higherPrice?: InputMaybe; - higherPrice_gt?: InputMaybe; - higherPrice_gte?: InputMaybe; - higherPrice_in?: InputMaybe>; - higherPrice_lt?: InputMaybe; - higherPrice_lte?: InputMaybe; - higherPrice_not?: InputMaybe; - higherPrice_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - lowerPrice?: InputMaybe; - lowerPrice_gt?: InputMaybe; - lowerPrice_gte?: InputMaybe; - lowerPrice_in?: InputMaybe>; - lowerPrice_lt?: InputMaybe; - lowerPrice_lte?: InputMaybe; - lowerPrice_not?: InputMaybe; - lowerPrice_not_in?: InputMaybe>; - openPrice?: InputMaybe; - openPrice_gt?: InputMaybe; - openPrice_gte?: InputMaybe; - openPrice_in?: InputMaybe>; - openPrice_lt?: InputMaybe; - openPrice_lte?: InputMaybe; - openPrice_not?: InputMaybe; - openPrice_not_in?: InputMaybe>; - or?: InputMaybe>>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - token?: InputMaybe; - token_?: InputMaybe; - token_contains?: InputMaybe; - token_contains_nocase?: InputMaybe; - token_ends_with?: InputMaybe; - token_ends_with_nocase?: InputMaybe; - token_gt?: InputMaybe; - token_gte?: InputMaybe; - token_in?: InputMaybe>; - token_lt?: InputMaybe; - token_lte?: InputMaybe; - token_not?: InputMaybe; - token_not_contains?: InputMaybe; - token_not_contains_nocase?: InputMaybe; - token_not_ends_with?: InputMaybe; - token_not_ends_with_nocase?: InputMaybe; - token_not_in?: InputMaybe>; - token_not_starts_with?: InputMaybe; - token_not_starts_with_nocase?: InputMaybe; - token_starts_with?: InputMaybe; - token_starts_with_nocase?: InputMaybe; - totalTrades?: InputMaybe; - totalTrades_gt?: InputMaybe; - totalTrades_gte?: InputMaybe; - totalTrades_in?: InputMaybe>; - totalTrades_lt?: InputMaybe; - totalTrades_lte?: InputMaybe; - totalTrades_not?: InputMaybe; - totalTrades_not_in?: InputMaybe>; - totalVolume?: InputMaybe; - totalVolumeEth?: InputMaybe; - totalVolumeEth_gt?: InputMaybe; - totalVolumeEth_gte?: InputMaybe; - totalVolumeEth_in?: InputMaybe>; - totalVolumeEth_lt?: InputMaybe; - totalVolumeEth_lte?: InputMaybe; - totalVolumeEth_not?: InputMaybe; - totalVolumeEth_not_in?: InputMaybe>; - totalVolumeUsd?: InputMaybe; - totalVolumeUsd_gt?: InputMaybe; - totalVolumeUsd_gte?: InputMaybe; - totalVolumeUsd_in?: InputMaybe>; - totalVolumeUsd_lt?: InputMaybe; - totalVolumeUsd_lte?: InputMaybe; - totalVolumeUsd_not?: InputMaybe; - totalVolumeUsd_not_in?: InputMaybe>; - totalVolume_gt?: InputMaybe; - totalVolume_gte?: InputMaybe; - totalVolume_in?: InputMaybe>; - totalVolume_lt?: InputMaybe; - totalVolume_lte?: InputMaybe; - totalVolume_not?: InputMaybe; - totalVolume_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + averagePrice?: InputMaybe + averagePrice_gt?: InputMaybe + averagePrice_gte?: InputMaybe + averagePrice_in?: InputMaybe> + averagePrice_lt?: InputMaybe + averagePrice_lte?: InputMaybe + averagePrice_not?: InputMaybe + averagePrice_not_in?: InputMaybe> + closePrice?: InputMaybe + closePrice_gt?: InputMaybe + closePrice_gte?: InputMaybe + closePrice_in?: InputMaybe> + closePrice_lt?: InputMaybe + closePrice_lte?: InputMaybe + closePrice_not?: InputMaybe + closePrice_not_in?: InputMaybe> + higherPrice?: InputMaybe + higherPrice_gt?: InputMaybe + higherPrice_gte?: InputMaybe + higherPrice_in?: InputMaybe> + higherPrice_lt?: InputMaybe + higherPrice_lte?: InputMaybe + higherPrice_not?: InputMaybe + higherPrice_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + lowerPrice?: InputMaybe + lowerPrice_gt?: InputMaybe + lowerPrice_gte?: InputMaybe + lowerPrice_in?: InputMaybe> + lowerPrice_lt?: InputMaybe + lowerPrice_lte?: InputMaybe + lowerPrice_not?: InputMaybe + lowerPrice_not_in?: InputMaybe> + openPrice?: InputMaybe + openPrice_gt?: InputMaybe + openPrice_gte?: InputMaybe + openPrice_in?: InputMaybe> + openPrice_lt?: InputMaybe + openPrice_lte?: InputMaybe + openPrice_not?: InputMaybe + openPrice_not_in?: InputMaybe> + or?: InputMaybe>> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + token?: InputMaybe + token_?: InputMaybe + token_contains?: InputMaybe + token_contains_nocase?: InputMaybe + token_ends_with?: InputMaybe + token_ends_with_nocase?: InputMaybe + token_gt?: InputMaybe + token_gte?: InputMaybe + token_in?: InputMaybe> + token_lt?: InputMaybe + token_lte?: InputMaybe + token_not?: InputMaybe + token_not_contains?: InputMaybe + token_not_contains_nocase?: InputMaybe + token_not_ends_with?: InputMaybe + token_not_ends_with_nocase?: InputMaybe + token_not_in?: InputMaybe> + token_not_starts_with?: InputMaybe + token_not_starts_with_nocase?: InputMaybe + token_starts_with?: InputMaybe + token_starts_with_nocase?: InputMaybe + totalTrades?: InputMaybe + totalTrades_gt?: InputMaybe + totalTrades_gte?: InputMaybe + totalTrades_in?: InputMaybe> + totalTrades_lt?: InputMaybe + totalTrades_lte?: InputMaybe + totalTrades_not?: InputMaybe + totalTrades_not_in?: InputMaybe> + totalVolume?: InputMaybe + totalVolumeEth?: InputMaybe + totalVolumeEth_gt?: InputMaybe + totalVolumeEth_gte?: InputMaybe + totalVolumeEth_in?: InputMaybe> + totalVolumeEth_lt?: InputMaybe + totalVolumeEth_lte?: InputMaybe + totalVolumeEth_not?: InputMaybe + totalVolumeEth_not_in?: InputMaybe> + totalVolumeUsd?: InputMaybe + totalVolumeUsd_gt?: InputMaybe + totalVolumeUsd_gte?: InputMaybe + totalVolumeUsd_in?: InputMaybe> + totalVolumeUsd_lt?: InputMaybe + totalVolumeUsd_lte?: InputMaybe + totalVolumeUsd_not?: InputMaybe + totalVolumeUsd_not_in?: InputMaybe> + totalVolume_gt?: InputMaybe + totalVolume_gte?: InputMaybe + totalVolume_in?: InputMaybe> + totalVolume_lt?: InputMaybe + totalVolume_lte?: InputMaybe + totalVolume_not?: InputMaybe + totalVolume_not_in?: InputMaybe> +} export enum TokenDailyTotal_OrderBy { AveragePrice = 'averagePrice', @@ -2084,152 +2007,152 @@ export enum TokenDailyTotal_OrderBy { TotalTrades = 'totalTrades', TotalVolume = 'totalVolume', TotalVolumeEth = 'totalVolumeEth', - TotalVolumeUsd = 'totalVolumeUsd' + TotalVolumeUsd = 'totalVolumeUsd', } export type TokenHourlyTotal = { - __typename?: 'TokenHourlyTotal'; + __typename?: 'TokenHourlyTotal' /** Average trade price */ - averagePrice: Scalars['BigDecimal']; + averagePrice: Scalars['BigDecimal'] /** Last trade price */ - closePrice: Scalars['BigDecimal']; + closePrice: Scalars['BigDecimal'] /** Higher trade price */ - higherPrice: Scalars['BigDecimal']; + higherPrice: Scalars['BigDecimal'] /** TokenAddress + timestamp hour */ - id: Scalars['ID']; + id: Scalars['ID'] /** Lower trade price */ - lowerPrice: Scalars['BigDecimal']; + lowerPrice: Scalars['BigDecimal'] /** First trade price */ - openPrice: Scalars['BigDecimal']; + openPrice: Scalars['BigDecimal'] /** Start hour timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Token address */ - token: Token; + token: Token /** Number of trades that hour */ - totalTrades: Scalars['BigInt']; + totalTrades: Scalars['BigInt'] /** Total volume traded that day in token */ - totalVolume: Scalars['BigInt']; + totalVolume: Scalars['BigInt'] /** Total amount traded that hour in ETH */ - totalVolumeEth: Scalars['BigDecimal']; + totalVolumeEth: Scalars['BigDecimal'] /** Total amount traded that hour in USD */ - totalVolumeUsd: Scalars['BigDecimal']; -}; + totalVolumeUsd: Scalars['BigDecimal'] +} export type TokenHourlyTotal_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - averagePrice?: InputMaybe; - averagePrice_gt?: InputMaybe; - averagePrice_gte?: InputMaybe; - averagePrice_in?: InputMaybe>; - averagePrice_lt?: InputMaybe; - averagePrice_lte?: InputMaybe; - averagePrice_not?: InputMaybe; - averagePrice_not_in?: InputMaybe>; - closePrice?: InputMaybe; - closePrice_gt?: InputMaybe; - closePrice_gte?: InputMaybe; - closePrice_in?: InputMaybe>; - closePrice_lt?: InputMaybe; - closePrice_lte?: InputMaybe; - closePrice_not?: InputMaybe; - closePrice_not_in?: InputMaybe>; - higherPrice?: InputMaybe; - higherPrice_gt?: InputMaybe; - higherPrice_gte?: InputMaybe; - higherPrice_in?: InputMaybe>; - higherPrice_lt?: InputMaybe; - higherPrice_lte?: InputMaybe; - higherPrice_not?: InputMaybe; - higherPrice_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - lowerPrice?: InputMaybe; - lowerPrice_gt?: InputMaybe; - lowerPrice_gte?: InputMaybe; - lowerPrice_in?: InputMaybe>; - lowerPrice_lt?: InputMaybe; - lowerPrice_lte?: InputMaybe; - lowerPrice_not?: InputMaybe; - lowerPrice_not_in?: InputMaybe>; - openPrice?: InputMaybe; - openPrice_gt?: InputMaybe; - openPrice_gte?: InputMaybe; - openPrice_in?: InputMaybe>; - openPrice_lt?: InputMaybe; - openPrice_lte?: InputMaybe; - openPrice_not?: InputMaybe; - openPrice_not_in?: InputMaybe>; - or?: InputMaybe>>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - token?: InputMaybe; - token_?: InputMaybe; - token_contains?: InputMaybe; - token_contains_nocase?: InputMaybe; - token_ends_with?: InputMaybe; - token_ends_with_nocase?: InputMaybe; - token_gt?: InputMaybe; - token_gte?: InputMaybe; - token_in?: InputMaybe>; - token_lt?: InputMaybe; - token_lte?: InputMaybe; - token_not?: InputMaybe; - token_not_contains?: InputMaybe; - token_not_contains_nocase?: InputMaybe; - token_not_ends_with?: InputMaybe; - token_not_ends_with_nocase?: InputMaybe; - token_not_in?: InputMaybe>; - token_not_starts_with?: InputMaybe; - token_not_starts_with_nocase?: InputMaybe; - token_starts_with?: InputMaybe; - token_starts_with_nocase?: InputMaybe; - totalTrades?: InputMaybe; - totalTrades_gt?: InputMaybe; - totalTrades_gte?: InputMaybe; - totalTrades_in?: InputMaybe>; - totalTrades_lt?: InputMaybe; - totalTrades_lte?: InputMaybe; - totalTrades_not?: InputMaybe; - totalTrades_not_in?: InputMaybe>; - totalVolume?: InputMaybe; - totalVolumeEth?: InputMaybe; - totalVolumeEth_gt?: InputMaybe; - totalVolumeEth_gte?: InputMaybe; - totalVolumeEth_in?: InputMaybe>; - totalVolumeEth_lt?: InputMaybe; - totalVolumeEth_lte?: InputMaybe; - totalVolumeEth_not?: InputMaybe; - totalVolumeEth_not_in?: InputMaybe>; - totalVolumeUsd?: InputMaybe; - totalVolumeUsd_gt?: InputMaybe; - totalVolumeUsd_gte?: InputMaybe; - totalVolumeUsd_in?: InputMaybe>; - totalVolumeUsd_lt?: InputMaybe; - totalVolumeUsd_lte?: InputMaybe; - totalVolumeUsd_not?: InputMaybe; - totalVolumeUsd_not_in?: InputMaybe>; - totalVolume_gt?: InputMaybe; - totalVolume_gte?: InputMaybe; - totalVolume_in?: InputMaybe>; - totalVolume_lt?: InputMaybe; - totalVolume_lte?: InputMaybe; - totalVolume_not?: InputMaybe; - totalVolume_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + averagePrice?: InputMaybe + averagePrice_gt?: InputMaybe + averagePrice_gte?: InputMaybe + averagePrice_in?: InputMaybe> + averagePrice_lt?: InputMaybe + averagePrice_lte?: InputMaybe + averagePrice_not?: InputMaybe + averagePrice_not_in?: InputMaybe> + closePrice?: InputMaybe + closePrice_gt?: InputMaybe + closePrice_gte?: InputMaybe + closePrice_in?: InputMaybe> + closePrice_lt?: InputMaybe + closePrice_lte?: InputMaybe + closePrice_not?: InputMaybe + closePrice_not_in?: InputMaybe> + higherPrice?: InputMaybe + higherPrice_gt?: InputMaybe + higherPrice_gte?: InputMaybe + higherPrice_in?: InputMaybe> + higherPrice_lt?: InputMaybe + higherPrice_lte?: InputMaybe + higherPrice_not?: InputMaybe + higherPrice_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + lowerPrice?: InputMaybe + lowerPrice_gt?: InputMaybe + lowerPrice_gte?: InputMaybe + lowerPrice_in?: InputMaybe> + lowerPrice_lt?: InputMaybe + lowerPrice_lte?: InputMaybe + lowerPrice_not?: InputMaybe + lowerPrice_not_in?: InputMaybe> + openPrice?: InputMaybe + openPrice_gt?: InputMaybe + openPrice_gte?: InputMaybe + openPrice_in?: InputMaybe> + openPrice_lt?: InputMaybe + openPrice_lte?: InputMaybe + openPrice_not?: InputMaybe + openPrice_not_in?: InputMaybe> + or?: InputMaybe>> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + token?: InputMaybe + token_?: InputMaybe + token_contains?: InputMaybe + token_contains_nocase?: InputMaybe + token_ends_with?: InputMaybe + token_ends_with_nocase?: InputMaybe + token_gt?: InputMaybe + token_gte?: InputMaybe + token_in?: InputMaybe> + token_lt?: InputMaybe + token_lte?: InputMaybe + token_not?: InputMaybe + token_not_contains?: InputMaybe + token_not_contains_nocase?: InputMaybe + token_not_ends_with?: InputMaybe + token_not_ends_with_nocase?: InputMaybe + token_not_in?: InputMaybe> + token_not_starts_with?: InputMaybe + token_not_starts_with_nocase?: InputMaybe + token_starts_with?: InputMaybe + token_starts_with_nocase?: InputMaybe + totalTrades?: InputMaybe + totalTrades_gt?: InputMaybe + totalTrades_gte?: InputMaybe + totalTrades_in?: InputMaybe> + totalTrades_lt?: InputMaybe + totalTrades_lte?: InputMaybe + totalTrades_not?: InputMaybe + totalTrades_not_in?: InputMaybe> + totalVolume?: InputMaybe + totalVolumeEth?: InputMaybe + totalVolumeEth_gt?: InputMaybe + totalVolumeEth_gte?: InputMaybe + totalVolumeEth_in?: InputMaybe> + totalVolumeEth_lt?: InputMaybe + totalVolumeEth_lte?: InputMaybe + totalVolumeEth_not?: InputMaybe + totalVolumeEth_not_in?: InputMaybe> + totalVolumeUsd?: InputMaybe + totalVolumeUsd_gt?: InputMaybe + totalVolumeUsd_gte?: InputMaybe + totalVolumeUsd_in?: InputMaybe> + totalVolumeUsd_lt?: InputMaybe + totalVolumeUsd_lte?: InputMaybe + totalVolumeUsd_not?: InputMaybe + totalVolumeUsd_not_in?: InputMaybe> + totalVolume_gt?: InputMaybe + totalVolume_gte?: InputMaybe + totalVolume_in?: InputMaybe> + totalVolume_lt?: InputMaybe + totalVolume_lte?: InputMaybe + totalVolume_not?: InputMaybe + totalVolume_not_in?: InputMaybe> +} export enum TokenHourlyTotal_OrderBy { AveragePrice = 'averagePrice', @@ -2255,105 +2178,105 @@ export enum TokenHourlyTotal_OrderBy { TotalTrades = 'totalTrades', TotalVolume = 'totalVolume', TotalVolumeEth = 'totalVolumeEth', - TotalVolumeUsd = 'totalVolumeUsd' + TotalVolumeUsd = 'totalVolumeUsd', } export type TokenTradingEvent = { - __typename?: 'TokenTradingEvent'; + __typename?: 'TokenTradingEvent' /** Amount in Eth */ - amountEth: Scalars['BigDecimal']; + amountEth: Scalars['BigDecimal'] /** Amount in Usd */ - amountUsd: Scalars['BigDecimal']; + amountUsd: Scalars['BigDecimal'] /** Id built using token-timestamp */ - id: Scalars['ID']; + id: Scalars['ID'] /** Timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Token */ - token: Token; + token: Token /** Trade */ - trade: Trade; -}; + trade: Trade +} export type TokenTradingEvent_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - amountEth?: InputMaybe; - amountEth_gt?: InputMaybe; - amountEth_gte?: InputMaybe; - amountEth_in?: InputMaybe>; - amountEth_lt?: InputMaybe; - amountEth_lte?: InputMaybe; - amountEth_not?: InputMaybe; - amountEth_not_in?: InputMaybe>; - amountUsd?: InputMaybe; - amountUsd_gt?: InputMaybe; - amountUsd_gte?: InputMaybe; - amountUsd_in?: InputMaybe>; - amountUsd_lt?: InputMaybe; - amountUsd_lte?: InputMaybe; - amountUsd_not?: InputMaybe; - amountUsd_not_in?: InputMaybe>; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - token?: InputMaybe; - token_?: InputMaybe; - token_contains?: InputMaybe; - token_contains_nocase?: InputMaybe; - token_ends_with?: InputMaybe; - token_ends_with_nocase?: InputMaybe; - token_gt?: InputMaybe; - token_gte?: InputMaybe; - token_in?: InputMaybe>; - token_lt?: InputMaybe; - token_lte?: InputMaybe; - token_not?: InputMaybe; - token_not_contains?: InputMaybe; - token_not_contains_nocase?: InputMaybe; - token_not_ends_with?: InputMaybe; - token_not_ends_with_nocase?: InputMaybe; - token_not_in?: InputMaybe>; - token_not_starts_with?: InputMaybe; - token_not_starts_with_nocase?: InputMaybe; - token_starts_with?: InputMaybe; - token_starts_with_nocase?: InputMaybe; - trade?: InputMaybe; - trade_?: InputMaybe; - trade_contains?: InputMaybe; - trade_contains_nocase?: InputMaybe; - trade_ends_with?: InputMaybe; - trade_ends_with_nocase?: InputMaybe; - trade_gt?: InputMaybe; - trade_gte?: InputMaybe; - trade_in?: InputMaybe>; - trade_lt?: InputMaybe; - trade_lte?: InputMaybe; - trade_not?: InputMaybe; - trade_not_contains?: InputMaybe; - trade_not_contains_nocase?: InputMaybe; - trade_not_ends_with?: InputMaybe; - trade_not_ends_with_nocase?: InputMaybe; - trade_not_in?: InputMaybe>; - trade_not_starts_with?: InputMaybe; - trade_not_starts_with_nocase?: InputMaybe; - trade_starts_with?: InputMaybe; - trade_starts_with_nocase?: InputMaybe; -}; + _change_block?: InputMaybe + amountEth?: InputMaybe + amountEth_gt?: InputMaybe + amountEth_gte?: InputMaybe + amountEth_in?: InputMaybe> + amountEth_lt?: InputMaybe + amountEth_lte?: InputMaybe + amountEth_not?: InputMaybe + amountEth_not_in?: InputMaybe> + amountUsd?: InputMaybe + amountUsd_gt?: InputMaybe + amountUsd_gte?: InputMaybe + amountUsd_in?: InputMaybe> + amountUsd_lt?: InputMaybe + amountUsd_lte?: InputMaybe + amountUsd_not?: InputMaybe + amountUsd_not_in?: InputMaybe> + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + token?: InputMaybe + token_?: InputMaybe + token_contains?: InputMaybe + token_contains_nocase?: InputMaybe + token_ends_with?: InputMaybe + token_ends_with_nocase?: InputMaybe + token_gt?: InputMaybe + token_gte?: InputMaybe + token_in?: InputMaybe> + token_lt?: InputMaybe + token_lte?: InputMaybe + token_not?: InputMaybe + token_not_contains?: InputMaybe + token_not_contains_nocase?: InputMaybe + token_not_ends_with?: InputMaybe + token_not_ends_with_nocase?: InputMaybe + token_not_in?: InputMaybe> + token_not_starts_with?: InputMaybe + token_not_starts_with_nocase?: InputMaybe + token_starts_with?: InputMaybe + token_starts_with_nocase?: InputMaybe + trade?: InputMaybe + trade_?: InputMaybe + trade_contains?: InputMaybe + trade_contains_nocase?: InputMaybe + trade_ends_with?: InputMaybe + trade_ends_with_nocase?: InputMaybe + trade_gt?: InputMaybe + trade_gte?: InputMaybe + trade_in?: InputMaybe> + trade_lt?: InputMaybe + trade_lte?: InputMaybe + trade_not?: InputMaybe + trade_not_contains?: InputMaybe + trade_not_contains_nocase?: InputMaybe + trade_not_ends_with?: InputMaybe + trade_not_ends_with_nocase?: InputMaybe + trade_not_in?: InputMaybe> + trade_not_starts_with?: InputMaybe + trade_not_starts_with_nocase?: InputMaybe + trade_starts_with?: InputMaybe + trade_starts_with_nocase?: InputMaybe +} export enum TokenTradingEvent_OrderBy { AmountEth = 'amountEth', @@ -2384,140 +2307,140 @@ export enum TokenTradingEvent_OrderBy { TradeSellAmountEth = 'trade__sellAmountEth', TradeSellAmountUsd = 'trade__sellAmountUsd', TradeTimestamp = 'trade__timestamp', - TradeTxHash = 'trade__txHash' + TradeTxHash = 'trade__txHash', } export type Token_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - address?: InputMaybe; - address_contains?: InputMaybe; - address_gt?: InputMaybe; - address_gte?: InputMaybe; - address_in?: InputMaybe>; - address_lt?: InputMaybe; - address_lte?: InputMaybe; - address_not?: InputMaybe; - address_not_contains?: InputMaybe; - address_not_in?: InputMaybe>; - and?: InputMaybe>>; - dailyTotals_?: InputMaybe; - decimals?: InputMaybe; - decimals_gt?: InputMaybe; - decimals_gte?: InputMaybe; - decimals_in?: InputMaybe>; - decimals_lt?: InputMaybe; - decimals_lte?: InputMaybe; - decimals_not?: InputMaybe; - decimals_not_in?: InputMaybe>; - firstTradeTimestamp?: InputMaybe; - firstTradeTimestamp_gt?: InputMaybe; - firstTradeTimestamp_gte?: InputMaybe; - firstTradeTimestamp_in?: InputMaybe>; - firstTradeTimestamp_lt?: InputMaybe; - firstTradeTimestamp_lte?: InputMaybe; - firstTradeTimestamp_not?: InputMaybe; - firstTradeTimestamp_not_in?: InputMaybe>; - history_?: InputMaybe; - hourlyTotals_?: InputMaybe; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - name?: InputMaybe; - name_contains?: InputMaybe; - name_contains_nocase?: InputMaybe; - name_ends_with?: InputMaybe; - name_ends_with_nocase?: InputMaybe; - name_gt?: InputMaybe; - name_gte?: InputMaybe; - name_in?: InputMaybe>; - name_lt?: InputMaybe; - name_lte?: InputMaybe; - name_not?: InputMaybe; - name_not_contains?: InputMaybe; - name_not_contains_nocase?: InputMaybe; - name_not_ends_with?: InputMaybe; - name_not_ends_with_nocase?: InputMaybe; - name_not_in?: InputMaybe>; - name_not_starts_with?: InputMaybe; - name_not_starts_with_nocase?: InputMaybe; - name_starts_with?: InputMaybe; - name_starts_with_nocase?: InputMaybe; - numberOfTrades?: InputMaybe; - numberOfTrades_gt?: InputMaybe; - numberOfTrades_gte?: InputMaybe; - numberOfTrades_in?: InputMaybe>; - numberOfTrades_lt?: InputMaybe; - numberOfTrades_lte?: InputMaybe; - numberOfTrades_not?: InputMaybe; - numberOfTrades_not_in?: InputMaybe>; - or?: InputMaybe>>; - priceEth?: InputMaybe; - priceEth_gt?: InputMaybe; - priceEth_gte?: InputMaybe; - priceEth_in?: InputMaybe>; - priceEth_lt?: InputMaybe; - priceEth_lte?: InputMaybe; - priceEth_not?: InputMaybe; - priceEth_not_in?: InputMaybe>; - priceUsd?: InputMaybe; - priceUsd_gt?: InputMaybe; - priceUsd_gte?: InputMaybe; - priceUsd_in?: InputMaybe>; - priceUsd_lt?: InputMaybe; - priceUsd_lte?: InputMaybe; - priceUsd_not?: InputMaybe; - priceUsd_not_in?: InputMaybe>; - symbol?: InputMaybe; - symbol_contains?: InputMaybe; - symbol_contains_nocase?: InputMaybe; - symbol_ends_with?: InputMaybe; - symbol_ends_with_nocase?: InputMaybe; - symbol_gt?: InputMaybe; - symbol_gte?: InputMaybe; - symbol_in?: InputMaybe>; - symbol_lt?: InputMaybe; - symbol_lte?: InputMaybe; - symbol_not?: InputMaybe; - symbol_not_contains?: InputMaybe; - symbol_not_contains_nocase?: InputMaybe; - symbol_not_ends_with?: InputMaybe; - symbol_not_ends_with_nocase?: InputMaybe; - symbol_not_in?: InputMaybe>; - symbol_not_starts_with?: InputMaybe; - symbol_not_starts_with_nocase?: InputMaybe; - symbol_starts_with?: InputMaybe; - symbol_starts_with_nocase?: InputMaybe; - totalVolume?: InputMaybe; - totalVolumeEth?: InputMaybe; - totalVolumeEth_gt?: InputMaybe; - totalVolumeEth_gte?: InputMaybe; - totalVolumeEth_in?: InputMaybe>; - totalVolumeEth_lt?: InputMaybe; - totalVolumeEth_lte?: InputMaybe; - totalVolumeEth_not?: InputMaybe; - totalVolumeEth_not_in?: InputMaybe>; - totalVolumeUsd?: InputMaybe; - totalVolumeUsd_gt?: InputMaybe; - totalVolumeUsd_gte?: InputMaybe; - totalVolumeUsd_in?: InputMaybe>; - totalVolumeUsd_lt?: InputMaybe; - totalVolumeUsd_lte?: InputMaybe; - totalVolumeUsd_not?: InputMaybe; - totalVolumeUsd_not_in?: InputMaybe>; - totalVolume_gt?: InputMaybe; - totalVolume_gte?: InputMaybe; - totalVolume_in?: InputMaybe>; - totalVolume_lt?: InputMaybe; - totalVolume_lte?: InputMaybe; - totalVolume_not?: InputMaybe; - totalVolume_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + address?: InputMaybe + address_contains?: InputMaybe + address_gt?: InputMaybe + address_gte?: InputMaybe + address_in?: InputMaybe> + address_lt?: InputMaybe + address_lte?: InputMaybe + address_not?: InputMaybe + address_not_contains?: InputMaybe + address_not_in?: InputMaybe> + and?: InputMaybe>> + dailyTotals_?: InputMaybe + decimals?: InputMaybe + decimals_gt?: InputMaybe + decimals_gte?: InputMaybe + decimals_in?: InputMaybe> + decimals_lt?: InputMaybe + decimals_lte?: InputMaybe + decimals_not?: InputMaybe + decimals_not_in?: InputMaybe> + firstTradeTimestamp?: InputMaybe + firstTradeTimestamp_gt?: InputMaybe + firstTradeTimestamp_gte?: InputMaybe + firstTradeTimestamp_in?: InputMaybe> + firstTradeTimestamp_lt?: InputMaybe + firstTradeTimestamp_lte?: InputMaybe + firstTradeTimestamp_not?: InputMaybe + firstTradeTimestamp_not_in?: InputMaybe> + history_?: InputMaybe + hourlyTotals_?: InputMaybe + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + name?: InputMaybe + name_contains?: InputMaybe + name_contains_nocase?: InputMaybe + name_ends_with?: InputMaybe + name_ends_with_nocase?: InputMaybe + name_gt?: InputMaybe + name_gte?: InputMaybe + name_in?: InputMaybe> + name_lt?: InputMaybe + name_lte?: InputMaybe + name_not?: InputMaybe + name_not_contains?: InputMaybe + name_not_contains_nocase?: InputMaybe + name_not_ends_with?: InputMaybe + name_not_ends_with_nocase?: InputMaybe + name_not_in?: InputMaybe> + name_not_starts_with?: InputMaybe + name_not_starts_with_nocase?: InputMaybe + name_starts_with?: InputMaybe + name_starts_with_nocase?: InputMaybe + numberOfTrades?: InputMaybe + numberOfTrades_gt?: InputMaybe + numberOfTrades_gte?: InputMaybe + numberOfTrades_in?: InputMaybe> + numberOfTrades_lt?: InputMaybe + numberOfTrades_lte?: InputMaybe + numberOfTrades_not?: InputMaybe + numberOfTrades_not_in?: InputMaybe> + or?: InputMaybe>> + priceEth?: InputMaybe + priceEth_gt?: InputMaybe + priceEth_gte?: InputMaybe + priceEth_in?: InputMaybe> + priceEth_lt?: InputMaybe + priceEth_lte?: InputMaybe + priceEth_not?: InputMaybe + priceEth_not_in?: InputMaybe> + priceUsd?: InputMaybe + priceUsd_gt?: InputMaybe + priceUsd_gte?: InputMaybe + priceUsd_in?: InputMaybe> + priceUsd_lt?: InputMaybe + priceUsd_lte?: InputMaybe + priceUsd_not?: InputMaybe + priceUsd_not_in?: InputMaybe> + symbol?: InputMaybe + symbol_contains?: InputMaybe + symbol_contains_nocase?: InputMaybe + symbol_ends_with?: InputMaybe + symbol_ends_with_nocase?: InputMaybe + symbol_gt?: InputMaybe + symbol_gte?: InputMaybe + symbol_in?: InputMaybe> + symbol_lt?: InputMaybe + symbol_lte?: InputMaybe + symbol_not?: InputMaybe + symbol_not_contains?: InputMaybe + symbol_not_contains_nocase?: InputMaybe + symbol_not_ends_with?: InputMaybe + symbol_not_ends_with_nocase?: InputMaybe + symbol_not_in?: InputMaybe> + symbol_not_starts_with?: InputMaybe + symbol_not_starts_with_nocase?: InputMaybe + symbol_starts_with?: InputMaybe + symbol_starts_with_nocase?: InputMaybe + totalVolume?: InputMaybe + totalVolumeEth?: InputMaybe + totalVolumeEth_gt?: InputMaybe + totalVolumeEth_gte?: InputMaybe + totalVolumeEth_in?: InputMaybe> + totalVolumeEth_lt?: InputMaybe + totalVolumeEth_lte?: InputMaybe + totalVolumeEth_not?: InputMaybe + totalVolumeEth_not_in?: InputMaybe> + totalVolumeUsd?: InputMaybe + totalVolumeUsd_gt?: InputMaybe + totalVolumeUsd_gte?: InputMaybe + totalVolumeUsd_in?: InputMaybe> + totalVolumeUsd_lt?: InputMaybe + totalVolumeUsd_lte?: InputMaybe + totalVolumeUsd_not?: InputMaybe + totalVolumeUsd_not_in?: InputMaybe> + totalVolume_gt?: InputMaybe + totalVolume_gte?: InputMaybe + totalVolume_in?: InputMaybe> + totalVolume_lt?: InputMaybe + totalVolume_lte?: InputMaybe + totalVolume_not?: InputMaybe + totalVolume_not_in?: InputMaybe> +} export enum Token_OrderBy { Address = 'address', @@ -2534,119 +2457,119 @@ export enum Token_OrderBy { Symbol = 'symbol', TotalVolume = 'totalVolume', TotalVolumeEth = 'totalVolumeEth', - TotalVolumeUsd = 'totalVolumeUsd' + TotalVolumeUsd = 'totalVolumeUsd', } export type Total = { - __typename?: 'Total'; + __typename?: 'Total' /** Total fees in Eth */ - feesEth?: Maybe; + feesEth?: Maybe /** Total fees in USD */ - feesUsd?: Maybe; + feesUsd?: Maybe /** This is a singleton entity to contain accumulators for all values. Id will be always 1 */ - id: Scalars['ID']; + id: Scalars['ID'] /** Number of trades */ - numberOfTrades: Scalars['BigInt']; + numberOfTrades: Scalars['BigInt'] /** Total number of orders placed */ - orders: Scalars['BigInt']; + orders: Scalars['BigInt'] /** Total number of batches settled */ - settlements: Scalars['BigInt']; + settlements: Scalars['BigInt'] /** Total number of tokens traded */ - tokens: Scalars['BigInt']; + tokens: Scalars['BigInt'] /** Total number of traders */ - traders: Scalars['BigInt']; + traders: Scalars['BigInt'] /** Total traded volume in ETH */ - volumeEth?: Maybe; + volumeEth?: Maybe /** Total traded volume in USD */ - volumeUsd?: Maybe; -}; + volumeUsd?: Maybe +} export type Total_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - feesEth?: InputMaybe; - feesEth_gt?: InputMaybe; - feesEth_gte?: InputMaybe; - feesEth_in?: InputMaybe>; - feesEth_lt?: InputMaybe; - feesEth_lte?: InputMaybe; - feesEth_not?: InputMaybe; - feesEth_not_in?: InputMaybe>; - feesUsd?: InputMaybe; - feesUsd_gt?: InputMaybe; - feesUsd_gte?: InputMaybe; - feesUsd_in?: InputMaybe>; - feesUsd_lt?: InputMaybe; - feesUsd_lte?: InputMaybe; - feesUsd_not?: InputMaybe; - feesUsd_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - numberOfTrades?: InputMaybe; - numberOfTrades_gt?: InputMaybe; - numberOfTrades_gte?: InputMaybe; - numberOfTrades_in?: InputMaybe>; - numberOfTrades_lt?: InputMaybe; - numberOfTrades_lte?: InputMaybe; - numberOfTrades_not?: InputMaybe; - numberOfTrades_not_in?: InputMaybe>; - or?: InputMaybe>>; - orders?: InputMaybe; - orders_gt?: InputMaybe; - orders_gte?: InputMaybe; - orders_in?: InputMaybe>; - orders_lt?: InputMaybe; - orders_lte?: InputMaybe; - orders_not?: InputMaybe; - orders_not_in?: InputMaybe>; - settlements?: InputMaybe; - settlements_gt?: InputMaybe; - settlements_gte?: InputMaybe; - settlements_in?: InputMaybe>; - settlements_lt?: InputMaybe; - settlements_lte?: InputMaybe; - settlements_not?: InputMaybe; - settlements_not_in?: InputMaybe>; - tokens?: InputMaybe; - tokens_gt?: InputMaybe; - tokens_gte?: InputMaybe; - tokens_in?: InputMaybe>; - tokens_lt?: InputMaybe; - tokens_lte?: InputMaybe; - tokens_not?: InputMaybe; - tokens_not_in?: InputMaybe>; - traders?: InputMaybe; - traders_gt?: InputMaybe; - traders_gte?: InputMaybe; - traders_in?: InputMaybe>; - traders_lt?: InputMaybe; - traders_lte?: InputMaybe; - traders_not?: InputMaybe; - traders_not_in?: InputMaybe>; - volumeEth?: InputMaybe; - volumeEth_gt?: InputMaybe; - volumeEth_gte?: InputMaybe; - volumeEth_in?: InputMaybe>; - volumeEth_lt?: InputMaybe; - volumeEth_lte?: InputMaybe; - volumeEth_not?: InputMaybe; - volumeEth_not_in?: InputMaybe>; - volumeUsd?: InputMaybe; - volumeUsd_gt?: InputMaybe; - volumeUsd_gte?: InputMaybe; - volumeUsd_in?: InputMaybe>; - volumeUsd_lt?: InputMaybe; - volumeUsd_lte?: InputMaybe; - volumeUsd_not?: InputMaybe; - volumeUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + feesEth?: InputMaybe + feesEth_gt?: InputMaybe + feesEth_gte?: InputMaybe + feesEth_in?: InputMaybe> + feesEth_lt?: InputMaybe + feesEth_lte?: InputMaybe + feesEth_not?: InputMaybe + feesEth_not_in?: InputMaybe> + feesUsd?: InputMaybe + feesUsd_gt?: InputMaybe + feesUsd_gte?: InputMaybe + feesUsd_in?: InputMaybe> + feesUsd_lt?: InputMaybe + feesUsd_lte?: InputMaybe + feesUsd_not?: InputMaybe + feesUsd_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + numberOfTrades?: InputMaybe + numberOfTrades_gt?: InputMaybe + numberOfTrades_gte?: InputMaybe + numberOfTrades_in?: InputMaybe> + numberOfTrades_lt?: InputMaybe + numberOfTrades_lte?: InputMaybe + numberOfTrades_not?: InputMaybe + numberOfTrades_not_in?: InputMaybe> + or?: InputMaybe>> + orders?: InputMaybe + orders_gt?: InputMaybe + orders_gte?: InputMaybe + orders_in?: InputMaybe> + orders_lt?: InputMaybe + orders_lte?: InputMaybe + orders_not?: InputMaybe + orders_not_in?: InputMaybe> + settlements?: InputMaybe + settlements_gt?: InputMaybe + settlements_gte?: InputMaybe + settlements_in?: InputMaybe> + settlements_lt?: InputMaybe + settlements_lte?: InputMaybe + settlements_not?: InputMaybe + settlements_not_in?: InputMaybe> + tokens?: InputMaybe + tokens_gt?: InputMaybe + tokens_gte?: InputMaybe + tokens_in?: InputMaybe> + tokens_lt?: InputMaybe + tokens_lte?: InputMaybe + tokens_not?: InputMaybe + tokens_not_in?: InputMaybe> + traders?: InputMaybe + traders_gt?: InputMaybe + traders_gte?: InputMaybe + traders_in?: InputMaybe> + traders_lt?: InputMaybe + traders_lte?: InputMaybe + traders_not?: InputMaybe + traders_not_in?: InputMaybe> + volumeEth?: InputMaybe + volumeEth_gt?: InputMaybe + volumeEth_gte?: InputMaybe + volumeEth_in?: InputMaybe> + volumeEth_lt?: InputMaybe + volumeEth_lte?: InputMaybe + volumeEth_not?: InputMaybe + volumeEth_not_in?: InputMaybe> + volumeUsd?: InputMaybe + volumeUsd_gt?: InputMaybe + volumeUsd_gte?: InputMaybe + volumeUsd_in?: InputMaybe> + volumeUsd_lt?: InputMaybe + volumeUsd_lte?: InputMaybe + volumeUsd_not?: InputMaybe + volumeUsd_not_in?: InputMaybe> +} export enum Total_OrderBy { FeesEth = 'feesEth', @@ -2658,223 +2581,223 @@ export enum Total_OrderBy { Tokens = 'tokens', Traders = 'traders', VolumeEth = 'volumeEth', - VolumeUsd = 'volumeUsd' + VolumeUsd = 'volumeUsd', } export type Trade = { - __typename?: 'Trade'; + __typename?: 'Trade' /** Trade event buyAmount */ - buyAmount: Scalars['BigInt']; + buyAmount: Scalars['BigInt'] /** Buy amount in Eth */ - buyAmountEth?: Maybe; + buyAmountEth?: Maybe /** Buy amount in Usd */ - buyAmountUsd?: Maybe; + buyAmountUsd?: Maybe /** Trade event buyToken */ - buyToken: Token; + buyToken: Token /** Trade's fee amount */ - feeAmount: Scalars['BigInt']; + feeAmount: Scalars['BigInt'] /** Transaction's gas price */ - gasPrice: Scalars['BigInt']; + gasPrice: Scalars['BigInt'] /** This Id is composed using orderId|txHashString|eventIndex */ - id: Scalars['ID']; + id: Scalars['ID'] /** Order */ - order: Order; + order: Order /** Trade event sellAmount */ - sellAmount: Scalars['BigInt']; + sellAmount: Scalars['BigInt'] /** Sell amount in Eth */ - sellAmountEth?: Maybe; + sellAmountEth?: Maybe /** Sell amount in Usd */ - sellAmountUsd?: Maybe; + sellAmountUsd?: Maybe /** Trade event sellToken */ - sellToken: Token; + sellToken: Token /** Settlement */ - settlement: Settlement; + settlement: Settlement /** Block's timestamp */ - timestamp: Scalars['Int']; + timestamp: Scalars['Int'] /** Trade event transaction hash */ - txHash: Scalars['Bytes']; -}; + txHash: Scalars['Bytes'] +} export type Trade_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - buyAmount?: InputMaybe; - buyAmountEth?: InputMaybe; - buyAmountEth_gt?: InputMaybe; - buyAmountEth_gte?: InputMaybe; - buyAmountEth_in?: InputMaybe>; - buyAmountEth_lt?: InputMaybe; - buyAmountEth_lte?: InputMaybe; - buyAmountEth_not?: InputMaybe; - buyAmountEth_not_in?: InputMaybe>; - buyAmountUsd?: InputMaybe; - buyAmountUsd_gt?: InputMaybe; - buyAmountUsd_gte?: InputMaybe; - buyAmountUsd_in?: InputMaybe>; - buyAmountUsd_lt?: InputMaybe; - buyAmountUsd_lte?: InputMaybe; - buyAmountUsd_not?: InputMaybe; - buyAmountUsd_not_in?: InputMaybe>; - buyAmount_gt?: InputMaybe; - buyAmount_gte?: InputMaybe; - buyAmount_in?: InputMaybe>; - buyAmount_lt?: InputMaybe; - buyAmount_lte?: InputMaybe; - buyAmount_not?: InputMaybe; - buyAmount_not_in?: InputMaybe>; - buyToken?: InputMaybe; - buyToken_?: InputMaybe; - buyToken_contains?: InputMaybe; - buyToken_contains_nocase?: InputMaybe; - buyToken_ends_with?: InputMaybe; - buyToken_ends_with_nocase?: InputMaybe; - buyToken_gt?: InputMaybe; - buyToken_gte?: InputMaybe; - buyToken_in?: InputMaybe>; - buyToken_lt?: InputMaybe; - buyToken_lte?: InputMaybe; - buyToken_not?: InputMaybe; - buyToken_not_contains?: InputMaybe; - buyToken_not_contains_nocase?: InputMaybe; - buyToken_not_ends_with?: InputMaybe; - buyToken_not_ends_with_nocase?: InputMaybe; - buyToken_not_in?: InputMaybe>; - buyToken_not_starts_with?: InputMaybe; - buyToken_not_starts_with_nocase?: InputMaybe; - buyToken_starts_with?: InputMaybe; - buyToken_starts_with_nocase?: InputMaybe; - feeAmount?: InputMaybe; - feeAmount_gt?: InputMaybe; - feeAmount_gte?: InputMaybe; - feeAmount_in?: InputMaybe>; - feeAmount_lt?: InputMaybe; - feeAmount_lte?: InputMaybe; - feeAmount_not?: InputMaybe; - feeAmount_not_in?: InputMaybe>; - gasPrice?: InputMaybe; - gasPrice_gt?: InputMaybe; - gasPrice_gte?: InputMaybe; - gasPrice_in?: InputMaybe>; - gasPrice_lt?: InputMaybe; - gasPrice_lte?: InputMaybe; - gasPrice_not?: InputMaybe; - gasPrice_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - or?: InputMaybe>>; - order?: InputMaybe; - order_?: InputMaybe; - order_contains?: InputMaybe; - order_contains_nocase?: InputMaybe; - order_ends_with?: InputMaybe; - order_ends_with_nocase?: InputMaybe; - order_gt?: InputMaybe; - order_gte?: InputMaybe; - order_in?: InputMaybe>; - order_lt?: InputMaybe; - order_lte?: InputMaybe; - order_not?: InputMaybe; - order_not_contains?: InputMaybe; - order_not_contains_nocase?: InputMaybe; - order_not_ends_with?: InputMaybe; - order_not_ends_with_nocase?: InputMaybe; - order_not_in?: InputMaybe>; - order_not_starts_with?: InputMaybe; - order_not_starts_with_nocase?: InputMaybe; - order_starts_with?: InputMaybe; - order_starts_with_nocase?: InputMaybe; - sellAmount?: InputMaybe; - sellAmountEth?: InputMaybe; - sellAmountEth_gt?: InputMaybe; - sellAmountEth_gte?: InputMaybe; - sellAmountEth_in?: InputMaybe>; - sellAmountEth_lt?: InputMaybe; - sellAmountEth_lte?: InputMaybe; - sellAmountEth_not?: InputMaybe; - sellAmountEth_not_in?: InputMaybe>; - sellAmountUsd?: InputMaybe; - sellAmountUsd_gt?: InputMaybe; - sellAmountUsd_gte?: InputMaybe; - sellAmountUsd_in?: InputMaybe>; - sellAmountUsd_lt?: InputMaybe; - sellAmountUsd_lte?: InputMaybe; - sellAmountUsd_not?: InputMaybe; - sellAmountUsd_not_in?: InputMaybe>; - sellAmount_gt?: InputMaybe; - sellAmount_gte?: InputMaybe; - sellAmount_in?: InputMaybe>; - sellAmount_lt?: InputMaybe; - sellAmount_lte?: InputMaybe; - sellAmount_not?: InputMaybe; - sellAmount_not_in?: InputMaybe>; - sellToken?: InputMaybe; - sellToken_?: InputMaybe; - sellToken_contains?: InputMaybe; - sellToken_contains_nocase?: InputMaybe; - sellToken_ends_with?: InputMaybe; - sellToken_ends_with_nocase?: InputMaybe; - sellToken_gt?: InputMaybe; - sellToken_gte?: InputMaybe; - sellToken_in?: InputMaybe>; - sellToken_lt?: InputMaybe; - sellToken_lte?: InputMaybe; - sellToken_not?: InputMaybe; - sellToken_not_contains?: InputMaybe; - sellToken_not_contains_nocase?: InputMaybe; - sellToken_not_ends_with?: InputMaybe; - sellToken_not_ends_with_nocase?: InputMaybe; - sellToken_not_in?: InputMaybe>; - sellToken_not_starts_with?: InputMaybe; - sellToken_not_starts_with_nocase?: InputMaybe; - sellToken_starts_with?: InputMaybe; - sellToken_starts_with_nocase?: InputMaybe; - settlement?: InputMaybe; - settlement_?: InputMaybe; - settlement_contains?: InputMaybe; - settlement_contains_nocase?: InputMaybe; - settlement_ends_with?: InputMaybe; - settlement_ends_with_nocase?: InputMaybe; - settlement_gt?: InputMaybe; - settlement_gte?: InputMaybe; - settlement_in?: InputMaybe>; - settlement_lt?: InputMaybe; - settlement_lte?: InputMaybe; - settlement_not?: InputMaybe; - settlement_not_contains?: InputMaybe; - settlement_not_contains_nocase?: InputMaybe; - settlement_not_ends_with?: InputMaybe; - settlement_not_ends_with_nocase?: InputMaybe; - settlement_not_in?: InputMaybe>; - settlement_not_starts_with?: InputMaybe; - settlement_not_starts_with_nocase?: InputMaybe; - settlement_starts_with?: InputMaybe; - settlement_starts_with_nocase?: InputMaybe; - timestamp?: InputMaybe; - timestamp_gt?: InputMaybe; - timestamp_gte?: InputMaybe; - timestamp_in?: InputMaybe>; - timestamp_lt?: InputMaybe; - timestamp_lte?: InputMaybe; - timestamp_not?: InputMaybe; - timestamp_not_in?: InputMaybe>; - txHash?: InputMaybe; - txHash_contains?: InputMaybe; - txHash_gt?: InputMaybe; - txHash_gte?: InputMaybe; - txHash_in?: InputMaybe>; - txHash_lt?: InputMaybe; - txHash_lte?: InputMaybe; - txHash_not?: InputMaybe; - txHash_not_contains?: InputMaybe; - txHash_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + buyAmount?: InputMaybe + buyAmountEth?: InputMaybe + buyAmountEth_gt?: InputMaybe + buyAmountEth_gte?: InputMaybe + buyAmountEth_in?: InputMaybe> + buyAmountEth_lt?: InputMaybe + buyAmountEth_lte?: InputMaybe + buyAmountEth_not?: InputMaybe + buyAmountEth_not_in?: InputMaybe> + buyAmountUsd?: InputMaybe + buyAmountUsd_gt?: InputMaybe + buyAmountUsd_gte?: InputMaybe + buyAmountUsd_in?: InputMaybe> + buyAmountUsd_lt?: InputMaybe + buyAmountUsd_lte?: InputMaybe + buyAmountUsd_not?: InputMaybe + buyAmountUsd_not_in?: InputMaybe> + buyAmount_gt?: InputMaybe + buyAmount_gte?: InputMaybe + buyAmount_in?: InputMaybe> + buyAmount_lt?: InputMaybe + buyAmount_lte?: InputMaybe + buyAmount_not?: InputMaybe + buyAmount_not_in?: InputMaybe> + buyToken?: InputMaybe + buyToken_?: InputMaybe + buyToken_contains?: InputMaybe + buyToken_contains_nocase?: InputMaybe + buyToken_ends_with?: InputMaybe + buyToken_ends_with_nocase?: InputMaybe + buyToken_gt?: InputMaybe + buyToken_gte?: InputMaybe + buyToken_in?: InputMaybe> + buyToken_lt?: InputMaybe + buyToken_lte?: InputMaybe + buyToken_not?: InputMaybe + buyToken_not_contains?: InputMaybe + buyToken_not_contains_nocase?: InputMaybe + buyToken_not_ends_with?: InputMaybe + buyToken_not_ends_with_nocase?: InputMaybe + buyToken_not_in?: InputMaybe> + buyToken_not_starts_with?: InputMaybe + buyToken_not_starts_with_nocase?: InputMaybe + buyToken_starts_with?: InputMaybe + buyToken_starts_with_nocase?: InputMaybe + feeAmount?: InputMaybe + feeAmount_gt?: InputMaybe + feeAmount_gte?: InputMaybe + feeAmount_in?: InputMaybe> + feeAmount_lt?: InputMaybe + feeAmount_lte?: InputMaybe + feeAmount_not?: InputMaybe + feeAmount_not_in?: InputMaybe> + gasPrice?: InputMaybe + gasPrice_gt?: InputMaybe + gasPrice_gte?: InputMaybe + gasPrice_in?: InputMaybe> + gasPrice_lt?: InputMaybe + gasPrice_lte?: InputMaybe + gasPrice_not?: InputMaybe + gasPrice_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + or?: InputMaybe>> + order?: InputMaybe + order_?: InputMaybe + order_contains?: InputMaybe + order_contains_nocase?: InputMaybe + order_ends_with?: InputMaybe + order_ends_with_nocase?: InputMaybe + order_gt?: InputMaybe + order_gte?: InputMaybe + order_in?: InputMaybe> + order_lt?: InputMaybe + order_lte?: InputMaybe + order_not?: InputMaybe + order_not_contains?: InputMaybe + order_not_contains_nocase?: InputMaybe + order_not_ends_with?: InputMaybe + order_not_ends_with_nocase?: InputMaybe + order_not_in?: InputMaybe> + order_not_starts_with?: InputMaybe + order_not_starts_with_nocase?: InputMaybe + order_starts_with?: InputMaybe + order_starts_with_nocase?: InputMaybe + sellAmount?: InputMaybe + sellAmountEth?: InputMaybe + sellAmountEth_gt?: InputMaybe + sellAmountEth_gte?: InputMaybe + sellAmountEth_in?: InputMaybe> + sellAmountEth_lt?: InputMaybe + sellAmountEth_lte?: InputMaybe + sellAmountEth_not?: InputMaybe + sellAmountEth_not_in?: InputMaybe> + sellAmountUsd?: InputMaybe + sellAmountUsd_gt?: InputMaybe + sellAmountUsd_gte?: InputMaybe + sellAmountUsd_in?: InputMaybe> + sellAmountUsd_lt?: InputMaybe + sellAmountUsd_lte?: InputMaybe + sellAmountUsd_not?: InputMaybe + sellAmountUsd_not_in?: InputMaybe> + sellAmount_gt?: InputMaybe + sellAmount_gte?: InputMaybe + sellAmount_in?: InputMaybe> + sellAmount_lt?: InputMaybe + sellAmount_lte?: InputMaybe + sellAmount_not?: InputMaybe + sellAmount_not_in?: InputMaybe> + sellToken?: InputMaybe + sellToken_?: InputMaybe + sellToken_contains?: InputMaybe + sellToken_contains_nocase?: InputMaybe + sellToken_ends_with?: InputMaybe + sellToken_ends_with_nocase?: InputMaybe + sellToken_gt?: InputMaybe + sellToken_gte?: InputMaybe + sellToken_in?: InputMaybe> + sellToken_lt?: InputMaybe + sellToken_lte?: InputMaybe + sellToken_not?: InputMaybe + sellToken_not_contains?: InputMaybe + sellToken_not_contains_nocase?: InputMaybe + sellToken_not_ends_with?: InputMaybe + sellToken_not_ends_with_nocase?: InputMaybe + sellToken_not_in?: InputMaybe> + sellToken_not_starts_with?: InputMaybe + sellToken_not_starts_with_nocase?: InputMaybe + sellToken_starts_with?: InputMaybe + sellToken_starts_with_nocase?: InputMaybe + settlement?: InputMaybe + settlement_?: InputMaybe + settlement_contains?: InputMaybe + settlement_contains_nocase?: InputMaybe + settlement_ends_with?: InputMaybe + settlement_ends_with_nocase?: InputMaybe + settlement_gt?: InputMaybe + settlement_gte?: InputMaybe + settlement_in?: InputMaybe> + settlement_lt?: InputMaybe + settlement_lte?: InputMaybe + settlement_not?: InputMaybe + settlement_not_contains?: InputMaybe + settlement_not_contains_nocase?: InputMaybe + settlement_not_ends_with?: InputMaybe + settlement_not_ends_with_nocase?: InputMaybe + settlement_not_in?: InputMaybe> + settlement_not_starts_with?: InputMaybe + settlement_not_starts_with_nocase?: InputMaybe + settlement_starts_with?: InputMaybe + settlement_starts_with_nocase?: InputMaybe + timestamp?: InputMaybe + timestamp_gt?: InputMaybe + timestamp_gte?: InputMaybe + timestamp_in?: InputMaybe> + timestamp_lt?: InputMaybe + timestamp_lte?: InputMaybe + timestamp_not?: InputMaybe + timestamp_not_in?: InputMaybe> + txHash?: InputMaybe + txHash_contains?: InputMaybe + txHash_gt?: InputMaybe + txHash_gte?: InputMaybe + txHash_in?: InputMaybe> + txHash_lt?: InputMaybe + txHash_lte?: InputMaybe + txHash_not?: InputMaybe + txHash_not_contains?: InputMaybe + txHash_not_in?: InputMaybe> +} export enum Trade_OrderBy { BuyAmount = 'buyAmount', @@ -2924,135 +2847,135 @@ export enum Trade_OrderBy { SettlementId = 'settlement__id', SettlementTxHash = 'settlement__txHash', Timestamp = 'timestamp', - TxHash = 'txHash' + TxHash = 'txHash', } export type UniswapPool = { - __typename?: 'UniswapPool'; + __typename?: 'UniswapPool' /** Pool address */ - id: Scalars['ID']; + id: Scalars['ID'] /** In range liquidity */ - liquidity: Scalars['BigInt']; + liquidity: Scalars['BigInt'] /** Current tick */ - tick?: Maybe; + tick?: Maybe /** Token0 */ - token0: UniswapToken; + token0: UniswapToken /** Token0 per token1 */ - token0Price: Scalars['BigDecimal']; + token0Price: Scalars['BigDecimal'] /** Token1 */ - token1: UniswapToken; + token1: UniswapToken /** Token1 per token0 */ - token1Price: Scalars['BigDecimal']; + token1Price: Scalars['BigDecimal'] /** Total token 0 across all ticks */ - totalValueLockedToken0: Scalars['BigDecimal']; + totalValueLockedToken0: Scalars['BigDecimal'] /** Total token 1 across all ticks */ - totalValueLockedToken1: Scalars['BigDecimal']; -}; + totalValueLockedToken1: Scalars['BigDecimal'] +} export type UniswapPool_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - and?: InputMaybe>>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - liquidity?: InputMaybe; - liquidity_gt?: InputMaybe; - liquidity_gte?: InputMaybe; - liquidity_in?: InputMaybe>; - liquidity_lt?: InputMaybe; - liquidity_lte?: InputMaybe; - liquidity_not?: InputMaybe; - liquidity_not_in?: InputMaybe>; - or?: InputMaybe>>; - tick?: InputMaybe; - tick_gt?: InputMaybe; - tick_gte?: InputMaybe; - tick_in?: InputMaybe>; - tick_lt?: InputMaybe; - tick_lte?: InputMaybe; - tick_not?: InputMaybe; - tick_not_in?: InputMaybe>; - token0?: InputMaybe; - token0Price?: InputMaybe; - token0Price_gt?: InputMaybe; - token0Price_gte?: InputMaybe; - token0Price_in?: InputMaybe>; - token0Price_lt?: InputMaybe; - token0Price_lte?: InputMaybe; - token0Price_not?: InputMaybe; - token0Price_not_in?: InputMaybe>; - token0_?: InputMaybe; - token0_contains?: InputMaybe; - token0_contains_nocase?: InputMaybe; - token0_ends_with?: InputMaybe; - token0_ends_with_nocase?: InputMaybe; - token0_gt?: InputMaybe; - token0_gte?: InputMaybe; - token0_in?: InputMaybe>; - token0_lt?: InputMaybe; - token0_lte?: InputMaybe; - token0_not?: InputMaybe; - token0_not_contains?: InputMaybe; - token0_not_contains_nocase?: InputMaybe; - token0_not_ends_with?: InputMaybe; - token0_not_ends_with_nocase?: InputMaybe; - token0_not_in?: InputMaybe>; - token0_not_starts_with?: InputMaybe; - token0_not_starts_with_nocase?: InputMaybe; - token0_starts_with?: InputMaybe; - token0_starts_with_nocase?: InputMaybe; - token1?: InputMaybe; - token1Price?: InputMaybe; - token1Price_gt?: InputMaybe; - token1Price_gte?: InputMaybe; - token1Price_in?: InputMaybe>; - token1Price_lt?: InputMaybe; - token1Price_lte?: InputMaybe; - token1Price_not?: InputMaybe; - token1Price_not_in?: InputMaybe>; - token1_?: InputMaybe; - token1_contains?: InputMaybe; - token1_contains_nocase?: InputMaybe; - token1_ends_with?: InputMaybe; - token1_ends_with_nocase?: InputMaybe; - token1_gt?: InputMaybe; - token1_gte?: InputMaybe; - token1_in?: InputMaybe>; - token1_lt?: InputMaybe; - token1_lte?: InputMaybe; - token1_not?: InputMaybe; - token1_not_contains?: InputMaybe; - token1_not_contains_nocase?: InputMaybe; - token1_not_ends_with?: InputMaybe; - token1_not_ends_with_nocase?: InputMaybe; - token1_not_in?: InputMaybe>; - token1_not_starts_with?: InputMaybe; - token1_not_starts_with_nocase?: InputMaybe; - token1_starts_with?: InputMaybe; - token1_starts_with_nocase?: InputMaybe; - totalValueLockedToken0?: InputMaybe; - totalValueLockedToken0_gt?: InputMaybe; - totalValueLockedToken0_gte?: InputMaybe; - totalValueLockedToken0_in?: InputMaybe>; - totalValueLockedToken0_lt?: InputMaybe; - totalValueLockedToken0_lte?: InputMaybe; - totalValueLockedToken0_not?: InputMaybe; - totalValueLockedToken0_not_in?: InputMaybe>; - totalValueLockedToken1?: InputMaybe; - totalValueLockedToken1_gt?: InputMaybe; - totalValueLockedToken1_gte?: InputMaybe; - totalValueLockedToken1_in?: InputMaybe>; - totalValueLockedToken1_lt?: InputMaybe; - totalValueLockedToken1_lte?: InputMaybe; - totalValueLockedToken1_not?: InputMaybe; - totalValueLockedToken1_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + and?: InputMaybe>> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + liquidity?: InputMaybe + liquidity_gt?: InputMaybe + liquidity_gte?: InputMaybe + liquidity_in?: InputMaybe> + liquidity_lt?: InputMaybe + liquidity_lte?: InputMaybe + liquidity_not?: InputMaybe + liquidity_not_in?: InputMaybe> + or?: InputMaybe>> + tick?: InputMaybe + tick_gt?: InputMaybe + tick_gte?: InputMaybe + tick_in?: InputMaybe> + tick_lt?: InputMaybe + tick_lte?: InputMaybe + tick_not?: InputMaybe + tick_not_in?: InputMaybe> + token0?: InputMaybe + token0Price?: InputMaybe + token0Price_gt?: InputMaybe + token0Price_gte?: InputMaybe + token0Price_in?: InputMaybe> + token0Price_lt?: InputMaybe + token0Price_lte?: InputMaybe + token0Price_not?: InputMaybe + token0Price_not_in?: InputMaybe> + token0_?: InputMaybe + token0_contains?: InputMaybe + token0_contains_nocase?: InputMaybe + token0_ends_with?: InputMaybe + token0_ends_with_nocase?: InputMaybe + token0_gt?: InputMaybe + token0_gte?: InputMaybe + token0_in?: InputMaybe> + token0_lt?: InputMaybe + token0_lte?: InputMaybe + token0_not?: InputMaybe + token0_not_contains?: InputMaybe + token0_not_contains_nocase?: InputMaybe + token0_not_ends_with?: InputMaybe + token0_not_ends_with_nocase?: InputMaybe + token0_not_in?: InputMaybe> + token0_not_starts_with?: InputMaybe + token0_not_starts_with_nocase?: InputMaybe + token0_starts_with?: InputMaybe + token0_starts_with_nocase?: InputMaybe + token1?: InputMaybe + token1Price?: InputMaybe + token1Price_gt?: InputMaybe + token1Price_gte?: InputMaybe + token1Price_in?: InputMaybe> + token1Price_lt?: InputMaybe + token1Price_lte?: InputMaybe + token1Price_not?: InputMaybe + token1Price_not_in?: InputMaybe> + token1_?: InputMaybe + token1_contains?: InputMaybe + token1_contains_nocase?: InputMaybe + token1_ends_with?: InputMaybe + token1_ends_with_nocase?: InputMaybe + token1_gt?: InputMaybe + token1_gte?: InputMaybe + token1_in?: InputMaybe> + token1_lt?: InputMaybe + token1_lte?: InputMaybe + token1_not?: InputMaybe + token1_not_contains?: InputMaybe + token1_not_contains_nocase?: InputMaybe + token1_not_ends_with?: InputMaybe + token1_not_ends_with_nocase?: InputMaybe + token1_not_in?: InputMaybe> + token1_not_starts_with?: InputMaybe + token1_not_starts_with_nocase?: InputMaybe + token1_starts_with?: InputMaybe + token1_starts_with_nocase?: InputMaybe + totalValueLockedToken0?: InputMaybe + totalValueLockedToken0_gt?: InputMaybe + totalValueLockedToken0_gte?: InputMaybe + totalValueLockedToken0_in?: InputMaybe> + totalValueLockedToken0_lt?: InputMaybe + totalValueLockedToken0_lte?: InputMaybe + totalValueLockedToken0_not?: InputMaybe + totalValueLockedToken0_not_in?: InputMaybe> + totalValueLockedToken1?: InputMaybe + totalValueLockedToken1_gt?: InputMaybe + totalValueLockedToken1_gte?: InputMaybe + totalValueLockedToken1_in?: InputMaybe> + totalValueLockedToken1_lt?: InputMaybe + totalValueLockedToken1_lte?: InputMaybe + totalValueLockedToken1_not?: InputMaybe + totalValueLockedToken1_not_in?: InputMaybe> +} export enum UniswapPool_OrderBy { Id = 'id', @@ -3077,133 +3000,132 @@ export enum UniswapPool_OrderBy { Token1PriceUsd = 'token1__priceUsd', Token1Symbol = 'token1__symbol', TotalValueLockedToken0 = 'totalValueLockedToken0', - TotalValueLockedToken1 = 'totalValueLockedToken1' + TotalValueLockedToken1 = 'totalValueLockedToken1', } export type UniswapToken = { - __typename?: 'UniswapToken'; + __typename?: 'UniswapToken' /** Token address */ - address: Scalars['Bytes']; + address: Scalars['Bytes'] /** Pools token is in that are allow listed for USD pricing */ - allowedPools: Array; + allowedPools: Array /** Token decimals fetched by contract call */ - decimals: Scalars['Int']; + decimals: Scalars['Int'] /** Token address to hexString */ - id: Scalars['ID']; + id: Scalars['ID'] /** Token name fetched by ERC20 contract call */ - name: Scalars['String']; + name: Scalars['String'] /** Derived price in ETH */ - priceEth?: Maybe; + priceEth?: Maybe /** Derived price in USD */ - priceUsd?: Maybe; + priceUsd?: Maybe /** Token symbol fetched by contract call */ - symbol: Scalars['String']; -}; - + symbol: Scalars['String'] +} export type UniswapTokenAllowedPoolsArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type UniswapToken_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - address?: InputMaybe; - address_contains?: InputMaybe; - address_gt?: InputMaybe; - address_gte?: InputMaybe; - address_in?: InputMaybe>; - address_lt?: InputMaybe; - address_lte?: InputMaybe; - address_not?: InputMaybe; - address_not_contains?: InputMaybe; - address_not_in?: InputMaybe>; - allowedPools?: InputMaybe>; - allowedPools_?: InputMaybe; - allowedPools_contains?: InputMaybe>; - allowedPools_contains_nocase?: InputMaybe>; - allowedPools_not?: InputMaybe>; - allowedPools_not_contains?: InputMaybe>; - allowedPools_not_contains_nocase?: InputMaybe>; - and?: InputMaybe>>; - decimals?: InputMaybe; - decimals_gt?: InputMaybe; - decimals_gte?: InputMaybe; - decimals_in?: InputMaybe>; - decimals_lt?: InputMaybe; - decimals_lte?: InputMaybe; - decimals_not?: InputMaybe; - decimals_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - name?: InputMaybe; - name_contains?: InputMaybe; - name_contains_nocase?: InputMaybe; - name_ends_with?: InputMaybe; - name_ends_with_nocase?: InputMaybe; - name_gt?: InputMaybe; - name_gte?: InputMaybe; - name_in?: InputMaybe>; - name_lt?: InputMaybe; - name_lte?: InputMaybe; - name_not?: InputMaybe; - name_not_contains?: InputMaybe; - name_not_contains_nocase?: InputMaybe; - name_not_ends_with?: InputMaybe; - name_not_ends_with_nocase?: InputMaybe; - name_not_in?: InputMaybe>; - name_not_starts_with?: InputMaybe; - name_not_starts_with_nocase?: InputMaybe; - name_starts_with?: InputMaybe; - name_starts_with_nocase?: InputMaybe; - or?: InputMaybe>>; - priceEth?: InputMaybe; - priceEth_gt?: InputMaybe; - priceEth_gte?: InputMaybe; - priceEth_in?: InputMaybe>; - priceEth_lt?: InputMaybe; - priceEth_lte?: InputMaybe; - priceEth_not?: InputMaybe; - priceEth_not_in?: InputMaybe>; - priceUsd?: InputMaybe; - priceUsd_gt?: InputMaybe; - priceUsd_gte?: InputMaybe; - priceUsd_in?: InputMaybe>; - priceUsd_lt?: InputMaybe; - priceUsd_lte?: InputMaybe; - priceUsd_not?: InputMaybe; - priceUsd_not_in?: InputMaybe>; - symbol?: InputMaybe; - symbol_contains?: InputMaybe; - symbol_contains_nocase?: InputMaybe; - symbol_ends_with?: InputMaybe; - symbol_ends_with_nocase?: InputMaybe; - symbol_gt?: InputMaybe; - symbol_gte?: InputMaybe; - symbol_in?: InputMaybe>; - symbol_lt?: InputMaybe; - symbol_lte?: InputMaybe; - symbol_not?: InputMaybe; - symbol_not_contains?: InputMaybe; - symbol_not_contains_nocase?: InputMaybe; - symbol_not_ends_with?: InputMaybe; - symbol_not_ends_with_nocase?: InputMaybe; - symbol_not_in?: InputMaybe>; - symbol_not_starts_with?: InputMaybe; - symbol_not_starts_with_nocase?: InputMaybe; - symbol_starts_with?: InputMaybe; - symbol_starts_with_nocase?: InputMaybe; -}; + _change_block?: InputMaybe + address?: InputMaybe + address_contains?: InputMaybe + address_gt?: InputMaybe + address_gte?: InputMaybe + address_in?: InputMaybe> + address_lt?: InputMaybe + address_lte?: InputMaybe + address_not?: InputMaybe + address_not_contains?: InputMaybe + address_not_in?: InputMaybe> + allowedPools?: InputMaybe> + allowedPools_?: InputMaybe + allowedPools_contains?: InputMaybe> + allowedPools_contains_nocase?: InputMaybe> + allowedPools_not?: InputMaybe> + allowedPools_not_contains?: InputMaybe> + allowedPools_not_contains_nocase?: InputMaybe> + and?: InputMaybe>> + decimals?: InputMaybe + decimals_gt?: InputMaybe + decimals_gte?: InputMaybe + decimals_in?: InputMaybe> + decimals_lt?: InputMaybe + decimals_lte?: InputMaybe + decimals_not?: InputMaybe + decimals_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + name?: InputMaybe + name_contains?: InputMaybe + name_contains_nocase?: InputMaybe + name_ends_with?: InputMaybe + name_ends_with_nocase?: InputMaybe + name_gt?: InputMaybe + name_gte?: InputMaybe + name_in?: InputMaybe> + name_lt?: InputMaybe + name_lte?: InputMaybe + name_not?: InputMaybe + name_not_contains?: InputMaybe + name_not_contains_nocase?: InputMaybe + name_not_ends_with?: InputMaybe + name_not_ends_with_nocase?: InputMaybe + name_not_in?: InputMaybe> + name_not_starts_with?: InputMaybe + name_not_starts_with_nocase?: InputMaybe + name_starts_with?: InputMaybe + name_starts_with_nocase?: InputMaybe + or?: InputMaybe>> + priceEth?: InputMaybe + priceEth_gt?: InputMaybe + priceEth_gte?: InputMaybe + priceEth_in?: InputMaybe> + priceEth_lt?: InputMaybe + priceEth_lte?: InputMaybe + priceEth_not?: InputMaybe + priceEth_not_in?: InputMaybe> + priceUsd?: InputMaybe + priceUsd_gt?: InputMaybe + priceUsd_gte?: InputMaybe + priceUsd_in?: InputMaybe> + priceUsd_lt?: InputMaybe + priceUsd_lte?: InputMaybe + priceUsd_not?: InputMaybe + priceUsd_not_in?: InputMaybe> + symbol?: InputMaybe + symbol_contains?: InputMaybe + symbol_contains_nocase?: InputMaybe + symbol_ends_with?: InputMaybe + symbol_ends_with_nocase?: InputMaybe + symbol_gt?: InputMaybe + symbol_gte?: InputMaybe + symbol_in?: InputMaybe> + symbol_lt?: InputMaybe + symbol_lte?: InputMaybe + symbol_not?: InputMaybe + symbol_not_contains?: InputMaybe + symbol_not_contains_nocase?: InputMaybe + symbol_not_ends_with?: InputMaybe + symbol_not_ends_with_nocase?: InputMaybe + symbol_not_in?: InputMaybe> + symbol_not_starts_with?: InputMaybe + symbol_not_starts_with_nocase?: InputMaybe + symbol_starts_with?: InputMaybe + symbol_starts_with_nocase?: InputMaybe +} export enum UniswapToken_OrderBy { Address = 'address', @@ -3213,119 +3135,118 @@ export enum UniswapToken_OrderBy { Name = 'name', PriceEth = 'priceEth', PriceUsd = 'priceUsd', - Symbol = 'symbol' + Symbol = 'symbol', } export type User = { - __typename?: 'User'; + __typename?: 'User' /** Owner's address */ - address: Scalars['Bytes']; + address: Scalars['Bytes'] /** First trade block timestamp */ - firstTradeTimestamp: Scalars['Int']; + firstTradeTimestamp: Scalars['Int'] /** Trade event order owner */ - id: Scalars['ID']; + id: Scalars['ID'] /** Determine if user has solved a settlement */ - isSolver: Scalars['Boolean']; + isSolver: Scalars['Boolean'] /** Solved trades */ - numberOfTrades: Scalars['Int']; + numberOfTrades: Scalars['Int'] /** List of orders placed by this user */ - ordersPlaced: Array; + ordersPlaced: Array /** total amount solved by the user in Eth */ - solvedAmountEth?: Maybe; + solvedAmountEth?: Maybe /** total amount solved by the user in Usd */ - solvedAmountUsd?: Maybe; + solvedAmountUsd?: Maybe /** total amount traded by the user in Eth */ - tradedAmountEth?: Maybe; + tradedAmountEth?: Maybe /** total amount traded by the user in Usd */ - tradedAmountUsd?: Maybe; -}; - + tradedAmountUsd?: Maybe +} export type UserOrdersPlacedArgs = { - first?: InputMaybe; - orderBy?: InputMaybe; - orderDirection?: InputMaybe; - skip?: InputMaybe; - where?: InputMaybe; -}; + first?: InputMaybe + orderBy?: InputMaybe + orderDirection?: InputMaybe + skip?: InputMaybe + where?: InputMaybe +} export type User_Filter = { /** Filter for the block changed event. */ - _change_block?: InputMaybe; - address?: InputMaybe; - address_contains?: InputMaybe; - address_gt?: InputMaybe; - address_gte?: InputMaybe; - address_in?: InputMaybe>; - address_lt?: InputMaybe; - address_lte?: InputMaybe; - address_not?: InputMaybe; - address_not_contains?: InputMaybe; - address_not_in?: InputMaybe>; - and?: InputMaybe>>; - firstTradeTimestamp?: InputMaybe; - firstTradeTimestamp_gt?: InputMaybe; - firstTradeTimestamp_gte?: InputMaybe; - firstTradeTimestamp_in?: InputMaybe>; - firstTradeTimestamp_lt?: InputMaybe; - firstTradeTimestamp_lte?: InputMaybe; - firstTradeTimestamp_not?: InputMaybe; - firstTradeTimestamp_not_in?: InputMaybe>; - id?: InputMaybe; - id_gt?: InputMaybe; - id_gte?: InputMaybe; - id_in?: InputMaybe>; - id_lt?: InputMaybe; - id_lte?: InputMaybe; - id_not?: InputMaybe; - id_not_in?: InputMaybe>; - isSolver?: InputMaybe; - isSolver_in?: InputMaybe>; - isSolver_not?: InputMaybe; - isSolver_not_in?: InputMaybe>; - numberOfTrades?: InputMaybe; - numberOfTrades_gt?: InputMaybe; - numberOfTrades_gte?: InputMaybe; - numberOfTrades_in?: InputMaybe>; - numberOfTrades_lt?: InputMaybe; - numberOfTrades_lte?: InputMaybe; - numberOfTrades_not?: InputMaybe; - numberOfTrades_not_in?: InputMaybe>; - or?: InputMaybe>>; - ordersPlaced_?: InputMaybe; - solvedAmountEth?: InputMaybe; - solvedAmountEth_gt?: InputMaybe; - solvedAmountEth_gte?: InputMaybe; - solvedAmountEth_in?: InputMaybe>; - solvedAmountEth_lt?: InputMaybe; - solvedAmountEth_lte?: InputMaybe; - solvedAmountEth_not?: InputMaybe; - solvedAmountEth_not_in?: InputMaybe>; - solvedAmountUsd?: InputMaybe; - solvedAmountUsd_gt?: InputMaybe; - solvedAmountUsd_gte?: InputMaybe; - solvedAmountUsd_in?: InputMaybe>; - solvedAmountUsd_lt?: InputMaybe; - solvedAmountUsd_lte?: InputMaybe; - solvedAmountUsd_not?: InputMaybe; - solvedAmountUsd_not_in?: InputMaybe>; - tradedAmountEth?: InputMaybe; - tradedAmountEth_gt?: InputMaybe; - tradedAmountEth_gte?: InputMaybe; - tradedAmountEth_in?: InputMaybe>; - tradedAmountEth_lt?: InputMaybe; - tradedAmountEth_lte?: InputMaybe; - tradedAmountEth_not?: InputMaybe; - tradedAmountEth_not_in?: InputMaybe>; - tradedAmountUsd?: InputMaybe; - tradedAmountUsd_gt?: InputMaybe; - tradedAmountUsd_gte?: InputMaybe; - tradedAmountUsd_in?: InputMaybe>; - tradedAmountUsd_lt?: InputMaybe; - tradedAmountUsd_lte?: InputMaybe; - tradedAmountUsd_not?: InputMaybe; - tradedAmountUsd_not_in?: InputMaybe>; -}; + _change_block?: InputMaybe + address?: InputMaybe + address_contains?: InputMaybe + address_gt?: InputMaybe + address_gte?: InputMaybe + address_in?: InputMaybe> + address_lt?: InputMaybe + address_lte?: InputMaybe + address_not?: InputMaybe + address_not_contains?: InputMaybe + address_not_in?: InputMaybe> + and?: InputMaybe>> + firstTradeTimestamp?: InputMaybe + firstTradeTimestamp_gt?: InputMaybe + firstTradeTimestamp_gte?: InputMaybe + firstTradeTimestamp_in?: InputMaybe> + firstTradeTimestamp_lt?: InputMaybe + firstTradeTimestamp_lte?: InputMaybe + firstTradeTimestamp_not?: InputMaybe + firstTradeTimestamp_not_in?: InputMaybe> + id?: InputMaybe + id_gt?: InputMaybe + id_gte?: InputMaybe + id_in?: InputMaybe> + id_lt?: InputMaybe + id_lte?: InputMaybe + id_not?: InputMaybe + id_not_in?: InputMaybe> + isSolver?: InputMaybe + isSolver_in?: InputMaybe> + isSolver_not?: InputMaybe + isSolver_not_in?: InputMaybe> + numberOfTrades?: InputMaybe + numberOfTrades_gt?: InputMaybe + numberOfTrades_gte?: InputMaybe + numberOfTrades_in?: InputMaybe> + numberOfTrades_lt?: InputMaybe + numberOfTrades_lte?: InputMaybe + numberOfTrades_not?: InputMaybe + numberOfTrades_not_in?: InputMaybe> + or?: InputMaybe>> + ordersPlaced_?: InputMaybe + solvedAmountEth?: InputMaybe + solvedAmountEth_gt?: InputMaybe + solvedAmountEth_gte?: InputMaybe + solvedAmountEth_in?: InputMaybe> + solvedAmountEth_lt?: InputMaybe + solvedAmountEth_lte?: InputMaybe + solvedAmountEth_not?: InputMaybe + solvedAmountEth_not_in?: InputMaybe> + solvedAmountUsd?: InputMaybe + solvedAmountUsd_gt?: InputMaybe + solvedAmountUsd_gte?: InputMaybe + solvedAmountUsd_in?: InputMaybe> + solvedAmountUsd_lt?: InputMaybe + solvedAmountUsd_lte?: InputMaybe + solvedAmountUsd_not?: InputMaybe + solvedAmountUsd_not_in?: InputMaybe> + tradedAmountEth?: InputMaybe + tradedAmountEth_gt?: InputMaybe + tradedAmountEth_gte?: InputMaybe + tradedAmountEth_in?: InputMaybe> + tradedAmountEth_lt?: InputMaybe + tradedAmountEth_lte?: InputMaybe + tradedAmountEth_not?: InputMaybe + tradedAmountEth_not_in?: InputMaybe> + tradedAmountUsd?: InputMaybe + tradedAmountUsd_gt?: InputMaybe + tradedAmountUsd_gte?: InputMaybe + tradedAmountUsd_in?: InputMaybe> + tradedAmountUsd_lt?: InputMaybe + tradedAmountUsd_lte?: InputMaybe + tradedAmountUsd_not?: InputMaybe + tradedAmountUsd_not_in?: InputMaybe> +} export enum User_OrderBy { Address = 'address', @@ -3337,24 +3258,24 @@ export enum User_OrderBy { SolvedAmountEth = 'solvedAmountEth', SolvedAmountUsd = 'solvedAmountUsd', TradedAmountEth = 'tradedAmountEth', - TradedAmountUsd = 'tradedAmountUsd' + TradedAmountUsd = 'tradedAmountUsd', } export type _Block_ = { - __typename?: '_Block_'; + __typename?: '_Block_' /** The hash of the block */ - hash?: Maybe; + hash?: Maybe /** The block number */ - number: Scalars['Int']; + number: Scalars['Int'] /** The hash of the parent block */ - parentHash?: Maybe; + parentHash?: Maybe /** Integer representation of the timestamp stored in blocks for the chain */ - timestamp?: Maybe; -}; + timestamp?: Maybe +} /** The type for the top-level _meta field */ export type _Meta_ = { - __typename?: '_Meta_'; + __typename?: '_Meta_' /** * Information about a specific subgraph block. The hash of the block * will be null if the _meta field has a block constraint that asks for @@ -3362,35 +3283,51 @@ export type _Meta_ = { * and therefore asks for the latest block * */ - block: _Block_; + block: _Block_ /** The deployment ID */ - deployment: Scalars['String']; + deployment: Scalars['String'] /** If `true`, the subgraph encountered indexing errors at some past block */ - hasIndexingErrors: Scalars['Boolean']; -}; + hasIndexingErrors: Scalars['Boolean'] +} export enum _SubgraphErrorPolicy_ { /** Data will be returned even if the subgraph has indexing errors */ Allow = 'allow', /** If the subgraph has indexing errors, data will be omitted. The default. */ - Deny = 'deny' + Deny = 'deny', } -export type TotalsQueryVariables = Exact<{ [key: string]: never; }>; - - -export type TotalsQuery = { __typename?: 'Query', totals: Array<{ __typename?: 'Total', tokens: any, orders: any, traders: any, settlements: any, volumeUsd?: any | null, volumeEth?: any | null, feesUsd?: any | null, feesEth?: any | null }> }; +export type TotalsQueryVariables = Exact<{ [key: string]: never }> + +export type TotalsQuery = { + __typename?: 'Query' + totals: Array<{ + __typename?: 'Total' + tokens: any + orders: any + traders: any + settlements: any + volumeUsd?: any | null + volumeEth?: any | null + feesUsd?: any | null + feesEth?: any | null + }> +} export type LastDaysVolumeQueryVariables = Exact<{ - days: Scalars['Int']; -}>; - + days: Scalars['Int'] +}> -export type LastDaysVolumeQuery = { __typename?: 'Query', dailyTotals: Array<{ __typename?: 'DailyTotal', timestamp: number, volumeUsd?: any | null }> }; +export type LastDaysVolumeQuery = { + __typename?: 'Query' + dailyTotals: Array<{ __typename?: 'DailyTotal'; timestamp: number; volumeUsd?: any | null }> +} export type LastHoursVolumeQueryVariables = Exact<{ - hours: Scalars['Int']; -}>; - + hours: Scalars['Int'] +}> -export type LastHoursVolumeQuery = { __typename?: 'Query', hourlyTotals: Array<{ __typename?: 'HourlyTotal', timestamp: number, volumeUsd?: any | null }> }; +export type LastHoursVolumeQuery = { + __typename?: 'Query' + hourlyTotals: Array<{ __typename?: 'HourlyTotal'; timestamp: number; volumeUsd?: any | null }> +} diff --git a/packages/cow-sdk/src/trading/README.md b/packages/cow-sdk/src/trading/README.md index 068dcea96..bd6283bb7 100644 --- a/packages/cow-sdk/src/trading/README.md +++ b/packages/cow-sdk/src/trading/README.md @@ -4,6 +4,7 @@ CoW Protocol is intent based, decentralized trading protocol that allows users t This SDK makes it easier to interact with CoW Protocol by handling order parameters, calculating amounts, and signing orders. ### Basic Trading Flow + 1. 🔎 Get a quote (price) for a trade 2. ✍️ Sign the order 3. ✅ Post the order to the order-book @@ -15,23 +16,25 @@ It will put all necessary parameters to your order, calculates proper amounts, a ### Why Use This SDK? - - [App-data](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) (order metadata) - - [Order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils) - - Network costs, fees, and slippage - - Order parameters (validity, partial fills, etc.) - - Quote API settings (price quality, signing scheme, etc.) - - Order types (market, limit, on-chain trades, etc.) +- [App-data](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) (order metadata) +- [Order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils) +- Network costs, fees, and slippage +- Order parameters (validity, partial fills, etc.) +- Quote API settings (price quality, signing scheme, etc.) +- Order types (market, limit, on-chain trades, etc.) > See the [examples](../../examples/vanilla/src/index.ts) for usage. ## TradingSdk Functions Main functions: + - `postSwapOrder` - Get a quote and create a swap order. - `postLimitOrder` - Create a limit order. - `getQuote` - Fetch a quote for a swap order. Special cases: + - 'setTraderParams' - In case if you work with different chains and need to switch between them in runtime. - `postSellNativeCurrencyOrder` - Sell blockchain native tokens (e.g., ETH on Ethereum). - `getPreSignTransaction` - Sign an order using a smart contract wallet. @@ -39,11 +42,13 @@ Special cases: ### Setup You need: + - `chainId` - Supported chain ID ([see list](../common/chains.ts)). - `signer` - Private key, ethers signer, or `Eip1193` provider. - `appCode` - Unique app identifier for tracking orders. #### Example + ```typescript import { SupportedChainId, TradingSdk } from '@cowprotocol/cow-sdk' @@ -68,7 +73,7 @@ const traderParams = { } const sdkOptions: TradingSdkOptions = { - enableLogging: true // <-- + enableLogging: true, // <-- } const sdk = new TradingSdk(traderParams, sdkOptions) @@ -81,12 +86,13 @@ In case if you want to get a quote and only then create an order, you can use th The parameters required are the same as for the `postSwapOrder` function. The function returns `quoteResults` object with the following properties: - - `tradeParameters` - trade type, assets, amounts and other optional parameters - - `amountsAndCosts` - the order sell/buy amounts including network costs, fees and slippage - - `orderToSign` - order parameters to sign (see [order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils)) - - `quoteResponse` - DTO from [quote API](https://api.cow.fi/docs/#/default/post_api_v1_quote) - - `appDataInfo` - [order's metadata](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) - - `orderTypedData` - EIP-712 typed data for signing + +- `tradeParameters` - trade type, assets, amounts and other optional parameters +- `amountsAndCosts` - the order sell/buy amounts including network costs, fees and slippage +- `orderToSign` - order parameters to sign (see [order signing](https://docs.cow.fi/cow-protocol/reference/sdks/cow-sdk/classes/OrderSigningUtils)) +- `quoteResponse` - DTO from [quote API](https://api.cow.fi/docs/#/default/post_api_v1_quote) +- `appDataInfo` - [order's metadata](https://docs.cow.fi/cow-protocol/reference/sdks/app-data) +- `orderTypedData` - EIP-712 typed data for signing Another parameter is returned by this function is `postSwapOrderFromQuote`. It can be used to create an order from the received quote. @@ -94,12 +100,7 @@ It can be used to create an order from the received quote. #### Example ```typescript -import { - SupportedChainId, - OrderKind, - TradeParameters, - TradingSdk -} from '@cowprotocol/cow-sdk' +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ chainId: SupportedChainId.SEPOLIA, @@ -113,7 +114,7 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const { quoteResults, postSwapOrderFromQuote } = await sdk.getQuote(parameters) @@ -132,6 +133,7 @@ if (confirm(`You will get at least: ${buyAmount}, ok?`)) { This function fetches a quote for a swap order and just creates the order. The parameters required are: + - `kind` - the order kind (sell/buy) - `sellToken` - the sell token address - `sellTokenDecimals` - the sell token decimals @@ -144,12 +146,7 @@ The parameters required are: #### Example ```typescript -import { - SupportedChainId, - OrderKind, - TradeParameters, - TradingSdk -} from '@cowprotocol/cow-sdk' +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ chainId: SupportedChainId.SEPOLIA, @@ -163,7 +160,7 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const { orderId } = await sdk.postSwapOrder(parameters) @@ -176,25 +173,22 @@ console.log('Order created, id: ', orderId) This main difference between this function and `postSwapOrder` is that here you need to specify both sell and buy amounts. You need to provide the following parameters: - - `kind` - the order kind (sell/buy) - - `sellToken` - the sell token address - - `sellTokenDecimals` - the sell token decimals - - `buyToken` - the buy token address - - `buyTokenDecimals` - the buy token decimals - - `sellAmount` - the amount to sell in atoms - - `buyAmount` - the amount to buy in atoms + +- `kind` - the order kind (sell/buy) +- `sellToken` - the sell token address +- `sellTokenDecimals` - the sell token decimals +- `buyToken` - the buy token address +- `buyTokenDecimals` - the buy token decimals +- `sellAmount` - the amount to sell in atoms +- `buyAmount` - the amount to buy in atoms And optional parameters: - - `quoteId` - id of the quote from the quote API (see getQuote function) - - `validTo` - the order expiration time in seconds + +- `quoteId` - id of the quote from the quote API (see getQuote function) +- `validTo` - the order expiration time in seconds ```typescript -import { - SupportedChainId, - OrderKind, - LimitTradeParameters, - TradingSdk -} from '@cowprotocol/cow-sdk' +import { SupportedChainId, OrderKind, LimitTradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ chainId: SupportedChainId.SEPOLIA, @@ -227,12 +221,7 @@ But if you need more flexible way to create an order to sell native token, you c > We consider the order as native token selling order if the sell token has '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' address. ```typescript -import { - SupportedChainId, - OrderKind, - TradeParameters, - TradingSdk -} from '@cowprotocol/cow-sdk' +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ chainId: SupportedChainId.SEPOLIA, @@ -246,7 +235,7 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const { orderId } = await sdk.postSellNativeCurrencyOrder(parameters) @@ -254,7 +243,6 @@ const { orderId } = await sdk.postSellNativeCurrencyOrder(parameters) console.log('Order created, id: ', orderId) ``` - ### Get quote for a smart-contract wallet If you want to use a smart-contract wallet to sign the order, you should specify the `signingScheme` parameter in order to get more accurate quote in terms of gas efficiency. @@ -269,7 +257,7 @@ import { TradeParameters, SwapAdvancedSettings, SigningScheme, - TradingSdk + TradingSdk, } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ @@ -284,20 +272,20 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const advancedParameters: SwapAdvancedSettings = { quoteRequest: { // Specify the signing scheme - signingScheme: SigningScheme.PRESIGN - } + signingScheme: SigningScheme.PRESIGN, + }, } const { quoteResults } = await sdk.getQuote(parameters) console.log('Quote:', quoteResults) -```` +``` ### Create an order with smart-contract wallet @@ -307,12 +295,7 @@ And then you need to send a transaction from `getPreSignTransaction` result in o #### Example of Swap order ```typescript -import { - SupportedChainId, - OrderKind, - TradeParameters, - TradingSdk -} from '@cowprotocol/cow-sdk' +import { SupportedChainId, OrderKind, TradeParameters, TradingSdk } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ chainId: SupportedChainId.SEPOLIA, @@ -326,14 +309,14 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const advancedParameters: SwapAdvancedSettings = { quoteRequest: { // Specify the signing scheme - signingScheme: SigningScheme.PRESIGN - } + signingScheme: SigningScheme.PRESIGN, + }, } const smartContractWalletAddress = '0x' @@ -353,7 +336,7 @@ import { LimitTradeParameters, LimitOrderAdvancedSettings, SigningScheme, - TradingSdk + TradingSdk, } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ @@ -372,13 +355,13 @@ const limitOrderParameters: LimitTradeParameters = { buyTokenDecimals: 18, sellAmount: '120000000000000000', buyAmount: '66600000000000000000', - owner: smartContractWalletAddress // See note bellow why you need to specify the parameter + owner: smartContractWalletAddress, // See note bellow why you need to specify the parameter } const advancedParameters: LimitOrderAdvancedSettings = { additionalParams: { - signingScheme: SigningScheme.PRESIGN - } + signingScheme: SigningScheme.PRESIGN, + }, } const { orderId } = await sdk.postLimitOrder(limitOrderParameters, advancedParameters) @@ -396,14 +379,14 @@ console.log('Execute the transaction to sign the order', preSignTransaction) Both `postSwapOrder` and `postLimitOrder` functions have optional parameters. See `TradeOptionalParameters` type for more details. -| **Parameter** | **Type** | **Default Value** | **Description** | -|-----------------------|-----------------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `env` | `Env` | `prod` | The environment to use (`prod` or `staging`). | -| `partiallyFillable` | `boolean` | `false` | Indicates whether the order is fill-or-kill or partially fillable. | -| `slippageBps` | `number` | 50 | Slippage tolerance applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent). | -| `receiver` | `string` | order creator | The address that will receive the order's tokens. | -| `validFor` | `number` | 30 mins | The order expiration time in seconds. | -| `partnerFee` | `PartnerFee` | - | Partners of the protocol can specify their fee for the order, including the fee in basis points (BPS) and the fee recipient address. [Read more](https://docs.cow.fi/governance/fees/partner-fee) | +| **Parameter** | **Type** | **Default Value** | **Description** | +| ------------------- | ------------ | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `env` | `Env` | `prod` | The environment to use (`prod` or `staging`). | +| `partiallyFillable` | `boolean` | `false` | Indicates whether the order is fill-or-kill or partially fillable. | +| `slippageBps` | `number` | 50 | Slippage tolerance applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent). | +| `receiver` | `string` | order creator | The address that will receive the order's tokens. | +| `validFor` | `number` | 30 mins | The order expiration time in seconds. | +| `partnerFee` | `PartnerFee` | - | Partners of the protocol can specify their fee for the order, including the fee in basis points (BPS) and the fee recipient address. [Read more](https://docs.cow.fi/governance/fees/partner-fee) | ##### Example @@ -426,7 +409,7 @@ const parameters: TradeParameters = { // Optional parameters slippageBps: 200, // 2% validFor: 1200, // 20 mins - receiver: '0xdef1ca1fb7f1232777520aa7f396b4e015f497ab' // Just a random address, don't use it! + receiver: '0xdef1ca1fb7f1232777520aa7f396b4e015f497ab', // Just a random address, don't use it! } const { orderId } = await sdk.postSwapOrder(parameters) @@ -453,7 +436,7 @@ import { TradeParameters, TradingSdk, SwapAdvancedSettings, - PriceQuality + PriceQuality, } from '@cowprotocol/cow-sdk' const sdk = new TradingSdk({ @@ -468,7 +451,7 @@ const parameters: TradeParameters = { sellTokenDecimals: 18, buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59', buyTokenDecimals: 18, - amount: '120000000000000000' + amount: '120000000000000000', } const advancedSettings: SwapAdvancedSettings = { @@ -483,10 +466,10 @@ const advancedSettings: SwapAdvancedSettings = { { target: '0xdef1ca1fb7fbcdc777520aa7f396b4e015f497ab', callData: '0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045', - gasLimit: 21000 - } - ] - } + gasLimit: 21000, + }, + ], + }, }, } const { orderId } = await sdk.postSwapOrder(parameters, advancedSettings) diff --git a/packages/cow-sdk/src/trading/appDataUtils.ts b/packages/cow-sdk/src/trading/appDataUtils.ts index 731c064f5..58ec47939 100644 --- a/packages/cow-sdk/src/trading/appDataUtils.ts +++ b/packages/cow-sdk/src/trading/appDataUtils.ts @@ -7,7 +7,7 @@ const metadataApiSdk = new MetadataApi() export async function buildAppData( { slippageBps, appCode, orderClass: orderClassName, partnerFee }: BuildAppDataParams, - advancedParams?: AppDataParams + advancedParams?: AppDataParams, ): Promise { const quoteParams = { slippageBips: slippageBps } const orderClass = { orderClass: orderClassName } @@ -22,8 +22,8 @@ export async function buildAppData( partnerFee, }, }, - advancedParams || {} - ) + advancedParams || {}, + ), ) const { fullAppData, appDataKeccak256 } = await generateAppDataFromDoc(doc) @@ -32,7 +32,7 @@ export async function buildAppData( } export async function generateAppDataFromDoc( - doc: AppDataRootSchema + doc: AppDataRootSchema, ): Promise> { const fullAppData = await stringifyDeterministic(doc) const appDataKeccak256 = keccak256(toUtf8Bytes(fullAppData)) @@ -42,7 +42,7 @@ export async function generateAppDataFromDoc( export async function mergeAppDataDoc( _doc: LatestAppDataDocVersion, - appDataOverride: AppDataParams + appDataOverride: AppDataParams, ): Promise { // Do not merge hooks if there are overrides // Otherwise we will just append hooks instead of overriding diff --git a/packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts b/packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts index d3dad703c..50787bfc3 100644 --- a/packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts +++ b/packages/cow-sdk/src/trading/calculateUniqueOrderId.test.ts @@ -77,7 +77,7 @@ describe('calculateUniqueOrderId', () => { alreadyCalled = true return true - })() + })(), ) }) await calculateUniqueOrderId(SupportedChainId.MAINNET, orderMock, checkEthFlowOrderExists) diff --git a/packages/cow-sdk/src/trading/calculateUniqueOrderId.ts b/packages/cow-sdk/src/trading/calculateUniqueOrderId.ts index 922c95e96..1727370f1 100644 --- a/packages/cow-sdk/src/trading/calculateUniqueOrderId.ts +++ b/packages/cow-sdk/src/trading/calculateUniqueOrderId.ts @@ -14,7 +14,7 @@ export async function calculateUniqueOrderId( chainId: SupportedChainId, order: UnsignedOrder, checkEthFlowOrderExists?: EthFlowOrderExistsCallback, - env?: CowEnv + env?: CowEnv, ): Promise { const { orderDigest, orderId } = await OrderSigningUtils.generateOrderId( chainId, @@ -27,7 +27,7 @@ export async function calculateUniqueOrderId( } as Order, { owner: env === 'staging' ? BARN_ETH_FLOW_ADDRESS : ETH_FLOW_ADDRESS, - } + }, ) if (checkEthFlowOrderExists && (await checkEthFlowOrderExists(orderId, orderDigest))) { diff --git a/packages/cow-sdk/src/trading/getOrderToSign.test.ts b/packages/cow-sdk/src/trading/getOrderToSign.test.ts index c44bd0669..78de9c6b0 100644 --- a/packages/cow-sdk/src/trading/getOrderToSign.test.ts +++ b/packages/cow-sdk/src/trading/getOrderToSign.test.ts @@ -39,7 +39,7 @@ describe('getOrderToSign', () => { const result = getOrderToSign( params, { ...defaultOrderParams, validTo: undefined, validFor: 600 }, - appDataKeccak256 + appDataKeccak256, ) expect(result.validTo).toBe(currentTimestamp / 1000 + 600) @@ -49,7 +49,7 @@ describe('getOrderToSign', () => { const result = getOrderToSign( params, { ...defaultOrderParams, validTo: undefined, validFor: undefined }, - appDataKeccak256 + appDataKeccak256, ) expect(result.validTo).toBe(currentTimestamp / 1000 + DEFAULT_QUOTE_VALIDITY) diff --git a/packages/cow-sdk/src/trading/getOrderTypedData.ts b/packages/cow-sdk/src/trading/getOrderTypedData.ts index 54d17a137..c1b3e9eb6 100644 --- a/packages/cow-sdk/src/trading/getOrderTypedData.ts +++ b/packages/cow-sdk/src/trading/getOrderTypedData.ts @@ -12,7 +12,7 @@ const EIP712DomainTypes = [ export async function getOrderTypedData( chainId: SupportedChainId, - orderToSign: UnsignedOrder + orderToSign: UnsignedOrder, ): Promise { const domain = (await OrderSigningUtils.getDomain(chainId)) as OrderTypedData['domain'] diff --git a/packages/cow-sdk/src/trading/getQuote.test.ts b/packages/cow-sdk/src/trading/getQuote.test.ts index 26b5676ca..76afc55ed 100644 --- a/packages/cow-sdk/src/trading/getQuote.test.ts +++ b/packages/cow-sdk/src/trading/getQuote.test.ts @@ -70,7 +70,7 @@ describe('getQuoteToSign', () => { environment: 'barn', }, }, - orderBookApiMock + orderBookApiMock, ) const appData = JSON.parse(result.appDataInfo.fullAppData) @@ -85,7 +85,7 @@ describe('getQuoteToSign', () => { await getQuoteWithSigner( { ...defaultOrderParams, sellToken: ETH_ADDRESS, slippageBps: undefined }, {}, - orderBookApiMock + orderBookApiMock, ) const call = getQuoteMock.mock.calls[0][0] @@ -97,7 +97,7 @@ describe('getQuoteToSign', () => { await getQuoteWithSigner( { ...defaultOrderParams, sellToken: ETH_ADDRESS, slippageBps: undefined }, {}, - orderBookApiMock + orderBookApiMock, ) const call = getQuoteMock.mock.calls[0][0] @@ -156,7 +156,7 @@ describe('getQuoteToSign', () => { const buyAmount = +quoteResponseMock.quote.buyAmount expect(+result.amountsAndCosts.afterSlippage.buyAmount.toString()).toBe( - buyAmount - (buyAmount * 20) / (100 * 100) + buyAmount - (buyAmount * 20) / (100 * 100), ) }) @@ -164,7 +164,7 @@ describe('getQuoteToSign', () => { const { result } = await getQuoteWithSigner(defaultOrderParams, {}, orderBookApiMock) expect(result.amountsAndCosts.costs.networkFee.amountInSellCurrency.toString()).toBe( - quoteResponseMock.quote.feeAmount + quoteResponseMock.quote.feeAmount, ) }) @@ -173,7 +173,7 @@ describe('getQuoteToSign', () => { const { result } = await getQuoteWithSigner( { ...defaultOrderParams, chainId: SupportedChainId.MAINNET, sellToken: ETH_ADDRESS, slippageBps: undefined }, {}, - orderBookApiMock + orderBookApiMock, ) const buyAmount = +quoteResponseMock.quote.buyAmount diff --git a/packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts b/packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts index a7e636887..2638ceca9 100644 --- a/packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts +++ b/packages/cow-sdk/src/trading/postCoWProtocolTrade.test.ts @@ -132,7 +132,7 @@ describe('postCoWProtocolTrade', () => { expect.objectContaining({ from: ownerAddress, receiver: ownerAddress, - }) + }), ) expect(ownerAddress).not.toBe(signerAddress) }) @@ -150,7 +150,7 @@ describe('postCoWProtocolTrade', () => { expect.objectContaining({ from: signerAddress, receiver: signerAddress, - }) + }), ) }) }) diff --git a/packages/cow-sdk/src/trading/postLimitOrder.test.ts b/packages/cow-sdk/src/trading/postLimitOrder.test.ts index 4d6620cd9..7fe5627ca 100644 --- a/packages/cow-sdk/src/trading/postLimitOrder.test.ts +++ b/packages/cow-sdk/src/trading/postLimitOrder.test.ts @@ -77,7 +77,7 @@ describe('postLimitOrder', () => { expect.anything(), appDataMock, defaultOrderParams, - undefined + undefined, ) }) }) diff --git a/packages/cow-sdk/src/trading/postLimitOrder.ts b/packages/cow-sdk/src/trading/postLimitOrder.ts index d22b4c358..f85e4a228 100644 --- a/packages/cow-sdk/src/trading/postLimitOrder.ts +++ b/packages/cow-sdk/src/trading/postLimitOrder.ts @@ -8,7 +8,7 @@ import { log } from '../common/utils/log' export async function postLimitOrder( params: LimitOrderParameters, advancedSettings?: LimitOrderAdvancedSettings, - _orderBookApi?: OrderBookApi + _orderBookApi?: OrderBookApi, ): Promise { const appDataSlippage = advancedSettings?.appData?.metadata?.quote?.slippageBips const partnerFeeOverride = advancedSettings?.appData?.metadata?.partnerFee @@ -52,7 +52,7 @@ export async function postLimitOrder( appCode, partnerFee, }, - advancedSettings?.appData + advancedSettings?.appData, ) return postCoWProtocolTrade(orderBookApi, signer, appDataInfo, params, advancedSettings?.additionalParams) diff --git a/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts b/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts index d007847dd..afed22cc6 100644 --- a/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts +++ b/packages/cow-sdk/src/trading/postSellNativeCurrencyOrder.ts @@ -11,7 +11,7 @@ export async function postSellNativeCurrencyOrder( signer: Signer, appData: Pick, _params: LimitTradeParametersFromQuote, - additionalParams: PostTradeAdditionalParams = {} + additionalParams: PostTradeAdditionalParams = {}, ): Promise { const { appDataKeccak256, fullAppData } = appData @@ -20,7 +20,7 @@ export async function postSellNativeCurrencyOrder( appDataKeccak256, _params, orderBookApi.context.chainId, - additionalParams + additionalParams, ) log('Uploading app-data') diff --git a/packages/cow-sdk/src/trading/postSwapOrder.ts b/packages/cow-sdk/src/trading/postSwapOrder.ts index 2b17cdeb2..8760cda27 100644 --- a/packages/cow-sdk/src/trading/postSwapOrder.ts +++ b/packages/cow-sdk/src/trading/postSwapOrder.ts @@ -9,7 +9,7 @@ import { mergeAppDataDoc } from './appDataUtils' export async function postSwapOrder( params: SwapParameters, advancedSettings?: SwapAdvancedSettings, - orderBookApi?: OrderBookApi + orderBookApi?: OrderBookApi, ) { return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings, orderBookApi), advancedSettings) } @@ -19,7 +19,7 @@ export async function postSwapOrderFromQuote( orderBookApi, result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }, }: QuoteResultsWithSigner, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise { const params = swapParamsToLimitOrderParams(tradeParameters, quoteResponse) const appDataOverride = advancedSettings?.appData diff --git a/packages/cow-sdk/src/trading/tradingSdk.test.ts b/packages/cow-sdk/src/trading/tradingSdk.test.ts index b1eb40a39..e4a4b5e14 100644 --- a/packages/cow-sdk/src/trading/tradingSdk.test.ts +++ b/packages/cow-sdk/src/trading/tradingSdk.test.ts @@ -63,7 +63,7 @@ describe('TradingSdk', () => { appCode: 'test', signer: '0xa43ccc40ff785560dab6cb0f13b399d050073e8a54114621362f69444e1421ca', }, - { enableLogging: false, orderBookApi } + { enableLogging: false, orderBookApi }, ) await sdk.getQuote(defaultOrderParams) @@ -80,7 +80,7 @@ describe('TradingSdk', () => { appCode: 'test', signer: '0xa43ccc40ff785560dab6cb0f13b399d050073e8a54114621362f69444e1421ca', }, - { enableLogging: true, orderBookApi } + { enableLogging: true, orderBookApi }, ) await sdk.getQuote(defaultOrderParams) diff --git a/packages/cow-sdk/src/trading/tradingSdk.ts b/packages/cow-sdk/src/trading/tradingSdk.ts index 210c89d05..04a311e03 100644 --- a/packages/cow-sdk/src/trading/tradingSdk.ts +++ b/packages/cow-sdk/src/trading/tradingSdk.ts @@ -27,7 +27,7 @@ export interface TradingSdkOptions { export class TradingSdk { constructor( public traderParams: Partial = {}, - public readonly options: Partial = {} + public readonly options: Partial = {}, ) { if (options.enableLogging !== undefined) { enableLogging(options.enableLogging) @@ -42,7 +42,7 @@ export class TradingSdk { async getQuote( params: WithPartialTraderParams, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise { const quoteResults = await getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.options.orderBookApi) @@ -60,35 +60,35 @@ export class TradingSdk { }), }, }, - advancedSettings + advancedSettings, ), } } async getQuoteResults( params: WithPartialTraderParams, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise { return getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.options.orderBookApi) } async postSwapOrder( params: WithPartialTraderParams, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise { return postSwapOrder(this.mergeParams(params), advancedSettings, this.options.orderBookApi) } async postLimitOrder( params: WithPartialTraderParams, - advancedSettings?: LimitOrderAdvancedSettings + advancedSettings?: LimitOrderAdvancedSettings, ): Promise { return postLimitOrder(this.mergeParams(params), advancedSettings, this.options.orderBookApi) } async postSellNativeCurrencyOrder( params: WithPartialTraderParams, - advancedSettings?: SwapAdvancedSettings + advancedSettings?: SwapAdvancedSettings, ): Promise> { const quoteResults = await getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.options.orderBookApi) @@ -100,14 +100,14 @@ export class TradingSdk { // Quote response always has an id swapParamsToLimitOrderParams( getTradeParametersAfterQuote({ quoteParameters: tradeParameters, sellToken: params.sellToken }), - quoteResponse + quoteResponse, ), - advancedSettings?.additionalParams + advancedSettings?.additionalParams, ) } async getPreSignTransaction( - params: WithPartialTraderParams<{ orderId: string; account: string }> + params: WithPartialTraderParams<{ orderId: string; account: string }>, ): ReturnType { const traderParams = this.mergeParams(params) const signer = getSigner(traderParams.signer) diff --git a/packages/cow-sdk/src/weiroll/README.md b/packages/cow-sdk/src/weiroll/README.md index 7fa12cbd7..f0fd5028a 100644 --- a/packages/cow-sdk/src/weiroll/README.md +++ b/packages/cow-sdk/src/weiroll/README.md @@ -2,12 +2,13 @@ This module some utilities to simplify the use of the [Weiroll contract](https://github.com/weiroll/weiroll). -Weiroll is a simple and efficient operation-chaining/scripting language for the EVM. +Weiroll is a simple and efficient operation-chaining/scripting language for the EVM. The main utilities function are: + - `createWeirollContract` which creates a Weiroll contract from an ethers contract to perform evm calls. - `createWeirollLibrary` which creates a Weiroll library from an ethers contract to perform static calls. -- `createWeirollDelegateCall` which returns an EVM `delegatecall` with some plan encoded as Weiroll calldata. +- `createWeirollDelegateCall` which returns an EVM `delegatecall` with some plan encoded as Weiroll calldata. To understand how this works, let's see an example: @@ -34,7 +35,7 @@ const daiContract = createWeirollContract(contract, CommandFlags.CALL) const ownerContractAddress = '0xf6e72Db5454dd049d0788e411b06CfAF16853042' // Main function to create the delegatecall -const { to, value, data } = createWeirollDelegateCall((planner: Planner) => { +const { to, value, data } = createWeirollDelegateCall((planner: Planner) => { // Add to plan: Get the balance of the token const daiBalance = planner.add(daiContract.balanceOf(ownerContractAddress)) @@ -42,17 +43,13 @@ const { to, value, data } = createWeirollDelegateCall((planner: Planner) => { planner.add(daiContract.transfer('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', daiBalance)) }) -// Execute the delegatecall from "ownerContract" context. +// Execute the delegatecall from "ownerContract" context. // For illustration purposes, lets imagine there's a contract with a function `executeDelegateCall` (not a very realistic example because this would likely need a signature to be safe) // Create instance of owner contract -const SMART_ACCOUNT_ABI = [ - 'function executeDelegateCall(address,uint256,bytes)', -] +const SMART_ACCOUNT_ABI = ['function executeDelegateCall(address,uint256,bytes)'] const ownerContract = new ethers.Contract(ownerContractAddress, SMART_ACCOUNT_ABI) - + // Execute the delegatecall, transferring all DAI to Vitalik const tx = await ownerContract.executeDelegateCall(to, value, data) ``` - - From 0203727deac64ce45eee97dd0af9f19b60a75bee Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Mon, 26 May 2025 13:57:59 -0300 Subject: [PATCH 05/33] chore: eslint config. --- eslint.config.js | 77 +++++------ package.json | 11 +- pnpm-lock.yaml | 326 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 376 insertions(+), 38 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 100c896af..4fd6e6814 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -1,45 +1,50 @@ import eslint from '@eslint/js' -import tseslint from 'typescript-eslint' +import * as tseslint from 'typescript-eslint' import unusedImports from 'eslint-plugin-unused-imports' -export default tseslint.config( +export default [ { ignores: ['**/generated/*'], }, eslint.configs.recommended, - tseslint.configs.recommended, - [ - { - plugins: { - 'unused-imports': unusedImports, - }, - rules: { - '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/no-explicit-any': 'error', - 'no-prototype-builtins': 'off', - 'unused-imports/no-unused-imports': 'error', - 'unused-imports/no-unused-vars': [ - 'warn', - { - vars: 'all', - varsIgnorePattern: '^_', - args: 'after-used', - argsIgnorePattern: '^_', - }, - ], - '@typescript-eslint/no-unused-vars': [ - 'error', - { - args: 'all', - argsIgnorePattern: '^_', - caughtErrors: 'all', - caughtErrorsIgnorePattern: '^_', - destructuredArrayIgnorePattern: '^_', - varsIgnorePattern: '^_', - ignoreRestSiblings: true, - }, - ], + ...tseslint.configs.recommended, + { + files: ['**/*.ts'], + plugins: { + 'unused-imports': unusedImports, + }, + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: './tsconfig.json', }, }, - ], -) + rules: { + '@typescript-eslint/no-non-null-assertion': 'error', + '@typescript-eslint/no-explicit-any': 'error', + 'no-prototype-builtins': 'off', + 'unused-imports/no-unused-imports': 'error', + 'unused-imports/no-unused-vars': [ + 'warn', + { + vars: 'all', + varsIgnorePattern: '^_', + args: 'after-used', + argsIgnorePattern: '^_', + }, + ], + '@typescript-eslint/no-unused-vars': [ + 'error', + { + args: 'all', + argsIgnorePattern: '^_', + caughtErrors: 'all', + caughtErrorsIgnorePattern: '^_', + destructuredArrayIgnorePattern: '^_', + varsIgnorePattern: '^_', + ignoreRestSiblings: true, + }, + ], + }, + }, +] diff --git a/package.json b/package.json index 7e54bfd77..a17162c7b 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,23 @@ { "name": "cow-monorepo", "private": true, + "type": "module", "scripts": { "build": "turbo run build", "dev": "turbo run dev", - "lint": "turbo run lint", + "lint": "turbo run lint -- --fix", "test": "turbo run test", "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "devDependencies": { + "@eslint/js": "^9.26.0", + "eslint": "^8.57.1", + "eslint-config-prettier": "^10.1.1", + "eslint-plugin-prettier": "^5.4.0", + "eslint-plugin-unused-imports": "^4.1.4", "prettier": "^3.5.3", - "turbo": "latest" + "turbo": "latest", + "typescript-eslint": "^8.32.1" }, "packageManager": "pnpm@10.8.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9b792058..231ba26cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,30 @@ importers: .: devDependencies: + '@eslint/js': + specifier: ^9.26.0 + version: 9.27.0 + eslint: + specifier: ^8.57.1 + version: 8.57.1 + eslint-config-prettier: + specifier: ^10.1.1 + version: 10.1.5(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^5.4.0 + version: 5.4.0(eslint-config-prettier@10.1.5(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3) + eslint-plugin-unused-imports: + specifier: ^4.1.4 + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) prettier: specifier: ^3.5.3 version: 3.5.3 turbo: specifier: latest version: 2.5.3 + typescript-eslint: + specifier: ^8.32.1 + version: 8.32.1(eslint@8.57.1)(typescript@5.8.3) packages/cow-sdk: dependencies: @@ -880,10 +898,18 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1248,10 +1274,19 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -1414,6 +1449,10 @@ packages: '@openzeppelin/merkle-tree@1.0.8': resolution: {integrity: sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow==} + '@pkgr/core@0.2.4': + resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -1671,6 +1710,9 @@ packages: resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -2461,6 +2503,10 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -2571,6 +2617,26 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + eslint-config-prettier@10.1.5: + resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-prettier@5.4.0: + resolution: {integrity: sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + eslint-plugin-unused-imports@4.1.4: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: @@ -2580,6 +2646,10 @@ packages: '@typescript-eslint/eslint-plugin': optional: true + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2592,6 +2662,12 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2606,6 +2682,10 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2713,6 +2793,9 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2750,6 +2833,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2799,6 +2886,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2957,6 +3048,10 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3395,6 +3490,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -4605,6 +4704,10 @@ packages: resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} engines: {node: '>=0.10.0'} + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -4828,6 +4931,11 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -5228,6 +5336,10 @@ packages: resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} + synckit@0.11.6: + resolution: {integrity: sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==} + engines: {node: ^14.18.0 || >=16.0.0} + table-layout@1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} @@ -5241,6 +5353,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -5393,6 +5508,10 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -6599,6 +6718,11 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -6620,6 +6744,20 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -6634,6 +6772,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -7369,8 +7509,18 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -7643,6 +7793,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@pkgr/core@0.2.4': {} + '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -7869,6 +8021,23 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/type-utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 7.0.4 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -7886,6 +8055,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.32.1 + debug: 4.4.1 + eslint: 8.57.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 @@ -7903,6 +8084,17 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 + '@typescript-eslint/type-utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + debug: 4.4.1 + eslint: 8.57.1 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) @@ -7930,6 +8122,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.32.1 + '@typescript-eslint/types': 8.32.1 + '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) + eslint: 8.57.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -7946,6 +8149,8 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.3.0': {} + '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -8843,6 +9048,10 @@ snapshots: dependencies: path-type: 4.0.0 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9000,12 +9209,36 @@ snapshots: escape-string-regexp@4.0.0: {} + eslint-config-prettier@10.1.5(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-prettier@5.4.0(eslint-config-prettier@10.1.5(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3): + dependencies: + eslint: 8.57.1 + prettier: 3.5.3 + prettier-linter-helpers: 1.0.0 + synckit: 0.11.6 + optionalDependencies: + eslint-config-prettier: 10.1.5(eslint@8.57.1) + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): dependencies: eslint: 9.27.0(jiti@2.4.2) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -9015,6 +9248,49 @@ snapshots: eslint-visitor-keys@4.2.0: {} + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -9063,6 +9339,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} esquery@1.6.0: @@ -9230,6 +9512,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -9280,6 +9564,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9336,6 +9624,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -9519,6 +9813,10 @@ snapshots: globals@11.12.0: {} + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + globals@14.0.0: {} globalthis@1.0.4: @@ -9987,6 +10285,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@3.0.3: {} + is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -11394,6 +11694,10 @@ snapshots: preserve@0.2.0: {} + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + prettier@2.8.8: {} prettier@3.5.3: {} @@ -11657,6 +11961,10 @@ snapshots: rfdc@1.4.1: {} + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 @@ -12129,6 +12437,10 @@ snapshots: timeout-signal: 2.0.0 whatwg-mimetype: 4.0.0 + synckit@0.11.6: + dependencies: + '@pkgr/core': 0.2.4 + table-layout@1.0.2: dependencies: array-back: 4.0.2 @@ -12149,6 +12461,8 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-table@0.2.0: {} + through@2.3.8: {} timeout-signal@2.0.0: {} @@ -12300,6 +12614,8 @@ snapshots: type-fest@0.18.1: {} + type-fest@0.20.2: {} + type-fest@0.21.3: {} type-fest@0.6.0: {} @@ -12355,6 +12671,16 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typescript-eslint@8.32.1(eslint@8.57.1)(typescript@5.8.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/parser': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) + eslint: 8.57.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) From 074778bddc40ec6f6a1e9a4d24a56586c6437edd Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Tue, 27 May 2025 12:13:29 -0300 Subject: [PATCH 06/33] chore: update lint config, .npmrc, and VSCode settings --- .devcontainer/devcontainer.json | 30 +- .gitignore | 2 +- .npmrc | 3 + .nvmrc | 2 +- .prettierrc | 3 +- .vscode/settings.json | 16 + eslint.config.js | 10 + package.json | 14 +- packages/cow-sdk/tsconfig.test.json | 10 + pnpm-lock.yaml | 1040 ++++++++++++++++++--------- 10 files changed, 782 insertions(+), 348 deletions(-) create mode 100644 .npmrc create mode 100644 .vscode/settings.json create mode 100644 packages/cow-sdk/tsconfig.test.json diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index c6342b299..a249b7db4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,18 +1,18 @@ { - "name": "Node", - "image": "mcr.microsoft.com/devcontainers/base:0", + "name": "Node", + "image": "mcr.microsoft.com/devcontainers/base:0", - "features": { - "ghcr.io/devcontainers/features/node:1": {}, - "ghcr.io/devcontainers/features/common-utils:2": { - "installZsh": true, - "configureZshAsDefaultShell": true, - "installOhMyZsh": true, - "installOhMyZshConfig": true, - "upgradePackages": true, - "username": "automatic", - "userUid": "automatic", - "userGid": "automatic" - } - } + "features": { + "ghcr.io/devcontainers/features/node:1": {}, + "ghcr.io/devcontainers/features/common-utils:2": { + "installZsh": true, + "configureZshAsDefaultShell": true, + "installOhMyZsh": true, + "installOhMyZshConfig": true, + "upgradePackages": true, + "username": "automatic", + "userUid": "automatic", + "userGid": "automatic" + } + } } diff --git a/.gitignore b/.gitignore index 738946377..f097de917 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ jest.results.json .idea *.iml packages/cow-sdk/src/common/generated -packages/cow-sdk/docs/typedoc/ \ No newline at end of file +packages/cow-sdk/docs/typedoc/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..9ec69c43d --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +shamefully-hoist=false +strict-peer-dependencies=false +node-linker=isolated diff --git a/.nvmrc b/.nvmrc index 731231b5f..f94239494 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.* \ No newline at end of file +v20.* diff --git a/.prettierrc b/.prettierrc index 31ba22d84..47591c559 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,6 @@ { "semi": false, "singleQuote": true, - "printWidth": 120 + "printWidth": 120, + "endOfLine": "lf" } diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..e8a09c4ab --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "always" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "prettier.singleQuote": true, + "prettier.semi": false, + "prettier.printWidth": 120 +} diff --git a/eslint.config.js b/eslint.config.js index 4fd6e6814..2b3f971b3 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -45,6 +45,16 @@ export default [ ignoreRestSiblings: true, }, ], + 'eol-last': ['error', 'always'], + }, + }, + { + files: ['**/*.test.ts', '**/*.spec.ts', '**/__mock__/**/*.ts'], + languageOptions: { + parser: tseslint.parser, + parserOptions: { + project: './tsconfig.test.json', + }, }, }, ] diff --git a/package.json b/package.json index a17162c7b..771f61cd5 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,18 @@ "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "devDependencies": { - "@eslint/js": "^9.26.0", - "eslint": "^8.57.1", - "eslint-config-prettier": "^10.1.1", - "eslint-plugin-prettier": "^5.4.0", + "@eslint/js": "^9.18.0", + "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/utils": "^8.32.0", + "eslint": "^9.18.0", "eslint-plugin-unused-imports": "^4.1.4", "prettier": "^3.5.3", + "tsup": "^7.2.0", "turbo": "latest", "typescript-eslint": "^8.32.1" }, - "packageManager": "pnpm@10.8.0" + "packageManager": "pnpm@10.8.0", + "engines": { + "node": ">=18" + } } diff --git a/packages/cow-sdk/tsconfig.test.json b/packages/cow-sdk/tsconfig.test.json new file mode 100644 index 000000000..9b09f0fcd --- /dev/null +++ b/packages/cow-sdk/tsconfig.test.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "include": ["src/**/*"], + "exclude": [], + "compilerOptions": { + "types": ["jest", "node"], + "noImplicitAny": false, + "strictNullChecks": false + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 231ba26cd..d5717cae7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,29 +9,32 @@ importers: .: devDependencies: '@eslint/js': - specifier: ^9.26.0 + specifier: ^9.18.0 version: 9.27.0 + '@typescript-eslint/parser': + specifier: ^8.32.0 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/utils': + specifier: ^8.32.0 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint: - specifier: ^8.57.1 - version: 8.57.1 - eslint-config-prettier: - specifier: ^10.1.1 - version: 10.1.5(eslint@8.57.1) - eslint-plugin-prettier: - specifier: ^5.4.0 - version: 5.4.0(eslint-config-prettier@10.1.5(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3) + specifier: ^9.18.0 + version: 9.27.0(jiti@2.4.2) eslint-plugin-unused-imports: specifier: ^4.1.4 - version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1) + version: 4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)) prettier: specifier: ^3.5.3 version: 3.5.3 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))(typescript@5.8.3) turbo: specifier: latest version: 2.5.3 typescript-eslint: specifier: ^8.32.1 - version: 8.32.1(eslint@8.57.1)(typescript@5.8.3) + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) packages/cow-sdk: dependencies: @@ -876,6 +879,144 @@ packages: resolution: {integrity: sha512-CsFmA3u3c2QoLDTfEpGr4t25fjMU31nyvse7IzWTvb0ZycuPjMjb0fjlheh+PbhBYb9YLugnT2uY6Mwcg1o+Zg==} engines: {node: '>=18.0.0'} + '@esbuild/aix-ppc64@0.19.12': + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.19.12': + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.19.12': + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.19.12': + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.19.12': + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.19.12': + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.19.12': + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.19.12': + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.19.12': + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.19.12': + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.19.12': + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.19.12': + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.19.12': + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.19.12': + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.19.12': + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.19.12': + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.19.12': + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.19.12': + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.19.12': + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.19.12': + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.19.12': + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.19.12': + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -898,18 +1039,10 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1274,19 +1407,10 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -1449,9 +1573,9 @@ packages: '@openzeppelin/merkle-tree@1.0.8': resolution: {integrity: sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow==} - '@pkgr/core@0.2.4': - resolution: {integrity: sha512-ROFF39F6ZrnzSUEmQQZUar0Jt4xVoP9WnDRdWwF4NNcXs3xBTLgBUDoOwW141y1jP+S8nahIbdxbFC7IShw9Iw==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -1530,6 +1654,106 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} + '@rollup/rollup-android-arm-eabi@4.41.1': + resolution: {integrity: sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.41.1': + resolution: {integrity: sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.41.1': + resolution: {integrity: sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.41.1': + resolution: {integrity: sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.41.1': + resolution: {integrity: sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.41.1': + resolution: {integrity: sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + resolution: {integrity: sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + resolution: {integrity: sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + resolution: {integrity: sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.41.1': + resolution: {integrity: sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + resolution: {integrity: sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + resolution: {integrity: sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + resolution: {integrity: sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + resolution: {integrity: sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + resolution: {integrity: sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.41.1': + resolution: {integrity: sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.41.1': + resolution: {integrity: sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + resolution: {integrity: sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + resolution: {integrity: sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.41.1': + resolution: {integrity: sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==} + cpu: [x64] + os: [win32] + '@scure/base@1.1.9': resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} @@ -1710,9 +1934,6 @@ packages: resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -1800,6 +2021,9 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@1.3.2: resolution: {integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==} @@ -2002,6 +2226,10 @@ packages: resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} engines: {node: '>=0.10.0'} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} @@ -2069,6 +2297,16 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} + bundle-require@4.2.1: + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + cache-base@1.0.1: resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} engines: {node: '>=0.10.0'} @@ -2144,6 +2382,10 @@ packages: chokidar@1.7.0: resolution: {integrity: sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -2241,6 +2483,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2503,10 +2749,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -2601,6 +2843,11 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2617,26 +2864,6 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.1.5: - resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-prettier@5.4.0: - resolution: {integrity: sha512-BvQOvUhkVQM1i63iMETK9Hjud9QhqBnbtT1Zc642p9ynzBuCe5pybkOnvqZIBypXmMlsGcnU4HZ8sCTPfpAexA==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - eslint-plugin-unused-imports@4.1.4: resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} peerDependencies: @@ -2646,10 +2873,6 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2662,12 +2885,6 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2682,10 +2899,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2793,9 +3006,6 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -2833,10 +3043,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2886,10 +3092,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3031,6 +3233,10 @@ packages: resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} engines: {node: '>= 0.10'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@11.0.2: resolution: {integrity: sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==} engines: {node: 20 || >=22} @@ -3048,10 +3254,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3368,6 +3570,10 @@ packages: resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} engines: {node: '>=0.10.0'} + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + is-boolean-object@1.2.2: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} @@ -3490,10 +3696,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3644,6 +3846,9 @@ packages: it-parallel-batch@1.0.11: resolution: {integrity: sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.1.1: resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} engines: {node: 20 || >=22} @@ -3800,6 +4005,10 @@ packages: jose@5.10.0: resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -3910,6 +4119,10 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + limiter@3.0.0: resolution: {integrity: sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg==} @@ -3925,6 +4138,10 @@ packages: enquirer: optional: true + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + loader-utils@3.3.1: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} @@ -3983,6 +4200,9 @@ packages: lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.1.0: resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} engines: {node: 20 || >=22} @@ -4185,6 +4405,9 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nan@2.22.2: resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} @@ -4430,6 +4653,10 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} @@ -4532,6 +4759,18 @@ packages: ts-node: optional: true + postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + postcss-merge-longhand@5.1.7: resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} @@ -4704,10 +4943,6 @@ packages: resolution: {integrity: sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==} engines: {node: '>=0.10.0'} - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -4810,6 +5045,10 @@ packages: resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} engines: {node: '>=0.10'} + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -4931,11 +5170,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -4978,6 +5212,11 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + rollup@4.41.1: + resolution: {integrity: sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -5165,6 +5404,10 @@ packages: resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} engines: {node: '>= 8'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} deprecated: Please use @jridgewell/sourcemap-codec instead @@ -5304,6 +5547,11 @@ packages: subarg@1.0.0: resolution: {integrity: sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==} + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} engines: {node: '>=0.8.0'} @@ -5336,10 +5584,6 @@ packages: resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} - synckit@0.11.6: - resolution: {integrity: sha512-2pR2ubZSV64f/vqm9eLPz/KOvR9Dm+Co/5ChLgeHl0yEDRc6h5hXHoxEQH8Y5Ljycozd3p1k5TTSVdzYGkPvLw==} - engines: {node: ^14.18.0 || >=16.0.0} - table-layout@1.0.2: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} @@ -5353,8 +5597,12 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} @@ -5399,6 +5647,13 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -5418,6 +5673,9 @@ packages: peerDependencies: typescript: '>=3.7.0' + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-json-schema-generator@2.4.0: resolution: {integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==} engines: {node: '>=18.0.0'} @@ -5456,6 +5714,23 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@7.3.0: + resolution: {integrity: sha512-Ja1eaSRrE+QarmATlNO5fse2aOACYMBX+IZRKy1T+gpyH+jXgRrl5l4nHIQJQ1DoDgEjHDTw8cpE085UdBZuWQ==} + engines: {node: '>=18'} + deprecated: Breaking node 16 + hasBin: true + peerDependencies: + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -5508,10 +5783,6 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5704,6 +5975,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -5711,6 +5985,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} engines: {node: '>= 0.4'} @@ -6718,46 +6995,96 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 + '@esbuild/aix-ppc64@0.19.12': + optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': - dependencies: - eslint: 9.27.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 + '@esbuild/android-arm64@0.19.12': + optional: true - '@eslint-community/regexpp@4.12.1': {} + '@esbuild/android-arm@0.19.12': + optional: true - '@eslint/config-array@0.20.0': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@esbuild/android-x64@0.19.12': + optional: true - '@eslint/config-helpers@0.2.2': {} + '@esbuild/darwin-arm64@0.19.12': + optional: true - '@eslint/core@0.14.0': - dependencies: - '@types/json-schema': 7.0.15 + '@esbuild/darwin-x64@0.19.12': + optional: true - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 + '@esbuild/freebsd-arm64@0.19.12': + optional: true + + '@esbuild/freebsd-x64@0.19.12': + optional: true + + '@esbuild/linux-arm64@0.19.12': + optional: true + + '@esbuild/linux-arm@0.19.12': + optional: true + + '@esbuild/linux-ia32@0.19.12': + optional: true + + '@esbuild/linux-loong64@0.19.12': + optional: true + + '@esbuild/linux-mips64el@0.19.12': + optional: true + + '@esbuild/linux-ppc64@0.19.12': + optional: true + + '@esbuild/linux-riscv64@0.19.12': + optional: true + + '@esbuild/linux-s390x@0.19.12': + optional: true + + '@esbuild/linux-x64@0.19.12': + optional: true + + '@esbuild/netbsd-x64@0.19.12': + optional: true + + '@esbuild/openbsd-x64@0.19.12': + optional: true + + '@esbuild/sunos-x64@0.19.12': + optional: true + + '@esbuild/win32-arm64@0.19.12': + optional: true + + '@esbuild/win32-ia32@0.19.12': + optional: true + + '@esbuild/win32-x64@0.19.12': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': + dependencies: + eslint: 9.27.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/config-array@0.20.0': + dependencies: + '@eslint/object-schema': 2.1.6 debug: 4.4.1 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 minimatch: 3.1.2 - strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color + '@eslint/config-helpers@0.2.2': {} + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -6772,8 +7099,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -7509,18 +7834,8 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -7793,7 +8108,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@pkgr/core@0.2.4': {} + '@pkgjs/parseargs@0.11.0': + optional: true '@protobufjs/aspromise@1.1.2': {} @@ -7874,6 +8190,66 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 + '@rollup/rollup-android-arm-eabi@4.41.1': + optional: true + + '@rollup/rollup-android-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.41.1': + optional: true + + '@rollup/rollup-darwin-x64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.41.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.41.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.41.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.41.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.41.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.41.1': + optional: true + '@scure/base@1.1.9': {} '@scure/base@1.2.5': {} @@ -8021,23 +8397,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/type-utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - eslint: 8.57.1 - graphemer: 1.4.0 - ignore: 7.0.4 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -8055,18 +8414,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.32.1 - debug: 4.4.1 - eslint: 8.57.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/scope-manager': 8.32.1 @@ -8084,17 +8431,6 @@ snapshots: '@typescript-eslint/types': 8.32.1 '@typescript-eslint/visitor-keys': 8.32.1 - '@typescript-eslint/type-utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - debug: 4.4.1 - eslint: 8.57.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) @@ -8122,17 +8458,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.32.1(eslint@8.57.1)(typescript@5.8.3)': - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.32.1 - '@typescript-eslint/types': 8.32.1 - '@typescript-eslint/typescript-estree': 8.32.1(typescript@5.8.3) - eslint: 8.57.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -8149,8 +8474,6 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 - '@ungap/structured-clone@1.3.0': {} - '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -8236,6 +8559,8 @@ snapshots: ansi-styles@6.2.1: {} + any-promise@1.3.0: {} + anymatch@1.3.2: dependencies: micromatch: 2.3.11 @@ -8458,6 +8783,8 @@ snapshots: binary-extensions@1.13.1: {} + binary-extensions@2.3.0: {} + bindings@1.5.0: dependencies: file-uri-to-path: 1.0.0 @@ -8548,6 +8875,13 @@ snapshots: builtin-modules@3.3.0: {} + bundle-require@4.2.1(esbuild@0.19.12): + dependencies: + esbuild: 0.19.12 + load-tsconfig: 0.2.5 + + cac@6.7.14: {} + cache-base@1.0.1: dependencies: collection-visit: 1.0.0 @@ -8677,6 +9011,18 @@ snapshots: transitivePeerDependencies: - supports-color + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + ci-info@3.9.0: {} cids@1.1.9: @@ -8767,6 +9113,8 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + commander@7.2.0: {} common-tags@1.8.2: {} @@ -9048,10 +9396,6 @@ snapshots: dependencies: path-type: 4.0.0 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9201,6 +9545,32 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + esbuild@0.19.12: + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -9209,36 +9579,12 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.5(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - - eslint-plugin-prettier@5.4.0(eslint-config-prettier@10.1.5(eslint@8.57.1))(eslint@8.57.1)(prettier@3.5.3): - dependencies: - eslint: 8.57.1 - prettier: 3.5.3 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.6 - optionalDependencies: - eslint-config-prettier: 10.1.5(eslint@8.57.1) - - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1): - dependencies: - eslint: 8.57.1 - optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2)): dependencies: eslint: 9.27.0(jiti@2.4.2) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -9248,49 +9594,6 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -9339,12 +9642,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 - espree@9.6.1: - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.6.0: @@ -9512,8 +9809,6 @@ snapshots: fast-deep-equal@3.1.3: {} - fast-diff@1.3.0: {} - fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -9564,10 +9859,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9624,12 +9915,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -9784,6 +10069,15 @@ snapshots: dependencies: find-index: 0.1.1 + glob@10.4.5: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + glob@11.0.2: dependencies: foreground-child: 3.3.1 @@ -9813,10 +10107,6 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globalthis@1.0.4: @@ -10179,6 +10469,10 @@ snapshots: dependencies: binary-extensions: 1.13.1 + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + is-boolean-object@1.2.2: dependencies: call-bound: 1.0.4 @@ -10285,8 +10579,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -10435,6 +10727,12 @@ snapshots: dependencies: it-batch: 1.0.9 + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jackspeak@4.1.1: dependencies: '@isaacs/cliui': 8.0.2 @@ -10774,6 +11072,8 @@ snapshots: jose@5.10.0: {} + joycon@3.1.1: {} + js-sha3@0.8.0: {} js-tokens@4.0.0: {} @@ -10862,6 +11162,8 @@ snapshots: lilconfig@2.1.0: {} + lilconfig@3.1.3: {} + limiter@3.0.0: {} lines-and-columns@1.2.4: {} @@ -10877,6 +11179,8 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 + load-tsconfig@0.2.5: {} + loader-utils@3.3.1: {} locate-path@5.0.0: @@ -10929,6 +11233,8 @@ snapshots: dependencies: tslib: 2.8.1 + lru-cache@10.4.3: {} + lru-cache@11.1.0: {} lru-cache@5.1.1: @@ -11187,6 +11493,12 @@ snapshots: mute-stream@0.0.8: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nan@2.22.2: optional: true @@ -11450,6 +11762,11 @@ snapshots: dependencies: path-root-regex: 0.1.2 + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-scurry@2.0.0: dependencies: lru-cache: 11.1.0 @@ -11527,6 +11844,14 @@ snapshots: postcss: 8.5.3 ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + postcss-merge-longhand@5.1.7(postcss@8.5.3): dependencies: postcss: 8.5.3 @@ -11694,10 +12019,6 @@ snapshots: preserve@0.2.0: {} - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - prettier@2.8.8: {} prettier@3.5.3: {} @@ -11824,6 +12145,10 @@ snapshots: transitivePeerDependencies: - supports-color + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -11961,10 +12286,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 @@ -12024,6 +12345,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rollup@4.41.1: + dependencies: + '@types/estree': 1.0.7 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.41.1 + '@rollup/rollup-android-arm64': 4.41.1 + '@rollup/rollup-darwin-arm64': 4.41.1 + '@rollup/rollup-darwin-x64': 4.41.1 + '@rollup/rollup-freebsd-arm64': 4.41.1 + '@rollup/rollup-freebsd-x64': 4.41.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.41.1 + '@rollup/rollup-linux-arm-musleabihf': 4.41.1 + '@rollup/rollup-linux-arm64-gnu': 4.41.1 + '@rollup/rollup-linux-arm64-musl': 4.41.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.41.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-gnu': 4.41.1 + '@rollup/rollup-linux-riscv64-musl': 4.41.1 + '@rollup/rollup-linux-s390x-gnu': 4.41.1 + '@rollup/rollup-linux-x64-gnu': 4.41.1 + '@rollup/rollup-linux-x64-musl': 4.41.1 + '@rollup/rollup-win32-arm64-msvc': 4.41.1 + '@rollup/rollup-win32-ia32-msvc': 4.41.1 + '@rollup/rollup-win32-x64-msvc': 4.41.1 + fsevents: 2.3.3 + run-async@2.4.1: {} run-parallel@1.2.0: @@ -12236,6 +12583,10 @@ snapshots: source-map@0.7.4: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + sourcemap-codec@1.4.8: {} sparse-array@1.3.2: {} @@ -12401,6 +12752,16 @@ snapshots: dependencies: minimist: 1.2.8 + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.8 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + ts-interface-checker: 0.1.13 + supports-color@2.0.0: {} supports-color@5.5.0: @@ -12437,10 +12798,6 @@ snapshots: timeout-signal: 2.0.0 whatwg-mimetype: 4.0.0 - synckit@0.11.6: - dependencies: - '@pkgr/core': 0.2.4 - table-layout@1.0.2: dependencies: array-back: 4.0.2 @@ -12461,7 +12818,13 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - text-table@0.2.0: {} + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 through@2.3.8: {} @@ -12509,6 +12872,12 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + trim-newlines@3.0.1: {} ts-api-utils@2.1.0(typescript@5.8.3): @@ -12526,6 +12895,8 @@ snapshots: dependencies: typescript: 5.8.3 + ts-interface-checker@0.1.13: {} + ts-json-schema-generator@2.4.0: dependencies: '@types/json-schema': 7.0.15 @@ -12573,6 +12944,29 @@ snapshots: tslib@2.8.1: {} + tsup@7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))(typescript@5.8.3): + dependencies: + bundle-require: 4.2.1(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.4.1 + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + resolve-from: 5.0.0 + rollup: 4.41.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.3 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + - ts-node + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -12614,8 +13008,6 @@ snapshots: type-fest@0.18.1: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@0.6.0: {} @@ -12671,16 +13063,6 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.32.1(eslint@8.57.1)(typescript@5.8.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@8.57.1)(typescript@5.8.3))(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/parser': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - '@typescript-eslint/utils': 8.32.1(eslint@8.57.1)(typescript@5.8.3) - eslint: 8.57.1 - typescript: 5.8.3 - transitivePeerDependencies: - - supports-color - typescript-eslint@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3): dependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) @@ -12819,6 +13201,8 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + whatwg-mimetype@4.0.0: {} whatwg-url@5.0.0: @@ -12826,6 +13210,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: dependencies: is-bigint: 1.1.0 From 70ef622eac14cb38837144ab15418eff27d8cba7 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Tue, 27 May 2025 16:27:08 -0300 Subject: [PATCH 07/33] feat: copy entire src, tests folders, and package/tsconfig files from app-data project into the monorepo --- packages/app-data/package.json | 94 ++ packages/app-data/setupTests.js | 8 + .../app-data/src/api/appDataHexToCid.spec.ts | 34 + packages/app-data/src/api/appDataHexToCid.ts | 96 ++ .../app-data/src/api/cidToAppDataHex.test.ts | 39 + packages/app-data/src/api/cidToAppDataHex.ts | 11 + .../src/api/fetchDocFromAppData.spec.ts | 42 + .../app-data/src/api/fetchDocFromAppData.ts | 53 + .../app-data/src/api/fetchDocFromCid.spec.ts | 20 + packages/app-data/src/api/fetchDocFromCid.ts | 16 + .../src/api/generateAppDataDoc.spec.ts | 48 + .../app-data/src/api/generateAppDataDoc.ts | 38 + .../app-data/src/api/getAppDataInfo.spec.ts | 95 ++ packages/app-data/src/api/getAppDataInfo.ts | 128 ++ .../app-data/src/api/getAppDataSchema.spec.ts | 55 + packages/app-data/src/api/getAppDataSchema.ts | 19 + packages/app-data/src/api/index.ts | 36 + .../api/uploadMetadataDocToIpfsLegacy.spec.ts | 82 ++ .../src/api/uploadMetadataDocToIpfsLegacy.ts | 74 ++ .../src/api/validateAppDataDoc.spec.ts | 71 + .../app-data/src/api/validateAppDataDoc.ts | 63 + packages/app-data/src/consts.ts | 4 + packages/app-data/src/exports.ts | 3 + packages/app-data/src/generatedTypes/index.ts | 69 + .../app-data/src/generatedTypes/latest.ts | 3 + .../app-data/src/generatedTypes/v0.1.0.ts | 42 + .../app-data/src/generatedTypes/v0.10.0.ts | 126 ++ .../app-data/src/generatedTypes/v0.11.0.ts | 139 ++ .../app-data/src/generatedTypes/v0.2.0.ts | 57 + .../app-data/src/generatedTypes/v0.3.0.ts | 62 + .../app-data/src/generatedTypes/v0.4.0.ts | 61 + .../app-data/src/generatedTypes/v0.5.0.ts | 75 ++ .../app-data/src/generatedTypes/v0.6.0.ts | 104 ++ .../app-data/src/generatedTypes/v0.7.0.ts | 104 ++ .../app-data/src/generatedTypes/v0.8.0.ts | 83 ++ .../app-data/src/generatedTypes/v0.9.0.ts | 121 ++ .../app-data/src/generatedTypes/v1.0.0.ts | 152 +++ .../app-data/src/generatedTypes/v1.1.0.ts | 160 +++ .../app-data/src/generatedTypes/v1.2.0.ts | 165 +++ .../app-data/src/generatedTypes/v1.3.0.ts | 170 +++ .../app-data/src/generatedTypes/v1.4.0.ts | 211 +++ packages/app-data/src/importSchema.ts | 12 + packages/app-data/src/index.ts | 2 + packages/app-data/src/latest.ts | 2 + packages/app-data/src/mocks.ts | 42 + .../app-data/src/schemas/definitions.json | 52 + .../app-data/src/schemas/hook/v0.1.0.json | 35 + .../app-data/src/schemas/hook/v0.2.0.json | 40 + .../app-data/src/schemas/hooks/v0.1.0.json | 35 + .../app-data/src/schemas/hooks/v0.2.0.json | 35 + .../src/schemas/orderClass/v0.1.0.json | 33 + .../src/schemas/orderClass/v0.2.0.json | 35 + .../src/schemas/orderClass/v0.3.0.json | 30 + .../src/schemas/partnerFee/v0.1.0.json | 20 + .../src/schemas/partnerFee/v1.0.0.json | 101 ++ .../app-data/src/schemas/quote/v0.1.0.json | 34 + .../app-data/src/schemas/quote/v0.2.0.json | 22 + .../app-data/src/schemas/quote/v0.3.0.json | 18 + .../app-data/src/schemas/quote/v1.0.0.json | 15 + .../app-data/src/schemas/quote/v1.1.0.json | 23 + .../app-data/src/schemas/referrer/v0.1.0.json | 21 + .../app-data/src/schemas/referrer/v0.2.0.json | 16 + .../src/schemas/replacedOrder/v0.1.0.json | 15 + .../app-data/src/schemas/signer/v0.1.0.json | 7 + packages/app-data/src/schemas/utm/v0.1.0.json | 54 + packages/app-data/src/schemas/utm/v0.2.0.json | 55 + packages/app-data/src/schemas/v0.1.0.json | 40 + packages/app-data/src/schemas/v0.10.0.json | 69 + packages/app-data/src/schemas/v0.11.0.json | 62 + packages/app-data/src/schemas/v0.2.0.json | 43 + packages/app-data/src/schemas/v0.3.0.json | 55 + packages/app-data/src/schemas/v0.4.0.json | 55 + packages/app-data/src/schemas/v0.5.0.json | 58 + packages/app-data/src/schemas/v0.6.0.json | 61 + packages/app-data/src/schemas/v0.7.0.json | 61 + packages/app-data/src/schemas/v0.8.0.json | 63 + packages/app-data/src/schemas/v0.9.0.json | 66 + packages/app-data/src/schemas/v1.0.0.json | 65 + packages/app-data/src/schemas/v1.1.0.json | 68 + packages/app-data/src/schemas/v1.2.0.json | 78 ++ packages/app-data/src/schemas/v1.3.0.json | 78 ++ packages/app-data/src/schemas/v1.4.0.json | 78 ++ .../app-data/src/schemas/widget/v0.1.0.json | 24 + packages/app-data/src/scripts/compile.ts | 136 ++ packages/app-data/src/types.ts | 50 + packages/app-data/src/utils/ipfs.ts | 36 + packages/app-data/src/utils/stringify.ts | 4 + packages/app-data/src/workflows/publish.sh | 44 + packages/app-data/test/schema.spec.ts | 1181 +++++++++++++++++ packages/app-data/tsconfig.json | 15 + 90 files changed, 6277 insertions(+) create mode 100644 packages/app-data/package.json create mode 100644 packages/app-data/setupTests.js create mode 100644 packages/app-data/src/api/appDataHexToCid.spec.ts create mode 100644 packages/app-data/src/api/appDataHexToCid.ts create mode 100644 packages/app-data/src/api/cidToAppDataHex.test.ts create mode 100644 packages/app-data/src/api/cidToAppDataHex.ts create mode 100644 packages/app-data/src/api/fetchDocFromAppData.spec.ts create mode 100644 packages/app-data/src/api/fetchDocFromAppData.ts create mode 100644 packages/app-data/src/api/fetchDocFromCid.spec.ts create mode 100644 packages/app-data/src/api/fetchDocFromCid.ts create mode 100644 packages/app-data/src/api/generateAppDataDoc.spec.ts create mode 100644 packages/app-data/src/api/generateAppDataDoc.ts create mode 100644 packages/app-data/src/api/getAppDataInfo.spec.ts create mode 100644 packages/app-data/src/api/getAppDataInfo.ts create mode 100644 packages/app-data/src/api/getAppDataSchema.spec.ts create mode 100644 packages/app-data/src/api/getAppDataSchema.ts create mode 100644 packages/app-data/src/api/index.ts create mode 100644 packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts create mode 100644 packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts create mode 100644 packages/app-data/src/api/validateAppDataDoc.spec.ts create mode 100644 packages/app-data/src/api/validateAppDataDoc.ts create mode 100644 packages/app-data/src/consts.ts create mode 100644 packages/app-data/src/exports.ts create mode 100644 packages/app-data/src/generatedTypes/index.ts create mode 100644 packages/app-data/src/generatedTypes/latest.ts create mode 100644 packages/app-data/src/generatedTypes/v0.1.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.10.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.11.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.2.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.3.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.4.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.5.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.6.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.7.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.8.0.ts create mode 100644 packages/app-data/src/generatedTypes/v0.9.0.ts create mode 100644 packages/app-data/src/generatedTypes/v1.0.0.ts create mode 100644 packages/app-data/src/generatedTypes/v1.1.0.ts create mode 100644 packages/app-data/src/generatedTypes/v1.2.0.ts create mode 100644 packages/app-data/src/generatedTypes/v1.3.0.ts create mode 100644 packages/app-data/src/generatedTypes/v1.4.0.ts create mode 100644 packages/app-data/src/importSchema.ts create mode 100644 packages/app-data/src/index.ts create mode 100644 packages/app-data/src/latest.ts create mode 100644 packages/app-data/src/mocks.ts create mode 100644 packages/app-data/src/schemas/definitions.json create mode 100644 packages/app-data/src/schemas/hook/v0.1.0.json create mode 100644 packages/app-data/src/schemas/hook/v0.2.0.json create mode 100644 packages/app-data/src/schemas/hooks/v0.1.0.json create mode 100644 packages/app-data/src/schemas/hooks/v0.2.0.json create mode 100644 packages/app-data/src/schemas/orderClass/v0.1.0.json create mode 100644 packages/app-data/src/schemas/orderClass/v0.2.0.json create mode 100644 packages/app-data/src/schemas/orderClass/v0.3.0.json create mode 100644 packages/app-data/src/schemas/partnerFee/v0.1.0.json create mode 100644 packages/app-data/src/schemas/partnerFee/v1.0.0.json create mode 100644 packages/app-data/src/schemas/quote/v0.1.0.json create mode 100644 packages/app-data/src/schemas/quote/v0.2.0.json create mode 100644 packages/app-data/src/schemas/quote/v0.3.0.json create mode 100644 packages/app-data/src/schemas/quote/v1.0.0.json create mode 100644 packages/app-data/src/schemas/quote/v1.1.0.json create mode 100644 packages/app-data/src/schemas/referrer/v0.1.0.json create mode 100644 packages/app-data/src/schemas/referrer/v0.2.0.json create mode 100644 packages/app-data/src/schemas/replacedOrder/v0.1.0.json create mode 100644 packages/app-data/src/schemas/signer/v0.1.0.json create mode 100644 packages/app-data/src/schemas/utm/v0.1.0.json create mode 100644 packages/app-data/src/schemas/utm/v0.2.0.json create mode 100644 packages/app-data/src/schemas/v0.1.0.json create mode 100644 packages/app-data/src/schemas/v0.10.0.json create mode 100644 packages/app-data/src/schemas/v0.11.0.json create mode 100644 packages/app-data/src/schemas/v0.2.0.json create mode 100644 packages/app-data/src/schemas/v0.3.0.json create mode 100644 packages/app-data/src/schemas/v0.4.0.json create mode 100644 packages/app-data/src/schemas/v0.5.0.json create mode 100644 packages/app-data/src/schemas/v0.6.0.json create mode 100644 packages/app-data/src/schemas/v0.7.0.json create mode 100644 packages/app-data/src/schemas/v0.8.0.json create mode 100644 packages/app-data/src/schemas/v0.9.0.json create mode 100644 packages/app-data/src/schemas/v1.0.0.json create mode 100644 packages/app-data/src/schemas/v1.1.0.json create mode 100644 packages/app-data/src/schemas/v1.2.0.json create mode 100644 packages/app-data/src/schemas/v1.3.0.json create mode 100644 packages/app-data/src/schemas/v1.4.0.json create mode 100644 packages/app-data/src/schemas/widget/v0.1.0.json create mode 100644 packages/app-data/src/scripts/compile.ts create mode 100644 packages/app-data/src/types.ts create mode 100644 packages/app-data/src/utils/ipfs.ts create mode 100644 packages/app-data/src/utils/stringify.ts create mode 100755 packages/app-data/src/workflows/publish.sh create mode 100644 packages/app-data/test/schema.spec.ts create mode 100644 packages/app-data/tsconfig.json diff --git a/packages/app-data/package.json b/packages/app-data/package.json new file mode 100644 index 000000000..75a1c42c2 --- /dev/null +++ b/packages/app-data/package.json @@ -0,0 +1,94 @@ +{ + "name": "@cowprotocol/app-data", + "version": "3.1.0", + "description": "CoW Protocol AppData schema definitions", + "type": "module", + "source": "src/index.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "import": "./dist/index.module.mjs", + "default": "./dist/index.modern.mjs" + } + }, + "main": "./dist/index.cjs", + "module": "./dist/index.module.js", + "unpkg": "./dist/index.umd.js", + "types": "dist/index.d.ts", + "files": [ + "/dist", + "/schemas" + ], + "scripts": { + "clean": "rm -rf dist/* && rm -rf src/generatedTypes/* && rm -rf schemas/", + "compile": "node --loader ts-node/esm src/scripts/compile.ts --experimental-specifier-resolution=node", + "build": "yarn clean && yarn compile && microbundle -f modern,esm,cjs", + "test": "jest", + "prepare": "yarn build && yarn test" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/cowprotocol/app-data.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/cowprotocol/app-data/issues" + }, + "homepage": "https://github.com/cowprotocol/app-data#readme", + "devDependencies": { + "ethers": "^5.0.26", + "@babel/core": "^7.18.9", + "@babel/preset-env": "^7.18.9", + "@babel/preset-typescript": "^7.18.6", + "@types/jest": "^29.4.0", + "@types/semver-sort": "^0.0.1", + "babel-jest": "^28.1.3", + "jest": "^29.4.2", + "jest-fetch-mock": "^3.0.3", + "json-schema-ref-parser": "^9.0.9", + "json-schema-to-typescript": "^10.1.5", + "microbundle": "^0.15.1", + "prettier": "^2.7.1", + "semver-sort": "^1.0.0", + "ts-node": "^10.8.2", + "typescript": "^4.9.5" + }, + "dependencies": { + "ajv": "^8.11.0", + "cross-fetch": "^3.1.5", + "ipfs-only-hash": "^4.0.0", + "json-stringify-deterministic": "^1.0.8", + "multiformats": "^9.6.4" + }, + "peerDependencies": { + "cross-fetch": "^3.x", + "ethers": "^5.0.0", + "ipfs-only-hash": "^4.x", + "multiformats": "^9.x" + }, + "jest": { + "automock": false, + "resetMocks": false, + "setupFiles": [ + "/setupTests.js" + ], + "collectCoverageFrom": [ + "src/**/*.{ts,tsx}", + "test/*.{ts,tsx}" + ] + }, + "babel": { + "presets": [ + [ + "@babel/preset-env", + { + "targets": { + "node": "current" + } + } + ], + "@babel/preset-typescript" + ] + } +} \ No newline at end of file diff --git a/packages/app-data/setupTests.js b/packages/app-data/setupTests.js new file mode 100644 index 000000000..2360fc52c --- /dev/null +++ b/packages/app-data/setupTests.js @@ -0,0 +1,8 @@ +import fetchMock from 'jest-fetch-mock' + +global.window = global + +fetchMock.enableMocks() + +jest.setMock('cross-fetch', fetchMock) + diff --git a/packages/app-data/src/api/appDataHexToCid.spec.ts b/packages/app-data/src/api/appDataHexToCid.spec.ts new file mode 100644 index 000000000..471988926 --- /dev/null +++ b/packages/app-data/src/api/appDataHexToCid.spec.ts @@ -0,0 +1,34 @@ +import { APP_DATA_HEX, APP_DATA_HEX_LEGACY, CID, CID_LEGACY } from '../mocks' +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' + +describe('appDataHexToCid', () => { + test('Happy path', async () => { + // when + const decodedAppDataHex = await appDataHexToCid(APP_DATA_HEX) + // then + expect(decodedAppDataHex).toEqual(CID) + }) + + test('Throws with wrong hash format ', async () => { + // when + const promise = appDataHexToCid('invalidHash') + // then + await expect(promise).rejects.toThrow() + }) +}) + +describe('appDataHexToCidLegacy', () => { + test('Happy path', async () => { + // when + const decodedAppDataHex = await appDataHexToCidLegacy(APP_DATA_HEX_LEGACY) + // then + expect(decodedAppDataHex).toEqual(CID_LEGACY) + }) + + test('Throws with wrong hash format ', async () => { + // when + const promise = appDataHexToCidLegacy('invalidHash') + // then + await expect(promise).rejects.toThrow() + }) +}) diff --git a/packages/app-data/src/api/appDataHexToCid.ts b/packages/app-data/src/api/appDataHexToCid.ts new file mode 100644 index 000000000..92478db66 --- /dev/null +++ b/packages/app-data/src/api/appDataHexToCid.ts @@ -0,0 +1,96 @@ +import { MetaDataError } from '../consts' + +/** + * Convert an app-data hex string to a CID + * + * @param appDataHex - The app-data hex string (app-data part of the order struct) + * @returns The IPFS CID v1 of the content + */ +export async function appDataHexToCid(appDataHex: string): Promise { + const cid = await _appDataHexToCid(appDataHex) + _assertCid(cid, appDataHex) + + return cid +} + +/** + * Convert an app-data hex string to a CID using the legacy method (IPFS CID has different hashing algorithm, this hashing algorithm is not used anymore by CoW Protocol) + * + * @deprecated Please use appDataHexToCid instead + * + * @param appDataHex + * @returns + */ +export async function appDataHexToCidLegacy(appDataHex: string): Promise { + const cid = await _appDataHexToCidLegacy(appDataHex) + _assertCid(cid, appDataHex) + + return cid +} + +export async function _assertCid(cid: string, appDataHex: string) { + if (!cid) throw new MetaDataError('Error getting CID from appDataHex: ' + appDataHex) +} + +/** + * Derive the IPFS CID v1 from the appData hex + * + * For reference see https://github.com/cowprotocol/services/issues/1465 and https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs + * + * @param appDataHex hex with tha appData hash + * @returns the IPFS CID v0 of the content + */ +async function _appDataHexToCid(appDataHex: string): Promise { + const cidBytes = await _toCidBytes({ + version: 0x01, // CIDv1 + multicodec: 0x55, // Raw codec + hashingAlgorithm: 0x1b, // keccak hash algorithm + hashingLength: 32, // keccak hash length (0x20 = 32) + multihashHex: appDataHex, // 32 bytes of the keccak256 hash + }) + + // Encode to base16 + const { base16 } = await import('multiformats/bases/base16') + return base16.encode(cidBytes) +} + +async function _appDataHexToCidLegacy(appDataHex: string): Promise { + const cidBytes = await _toCidBytes({ + version: 0x01, // CIDv1 + multicodec: 0x70, // dag-pb + hashingAlgorithm: 0x12, // sha2-256 hash algorithm + hashingLength: 32, // SHA-256 length (0x20 = 32) + multihashHex: appDataHex, // 32 bytes of the sha2-256 hash + }) + + const { CID } = await import('multiformats/cid') + return CID.decode(cidBytes).toV0().toString() +} + +interface ToCidParmams { + version: number + multicodec: number + hashingAlgorithm: number + hashingLength: number + multihashHex: string +} + +async function _toCidBytes({ + version, + multicodec, + hashingAlgorithm, + hashingLength, + multihashHex, +}: ToCidParmams): Promise { + const module = await import('ethers/lib/utils') + const { arrayify } = module.default || module + const hashBytes = arrayify(multihashHex) + + // Concat prefix and multihash + const cidPrefix = Uint8Array.from([version, multicodec, hashingAlgorithm, hashingLength]) + var cidBytes = new Uint8Array(cidPrefix.length + hashBytes.length) + cidBytes.set(cidPrefix) + cidBytes.set(hashBytes, cidPrefix.length) + + return cidBytes +} diff --git a/packages/app-data/src/api/cidToAppDataHex.test.ts b/packages/app-data/src/api/cidToAppDataHex.test.ts new file mode 100644 index 000000000..7a1bed08e --- /dev/null +++ b/packages/app-data/src/api/cidToAppDataHex.test.ts @@ -0,0 +1,39 @@ +import fetchMock from 'jest-fetch-mock' +import { APP_DATA_HEX, APP_DATA_HEX_2, CID, CID_2 } from '../mocks' +import { cidToAppDataHex } from './cidToAppDataHex' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('cidToAppDataHex', () => { + test('Happy path', async () => { + // when + const result = await cidToAppDataHex(CID) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual(APP_DATA_HEX) + }) + + test('Happy path 2', async () => { + // when + const result = await cidToAppDataHex(CID_2) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual(APP_DATA_HEX_2) + }) + + test('Malformed CID', async () => { + // when + const promise = cidToAppDataHex('invalidCid') + + // then + expect(promise).rejects.toThrow() + }) +}) diff --git a/packages/app-data/src/api/cidToAppDataHex.ts b/packages/app-data/src/api/cidToAppDataHex.ts new file mode 100644 index 000000000..2be04982f --- /dev/null +++ b/packages/app-data/src/api/cidToAppDataHex.ts @@ -0,0 +1,11 @@ +import { extractDigest } from '../utils/ipfs' + +/** + * Convert a CID to an app-data hex string + * + * @param cid - The IPFS CID to extract the app-data hex from. + * @returns The app-data hex string (app-data part of the order struct) + */ +export async function cidToAppDataHex(cid: string): Promise { + return extractDigest(cid) +} diff --git a/packages/app-data/src/api/fetchDocFromAppData.spec.ts b/packages/app-data/src/api/fetchDocFromAppData.spec.ts new file mode 100644 index 000000000..f6e5f6977 --- /dev/null +++ b/packages/app-data/src/api/fetchDocFromAppData.spec.ts @@ -0,0 +1,42 @@ +import { DEFAULT_IPFS_READ_URI } from '../consts' +import { + APP_DATA_DOC_CUSTOM, + APP_DATA_HEX_LEGACY, + CID_LEGACY, + HTTP_STATUS_INTERNAL_ERROR, + HTTP_STATUS_OK, +} from '../mocks' + +import { fetchDocFromAppDataHex, fetchDocFromAppDataHexLegacy } from './fetchDocFromAppData' + +// beforeEach(() => { +// fetchMock.resetMocks() +// }) + +// afterEach(() => { +// jest.restoreAllMocks() +// }) + +describe('fetchDocFromAppData', () => { + test('Decodes appData', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify(APP_DATA_DOC_CUSTOM), { status: HTTP_STATUS_OK }) + + // when + const appDataDoc = await fetchDocFromAppDataHexLegacy(APP_DATA_HEX_LEGACY) + + // then + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(`${DEFAULT_IPFS_READ_URI}/${CID_LEGACY}`) + expect(appDataDoc).toEqual(APP_DATA_DOC_CUSTOM) + }) + + test('Throws with wrong hash format', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({}), { status: HTTP_STATUS_INTERNAL_ERROR }) + // when + const promise = fetchDocFromAppDataHex('invalidHash') + // then + await expect(promise).rejects.toThrow(/Error decoding AppData:/) + }) +}) diff --git a/packages/app-data/src/api/fetchDocFromAppData.ts b/packages/app-data/src/api/fetchDocFromAppData.ts new file mode 100644 index 000000000..7dc2759c9 --- /dev/null +++ b/packages/app-data/src/api/fetchDocFromAppData.ts @@ -0,0 +1,53 @@ +import { MetaDataError } from '../consts' +import { AnyAppDataDocVersion } from '../generatedTypes' +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' +import { fetchDocFromCid } from './fetchDocFromCid' + +/** + * Fetches the document from IPFS using the appData hex (app-data part of the order struct). + * + * This method will convert the app-data hex into a CID and fetch the content from IPFS. + * + * @param appDataHex App-data hex part of the order struct + * @param ipfsUri URL of the IPFS gateway to use for the fetch + * + * @returns a parsed AppData document + */ +export async function fetchDocFromAppDataHex( + appDataHex: string, + ipfsUri?: string +): Promise { + return _fetchDocFromCidAux(appDataHexToCid, appDataHex, ipfsUri) +} + +/** + * Fetches the document from IPFS using the appData hex + * + * @deprecated Uses the legacy method of deriving the CID from the appData hex + * + * @param appDataHex + * @param ipfsUri + * @returns + */ +export async function fetchDocFromAppDataHexLegacy( + appDataHex: string, + ipfsUri?: string +): Promise { + return _fetchDocFromCidAux(appDataHexToCidLegacy, appDataHex, ipfsUri) +} + +export async function _fetchDocFromCidAux( + hexToCid: (appDataHex: string) => Promise, + appDataHex: string, + ipfsUri?: string +): Promise { + try { + const cid = await hexToCid(appDataHex) + if (!cid) throw new MetaDataError('Error getting serialized CID') + return fetchDocFromCid(cid, ipfsUri) + } catch (e) { + const error = e as MetaDataError + // console.error(`Error fetching the IPFS document: appDataHex=${appDataHex}`, error) + throw new MetaDataError(`Error decoding AppData: appDataHex=${appDataHex}, message=${error.message}`) + } +} diff --git a/packages/app-data/src/api/fetchDocFromCid.spec.ts b/packages/app-data/src/api/fetchDocFromCid.spec.ts new file mode 100644 index 000000000..f1e74289c --- /dev/null +++ b/packages/app-data/src/api/fetchDocFromCid.spec.ts @@ -0,0 +1,20 @@ +import { DEFAULT_IPFS_READ_URI } from '../consts' +import { fetchDocFromCid } from './fetchDocFromCid' + +describe('fetchDocFromCid', () => { + test('Valid IPFS appData from CID', async () => { + // given + const validSerializedCid = 'QmZZhNnqMF1gRywNKnTPuZksX7rVjQgTT3TJAZ7R6VE3b2' + const expected = + '{"appCode":"CowSwap","metadata":{"referrer":{"address":"0x1f5B740436Fc5935622e92aa3b46818906F416E9","version":"0.1.0"}},"version":"0.1.0"}' + fetchMock.mockResponseOnce(expected) + + // when + const appDataDocument = await fetchDocFromCid(validSerializedCid) + + // then + expect(appDataDocument).toEqual(JSON.parse(expected)) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(`${DEFAULT_IPFS_READ_URI}/${validSerializedCid}`) + }) +}) diff --git a/packages/app-data/src/api/fetchDocFromCid.ts b/packages/app-data/src/api/fetchDocFromCid.ts new file mode 100644 index 000000000..0c9f85561 --- /dev/null +++ b/packages/app-data/src/api/fetchDocFromCid.ts @@ -0,0 +1,16 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' +import { DEFAULT_IPFS_READ_URI } from '../consts' + +/** + * Fetches the document from IPFS using the CID + * + * @param cid + * @param ipfsUri + * @returns + */ +export async function fetchDocFromCid(cid: string, ipfsUri = DEFAULT_IPFS_READ_URI): Promise { + const { default: fetch } = await import('cross-fetch') + const response = await fetch(`${ipfsUri}/${cid}`) + + return await response.json() +} diff --git a/packages/app-data/src/api/generateAppDataDoc.spec.ts b/packages/app-data/src/api/generateAppDataDoc.spec.ts new file mode 100644 index 000000000..f3e7538f3 --- /dev/null +++ b/packages/app-data/src/api/generateAppDataDoc.spec.ts @@ -0,0 +1,48 @@ +import fetchMock from 'jest-fetch-mock' +import { APP_DATA_DOC_CUSTOM } from '../mocks' +import { generateAppDataDoc } from './generateAppDataDoc' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('generateAppDataDoc', () => { + test('Creates appDataDoc with empty metadata ', async () => { + // when + const appDataDoc = await generateAppDataDoc({}) + + const { metadata, version, appCode, environment } = appDataDoc + + // then + expect(version).toBeTruthy() + expect(metadata).toEqual({}) + expect(appCode).toEqual(APP_DATA_DOC_CUSTOM.appCode) + expect(environment).toBeUndefined() + }) + + test('Creates appDataDoc with custom metadata ', async () => { + // given + const { referrer, quote } = APP_DATA_DOC_CUSTOM.metadata + const params = { + environment: APP_DATA_DOC_CUSTOM.environment, + metadata: { + referrer, + quote, + }, + } + // when + const appDataDoc = await generateAppDataDoc(params) + + // then + expect(appDataDoc).toBeTruthy() + const { metadata, version, appCode, environment } = appDataDoc + expect(version).toBeTruthy() + expect(metadata).toEqual(APP_DATA_DOC_CUSTOM.metadata) + expect(appCode).toEqual(APP_DATA_DOC_CUSTOM.appCode) + expect(environment).toEqual(APP_DATA_DOC_CUSTOM.environment) + }) +}) diff --git a/packages/app-data/src/api/generateAppDataDoc.ts b/packages/app-data/src/api/generateAppDataDoc.ts new file mode 100644 index 000000000..d4feb5169 --- /dev/null +++ b/packages/app-data/src/api/generateAppDataDoc.ts @@ -0,0 +1,38 @@ +import { LATEST_APP_DATA_VERSION, LatestAppDataDocVersion } from '../generatedTypes' +import { AppDataParams } from '../types' + +const DEFAULT_APP_CODE = 'CoW Swap' +const DEFAULT_APP_DATA_DOC = { + appCode: DEFAULT_APP_CODE, + metadata: {}, + version: LATEST_APP_DATA_VERSION, +} + +/** + * Creates an appData document using the latest specification of the format + * + * Without params creates a default minimum appData doc + * Optionally creates metadata docs + * + * Example of result: + * { + * "appCode": "CoW Swap", + * "environment": "local", + * "metadata": { + * "quote": { + * "slippageBips": 50 + * }, + * "orderClass": { + * "orderClass": "market" + * } + * }, + * "version": "1.2.0" + * } + */ +export async function generateAppDataDoc(params?: AppDataParams): Promise { + return { + ...DEFAULT_APP_DATA_DOC, + ...params, + version: LATEST_APP_DATA_VERSION, + } +} diff --git a/packages/app-data/src/api/getAppDataInfo.spec.ts b/packages/app-data/src/api/getAppDataInfo.spec.ts new file mode 100644 index 000000000..438d17e60 --- /dev/null +++ b/packages/app-data/src/api/getAppDataInfo.spec.ts @@ -0,0 +1,95 @@ +import fetchMock from 'jest-fetch-mock' +import { + APP_DATA_DOC, + APP_DATA_HEX, + APP_DATA_HEX_2, + APP_DATA_HEX_LEGACY, + APP_DATA_STRING, + APP_DATA_STRING_2, + CID, + CID_2, + CID_LEGACY, +} from '../mocks' +import { getAppDataInfo, getAppDataInfoLegacy } from './getAppDataInfo' +import { stringifyDeterministic } from '..' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('getAppDataInfo', () => { + test('Happy path with fullAppData string', async () => { + // when + const result = await getAppDataInfo(APP_DATA_STRING) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ cid: CID, appDataHex: APP_DATA_HEX, appDataContent: APP_DATA_STRING }) + }) + + test('Happy path with appData doc', async () => { + // when + const result = await getAppDataInfo(APP_DATA_DOC) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ + cid: CID, + appDataHex: APP_DATA_HEX, + appDataContent: await stringifyDeterministic(APP_DATA_DOC), + }) + }) + + test('Happy path with appData doc 2 ', async () => { + // when + const result = await getAppDataInfo(APP_DATA_STRING_2) + + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ cid: CID_2, appDataHex: APP_DATA_HEX_2, appDataContent: APP_DATA_STRING_2 }) + }) + + test('Throws with invalid appDoc', async () => { + // given + const doc = { + ...APP_DATA_DOC, + metadata: { quote: { sellAmount: 'fsdfas', buyAmount: '41231', version: '0.1.0' } }, + } + + // when + const promise = getAppDataInfo(doc) + + // then + await expect(promise).rejects.toThrow('Invalid appData provided') + }) +}) + +describe('getAppDataInfoLegacy', () => { + test('Happy path', async () => { + // when + const result = await getAppDataInfoLegacy(APP_DATA_DOC) + // then + expect(result).not.toBeFalsy() + expect(result).toEqual({ + cid: CID_LEGACY, + appDataHex: APP_DATA_HEX_LEGACY, + appDataContent: JSON.stringify(APP_DATA_DOC), // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + }) + }) + + test('Throws with invalid appDoc', async () => { + // given + const doc = { + ...APP_DATA_DOC, + metadata: { quote: { sellAmount: 'fsdfas', buyAmount: '41231', version: '0.1.0' } }, + } + // when + const promise = getAppDataInfoLegacy(doc) + // then + await expect(promise).rejects.toThrow('Invalid appData provided') + }) +}) diff --git a/packages/app-data/src/api/getAppDataInfo.ts b/packages/app-data/src/api/getAppDataInfo.ts new file mode 100644 index 000000000..b78773061 --- /dev/null +++ b/packages/app-data/src/api/getAppDataInfo.ts @@ -0,0 +1,128 @@ +import { MetaDataError } from '../consts' +import { AnyAppDataDocVersion } from '../generatedTypes' +import { AppDataInfo } from '../types' +import { extractDigest } from '../utils/ipfs' +import { stringifyDeterministic } from '../utils/stringify' +import { appDataHexToCid } from './appDataHexToCid' +import { validateAppDataDoc } from './validateAppDataDoc' + +/** + * Calculate the app-data information (cid, appDataHex, appDataContent). + * + * - appDataContent is the exact string with the pre-image that gets hashed using keccak to get the appDataHex + * - appDataHex is the hex used for the bytes32 struct field appData in the CoW order + * - cid is the IPFS identifier of the appDataHex. If the document is in IPFS it can be found using this identifier. + */ +export async function getAppDataInfo(appData: AnyAppDataDocVersion): Promise + +/** + * Calculate the app-data information (cid, appDataHex, appDataContent). + * + * - appDataContent is the exact string with the pre-image that gets hashed using keccak to get the appDataHex + * - appDataHex is the hex used for the bytes32 struct field appData in the CoW order + * - cid is the IPFS identifier of the appDataHex. If the document is in IPFS it can be found using this identifier. + */ +export async function getAppDataInfo(fullAppData: string): Promise + +/** + * Calculate the app-data information (cid, appDataHex, appDataContent). + * + * - appDataContent is the exact string with the pre-image that gets hashed using keccak to get the appDataHex + * - appDataHex is the hex used for the bytes32 struct field appData in the CoW order + * - cid is the IPFS identifier of the appDataHex. If the document is in IPFS it can be found using this identifier. + */ +export async function getAppDataInfo(appDataAux: AnyAppDataDocVersion | string): Promise { + return _appDataToCidAux(appDataAux, _appDataToCid) +} + +/** + * Gets the appDataInfo using the legacy method (IPFS CID has different hashing algorithm, this hashing algorithm is not used anymore by CoW Protocol) + * + * + * @deprecated Please use getAppDataInfo instead + * + * @param appData JSON document which will be stringified in a deterministic way to calculate the IPFS hash + */ +export async function getAppDataInfoLegacy(appData: AnyAppDataDocVersion): Promise + +/** + * Calculates appDataHex without publishing file to IPFS + * + * This method is intended to quickly generate the appDataHex independent + * of IPFS upload/pinning + * + * @deprecated Please use getAppDataInfo instead + * + * @param fullAppData JSON string with the full appData document + */ +export async function getAppDataInfoLegacy(fullAppData: string): Promise + +/** + * Gets the appDataInfo using the legacy method (IPFS CID has different hashing algorithm, this hashing algorithm is not used anymore by CoW Protocol) + * + * @deprecated @deprecated Please use getAppDataInfo instead + * + * @param appDataAux + * @returns + */ +export async function getAppDataInfoLegacy( + appDataAux: AnyAppDataDocVersion | string +): Promise { + // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + const fullAppData = JSON.stringify(appDataAux) + return _appDataToCidAux(fullAppData, _appDataToCidLegacy) +} + +export async function _appDataToCidAux( + appDataAux: AnyAppDataDocVersion | string, + deriveCid: (fullAppData: string) => Promise +): Promise { + const [appDataDoc, fullAppData] = + typeof appDataAux === 'string' + ? [JSON.parse(appDataAux), appDataAux] + : [appDataAux, await stringifyDeterministic(appDataAux)] + + const validation = await validateAppDataDoc(appDataDoc) + + if (!validation?.success) { + throw new MetaDataError(`Invalid appData provided: ${validation?.errors}`) + } + + try { + const cid = await deriveCid(fullAppData) + const appDataHex = await extractDigest(cid) + + if (!appDataHex) { + throw new MetaDataError(`Could not extract appDataHex from calculated cid ${cid}`) + } + + return { cid, appDataHex, appDataContent: fullAppData } + } catch (e) { + const error = e as MetaDataError + console.error('Failed to calculate appDataHex', error) + throw new MetaDataError(`Failed to calculate appDataHex: ${error.message}`) + } +} + +/** + * Derive the IPFS CID v0 from the full appData JSON content + * + * @param fullAppData string with the full AppData in JSON format. It is a string to make the hashing deterministic (do not rely on stringification of objects) + * @returns the IPFS CID v0 of the content + */ +async function _appDataToCid(fullAppDataJson: string): Promise { + const module = await import('ethers/lib/utils') + const { keccak256, toUtf8Bytes } = module.default || module + + const appDataHex = await keccak256(toUtf8Bytes(fullAppDataJson)) + return appDataHexToCid(appDataHex) +} + +export async function _appDataToCidLegacy(doc: AnyAppDataDocVersion | string): Promise { + const fullAppData = typeof doc === 'string' ? doc : stringifyDeterministic(doc) + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + const { of } = await import('ipfs-only-hash') + return of(fullAppData, { cidVersion: 0 }) +} diff --git a/packages/app-data/src/api/getAppDataSchema.spec.ts b/packages/app-data/src/api/getAppDataSchema.spec.ts new file mode 100644 index 000000000..c43bbed3d --- /dev/null +++ b/packages/app-data/src/api/getAppDataSchema.spec.ts @@ -0,0 +1,55 @@ +import { getAppDataSchema } from './getAppDataSchema' + +describe('getAppDataSchema', () => { + test('Returns existing schema', async () => { + // given + const version = '0.4.0' + // when + const schema = await getAppDataSchema(version) + // then + // @ts-ignore + expect(schema.$id).toMatch(version) + }) + + test('Throws on invalid schema', async () => { + // given + const version = '0.0.0' + // when + const promise = getAppDataSchema(version) + // then + await expect(promise).rejects.toThrow(`AppData version ${version} doesn't exist`) + }) + + test('Non-existent version throws', async () => { + // given + const version = '0.0.0' + // when + const schemaPromise = getAppDataSchema(version) + // then + await expect(schemaPromise).rejects.toThrow(`AppData version ${version} doesn't exist`) + }) + + test('Non-semver version throws', async () => { + // given + const version = 'not semver' + // when + const schemaPromise = getAppDataSchema(version) + // then + await expect(schemaPromise).rejects.toThrow(`AppData version ${version} is not a valid version`) + }) + + test('Version 0.1.0', _buildAssertVersionFn('0.1.0')) + test('Version 0.2.0', _buildAssertVersionFn('0.2.0')) + test('Version 0.3.0', _buildAssertVersionFn('0.3.0')) + test('Version 0.4.0', _buildAssertVersionFn('0.4.0')) +}) + +function _buildAssertVersionFn(version: string) { + return async () => { + // when + const schema = await getAppDataSchema(version) + // then + // @ts-ignore + expect(schema.$id).toMatch(version) + } +} diff --git a/packages/app-data/src/api/getAppDataSchema.ts b/packages/app-data/src/api/getAppDataSchema.ts new file mode 100644 index 000000000..abd758264 --- /dev/null +++ b/packages/app-data/src/api/getAppDataSchema.ts @@ -0,0 +1,19 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' +import { MetaDataError } from '../consts' +import { importSchema } from '../importSchema' + +/** + * Wrapper around @cowprotocol/app-data getAppDataSchema + * + * Returns the appData schema for given version, if any + * Throws CowError when version doesn't exist + */ +export async function getAppDataSchema(version: string): Promise { + try { + return await importSchema(version) + } catch (e) { + // Wrapping @cowprotocol/app-data Error into CowError + const error = e as Error + throw new MetaDataError(error.message) + } +} diff --git a/packages/app-data/src/api/index.ts b/packages/app-data/src/api/index.ts new file mode 100644 index 000000000..295429ba5 --- /dev/null +++ b/packages/app-data/src/api/index.ts @@ -0,0 +1,36 @@ +import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' +import { getAppDataInfo, getAppDataInfoLegacy } from './getAppDataInfo' +import { cidToAppDataHex } from './cidToAppDataHex' +import { fetchDocFromAppDataHex, fetchDocFromAppDataHexLegacy } from './fetchDocFromAppData' +import { fetchDocFromCid } from './fetchDocFromCid' + +import { generateAppDataDoc } from './generateAppDataDoc' +import { getAppDataSchema } from './getAppDataSchema' +import { uploadMetadataDocToIpfsLegacy } from './uploadMetadataDocToIpfsLegacy' +import { validateAppDataDoc } from './validateAppDataDoc' + +export class MetadataApi { + // Schema & Doc generation/validation + getAppDataSchema = getAppDataSchema + generateAppDataDoc = generateAppDataDoc + validateAppDataDoc = validateAppDataDoc + + // appData / CID conversion + getAppDataInfo = getAppDataInfo // (appData | fullAppData) --> { cid, appDataHex, appDataContent } + appDataHexToCid = appDataHexToCid // appDataHex --> cid + cidToAppDataHex = cidToAppDataHex // cid --> appDataHex + + // Fetch from IPFS + fetchDocFromAppDataHex = fetchDocFromAppDataHex // appDataHex --> appData + + legacy = { + // Fetch appData document from IPFS (deprecated) + fetchDocFromCid: fetchDocFromCid, // cid --> document + + // Upload to IPFS (deprecated) + uploadMetadataDocToIpfs: uploadMetadataDocToIpfsLegacy, // appData --> cid + publish IPFS + appDataToCid: getAppDataInfoLegacy, // (appData | fullAppData) --> cid + appDataHexToCid: appDataHexToCidLegacy, // appDataHex --> cid + fetchDocFromAppDataHex: fetchDocFromAppDataHexLegacy, // appDataHex --> appData + } +} diff --git a/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts b/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts new file mode 100644 index 000000000..905b66cf9 --- /dev/null +++ b/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.spec.ts @@ -0,0 +1,82 @@ +import { DEFAULT_IPFS_WRITE_URI } from '../consts' +import { APP_DATA_DOC_CUSTOM } from '../mocks' +import { generateAppDataDoc } from './generateAppDataDoc' +import { uploadMetadataDocToIpfsLegacy } from './uploadMetadataDocToIpfsLegacy' + +const HTTP_STATUS_OK = 200 +const HTTP_STATUS_INTERNAL_ERROR = 500 + +const IPFS_HASH = 'QmU4j5Y6JM9DqQ6yxB6nMHq4GChWg1zPehs1U7nGPHABRu' +const APP_DATA_HEX = '0x5511c4eac66ab272d9a6ab90e07977d00ff7375fc4dc1038a3c05b2c16ca0b74' + +const PINATA_API_KEY = 'apikey' +const PINATA_API_SECRET = 'apiSecret' + +beforeEach(() => { + fetchMock.resetMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) + +describe('uploadMetadataDocToIpfsLegacy', () => { + test('Fails without passing credentials', async () => { + // given + const appDataDoc = await generateAppDataDoc({ + metadata: { + referrer: APP_DATA_DOC_CUSTOM.metadata.referrer, + }, + }) + // when + const promise = uploadMetadataDocToIpfsLegacy(appDataDoc, {}) + // then + await expect(promise).rejects.toThrow('You need to pass IPFS api credentials.') + }) + + test('Fails with wrong credentials', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ error: { details: 'IPFS api keys are invalid' } }), { + status: HTTP_STATUS_INTERNAL_ERROR, + }) + const appDataDoc = await generateAppDataDoc({}) + // when + const promise = uploadMetadataDocToIpfsLegacy(appDataDoc, { + pinataApiKey: PINATA_API_KEY, + pinataApiSecret: PINATA_API_SECRET, + }) + // then + await expect(promise).rejects.toThrow('IPFS api keys are invalid') + expect(fetchMock).toHaveBeenCalledTimes(1) + }) + + test('Uploads to IPFS', async () => { + // given + fetchMock.mockResponseOnce(JSON.stringify({ IpfsHash: IPFS_HASH }), { status: HTTP_STATUS_OK }) + const appDataDoc = await generateAppDataDoc({ + metadata: { referrer: APP_DATA_DOC_CUSTOM.metadata.referrer }, + }) + + // when + const uploadResult = await uploadMetadataDocToIpfsLegacy(appDataDoc, { + pinataApiKey: PINATA_API_KEY, + pinataApiSecret: PINATA_API_SECRET, + }) + + // then + expect(uploadResult).toEqual({ + appData: APP_DATA_HEX, + cid: IPFS_HASH, + }) + expect(fetchMock).toHaveBeenCalledTimes(1) + expect(fetchMock).toHaveBeenCalledWith(DEFAULT_IPFS_WRITE_URI + '/pinning/pinJSONToIPFS', { + body: JSON.stringify({ pinataContent: appDataDoc, pinataMetadata: { name: 'appData' } }), + headers: { + 'Content-Type': 'application/json', + pinata_api_key: PINATA_API_KEY, + pinata_secret_api_key: PINATA_API_SECRET, + }, + method: 'POST', + }) + }) +}) diff --git a/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts b/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts new file mode 100644 index 000000000..46e9196fd --- /dev/null +++ b/packages/app-data/src/api/uploadMetadataDocToIpfsLegacy.ts @@ -0,0 +1,74 @@ +import { AnyAppDataDocVersion } from '../generatedTypes' + +import { Ipfs } from '../types' +import { DEFAULT_IPFS_WRITE_URI, MetaDataError } from '../consts' +import { extractDigest } from '../utils/ipfs' +import { stringifyDeterministic } from '../utils/stringify' + +export interface IpfsUploadResult { + appData: string + cid: string +} + +/** + * Uploads a appDocument to IPFS + * + * @deprecated Pinata IPFS automatically pins the uploaded document using some implicity encoding and hashing algorithm. This method is not used anymore to make it more explicit these parameters and therefore less depednent on the default impleemntation of Pinata + * + * @param appDataDoc Document to upload + * @param ipfsConfig keys to access the IPFS API + * + * @returns the IPFS CID v0 of the content + */ +export async function uploadMetadataDocToIpfsLegacy( + appDataDoc: AnyAppDataDocVersion, + ipfsConfig: Ipfs +): Promise { + const { IpfsHash: cid } = await _pinJsonInPinataIpfs(appDataDoc, ipfsConfig) + + return { + appData: await extractDigest(cid), + cid, + } +} + +type PinataPinResponse = { + IpfsHash: string + PinSize: number + Timestamp: string +} + +export async function _pinJsonInPinataIpfs( + file: unknown, + { writeUri = DEFAULT_IPFS_WRITE_URI, pinataApiKey = '', pinataApiSecret = '' }: Ipfs +): Promise { + const { default: fetch } = await import('cross-fetch') + + if (!pinataApiKey || !pinataApiSecret) { + throw new MetaDataError('You need to pass IPFS api credentials.') + } + + const body = await stringifyDeterministic({ + pinataContent: file, + pinataMetadata: { name: 'appData' }, + }) + + const pinataUrl = `${writeUri}/pinning/pinJSONToIPFS` + const response = await fetch(pinataUrl, { + method: 'POST', + body, + headers: { + 'Content-Type': 'application/json', + pinata_api_key: pinataApiKey, + pinata_secret_api_key: pinataApiSecret, + }, + }) + + const data = await response.json() + + if (response.status !== 200) { + throw new Error(data.error.details || data.error) + } + + return data +} diff --git a/packages/app-data/src/api/validateAppDataDoc.spec.ts b/packages/app-data/src/api/validateAppDataDoc.spec.ts new file mode 100644 index 000000000..f596a0c08 --- /dev/null +++ b/packages/app-data/src/api/validateAppDataDoc.spec.ts @@ -0,0 +1,71 @@ +import { APP_DATA_DOC } from '../mocks' +import { validateAppDataDoc } from './validateAppDataDoc' + +describe('validateAppDataDocument', () => { + const v010Doc = { + ...APP_DATA_DOC, + metatadata: { + referrer: { address: '0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9', version: '0.1.0' }, + }, + } + const v040Doc = { + ...v010Doc, + version: '0.4.0', + metadata: { ...v010Doc.metadata, quote: { slippageBips: '1', version: '0.2.0' } }, + } + + test('Version matches schema', async () => { + // when + const v010Validation = await validateAppDataDoc(v010Doc) + const v040Validation = await validateAppDataDoc(v040Doc) + // then + expect(v010Validation.success).toBeTruthy() + expect(v040Validation.success).toBeTruthy() + }) + + test("Version doesn't match schema", async () => { + // when + const v030Validation = await validateAppDataDoc({ ...v040Doc, version: '0.3.0' }) + // then + expect(v030Validation.success).toBeFalsy() + expect(v030Validation.errors).toEqual("data/metadata/quote must have required property 'sellAmount'") + }) + + test("Version doesn't exist", async () => { + // when + const validation = await validateAppDataDoc({ ...v010Doc, version: '0.0.0' }) + // then + expect(validation.success).toBeFalsy() + expect(validation.errors).toEqual("AppData version 0.0.0 doesn't exist") + }) + + test('Valid doc', async () => { + // given + const doc = { version: '0.4.0', metadata: {} } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeTruthy() + expect(result.errors).toBeUndefined() + }) + + test('Invalid doc', async () => { + // given + const doc = { version: '0.4.0', metadata: { referrer: { version: '312313', address: '0xssss' } } } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeFalsy() + expect(result.errors).toEqual('data/metadata/referrer/address must match pattern "^0x[a-fA-F0-9]{40}$"') + }) + + test('Non existent version', async () => { + // given + const doc = { version: '0.0.0', metadata: {} } + // when + const result = await validateAppDataDoc(doc) + // then + expect(result.success).toBeFalsy() + expect(result.errors).toEqual(`AppData version 0.0.0 doesn't exist`) + }) +}) diff --git a/packages/app-data/src/api/validateAppDataDoc.ts b/packages/app-data/src/api/validateAppDataDoc.ts new file mode 100644 index 000000000..8953435e4 --- /dev/null +++ b/packages/app-data/src/api/validateAppDataDoc.ts @@ -0,0 +1,63 @@ +import type { default as AjvType, ValidateFunction } from 'ajv' +import { AnyValidateFunction } from 'ajv/dist/core' +import { ValidationResult } from '../types' + +import { AnyAppDataDocVersion } from '../generatedTypes' +import { importSchema } from '../importSchema' + +let _ajvPromise: Promise | undefined +let _validatorPromises: Record> | undefined> = {} + +async function getAjv(): Promise { + if (!_ajvPromise) { + _ajvPromise = import('ajv').then(({ default: Ajv }) => new Ajv()) + } + + return _ajvPromise +} + +async function _createValidator(ajv: AjvType, version: string): Promise> { + let validator = ajv.getSchema(version) + + if (!validator) { + const schema = await importSchema(version) + ajv.addSchema(schema, version) + validator = ajv.getSchema(version) as ValidateFunction + } + + return validator +} + +async function getValidator(ajv: AjvType, version: string): Promise> { + let validatorPromise = _validatorPromises[version] + + // Instantiate the validator for the current version if it doesn't exist yet + if (!validatorPromise) { + validatorPromise = _createValidator(ajv, version) + _validatorPromises[version] = validatorPromise + } + + return validatorPromise +} + +export async function validateAppDataDoc(appDataDoc: AnyAppDataDocVersion): Promise { + const { version } = appDataDoc + + try { + const ajv = await getAjv() + const validator = await getValidator(ajv, version) + const success = !!validator(appDataDoc) + const errors = validator.errors ? ajv.errorsText(validator.errors) : undefined + + return { success, errors } + } catch (e) { + if (e instanceof Error) { + return { + success: false, + errors: e.message, + } + } else { + throw e + } + } +} diff --git a/packages/app-data/src/consts.ts b/packages/app-data/src/consts.ts new file mode 100644 index 000000000..d68c227cf --- /dev/null +++ b/packages/app-data/src/consts.ts @@ -0,0 +1,4 @@ +export const DEFAULT_IPFS_READ_URI = 'https://cloudflare-ipfs.com/ipfs' +export const DEFAULT_IPFS_WRITE_URI = 'https://api.pinata.cloud' + +export class MetaDataError extends Error {} diff --git a/packages/app-data/src/exports.ts b/packages/app-data/src/exports.ts new file mode 100644 index 000000000..5453ef26b --- /dev/null +++ b/packages/app-data/src/exports.ts @@ -0,0 +1,3 @@ +export * from './api' +export * from './types' +export { stringifyDeterministic } from './utils/stringify' diff --git a/packages/app-data/src/generatedTypes/index.ts b/packages/app-data/src/generatedTypes/index.ts new file mode 100644 index 000000000..a51f9e374 --- /dev/null +++ b/packages/app-data/src/generatedTypes/index.ts @@ -0,0 +1,69 @@ +// generated file, do not edit manually + +import * as v0_1_0 from './v0.1.0' +import * as v0_10_0 from './v0.10.0' +import * as v0_11_0 from './v0.11.0' +import * as v0_2_0 from './v0.2.0' +import * as v0_3_0 from './v0.3.0' +import * as v0_4_0 from './v0.4.0' +import * as v0_5_0 from './v0.5.0' +import * as v0_6_0 from './v0.6.0' +import * as v0_7_0 from './v0.7.0' +import * as v0_8_0 from './v0.8.0' +import * as v0_9_0 from './v0.9.0' +import * as v1_0_0 from './v1.0.0' +import * as v1_1_0 from './v1.1.0' +import * as v1_2_0 from './v1.2.0' +import * as v1_3_0 from './v1.3.0' +import * as v1_4_0 from './v1.4.0' + +export * from './latest' + +export const LATEST_APP_DATA_VERSION = '1.4.0' +export const LATEST_QUOTE_METADATA_VERSION = '1.1.0' +export const LATEST_REFERRER_METADATA_VERSION = '0.2.0' +export const LATEST_ORDER_CLASS_METADATA_VERSION = '0.3.0' +export const LATEST_UTM_METADATA_VERSION = '0.2.0' +export const LATEST_HOOKS_METADATA_VERSION = '0.2.0' +export const LATEST_SIGNER_METADATA_VERSION = '0.1.0' +export const LATEST_WIDGET_METADATA_VERSION = '0.1.0' +export const LATEST_PARTNER_FEE_METADATA_VERSION = '1.0.0' +export const LATEST_REPLACED_ORDER_METADATA_VERSION = '0.1.0' + +export type LatestAppDataDocVersion = v1_4_0.AppDataRootSchema +export type AnyAppDataDocVersion = + | v1_4_0.AppDataRootSchema + | v1_3_0.AppDataRootSchema + | v1_2_0.AppDataRootSchema + | v1_1_0.AppDataRootSchema + | v1_0_0.AppDataRootSchema + | v0_11_0.AppDataRootSchema + | v0_10_0.AppDataRootSchema + | v0_9_0.AppDataRootSchema + | v0_8_0.AppDataRootSchema + | v0_7_0.AppDataRootSchema + | v0_6_0.AppDataRootSchema + | v0_5_0.AppDataRootSchema + | v0_4_0.AppDataRootSchema + | v0_3_0.AppDataRootSchema + | v0_2_0.AppDataRootSchema + | v0_1_0.AppDataRootSchema + +export { + v1_4_0, + v1_3_0, + v1_2_0, + v1_1_0, + v1_0_0, + v0_11_0, + v0_10_0, + v0_9_0, + v0_8_0, + v0_7_0, + v0_6_0, + v0_5_0, + v0_4_0, + v0_3_0, + v0_2_0, + v0_1_0 +} diff --git a/packages/app-data/src/generatedTypes/latest.ts b/packages/app-data/src/generatedTypes/latest.ts new file mode 100644 index 000000000..73f859665 --- /dev/null +++ b/packages/app-data/src/generatedTypes/latest.ts @@ -0,0 +1,3 @@ +// generated file, do not edit manually + +export * as latest from './v1.4.0' diff --git a/packages/app-data/src/generatedTypes/v0.1.0.ts b/packages/app-data/src/generatedTypes/v0.1.0.ts new file mode 100644 index 000000000..b5d04253c --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.1.0.ts @@ -0,0 +1,42 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.10.0.ts b/packages/app-data/src/generatedTypes/v0.10.0.ts new file mode 100644 index 000000000..9e38ab1a8 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.10.0.ts @@ -0,0 +1,126 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} diff --git a/packages/app-data/src/generatedTypes/v0.11.0.ts b/packages/app-data/src/generatedTypes/v0.11.0.ts new file mode 100644 index 000000000..cda95a66c --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.11.0.ts @@ -0,0 +1,139 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} diff --git a/packages/app-data/src/generatedTypes/v0.2.0.ts b/packages/app-data/src/generatedTypes/v0.2.0.ts new file mode 100644 index 000000000..f95491201 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.2.0.ts @@ -0,0 +1,57 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +export type QuoteId = string; +export type QuoteSellAmount = string; +export type QuoteBuyAmount = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + id?: QuoteId; + sellAmount: QuoteSellAmount; + buyAmount: QuoteBuyAmount; + version: Version2; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.3.0.ts b/packages/app-data/src/generatedTypes/v0.3.0.ts new file mode 100644 index 000000000..804b132a1 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.3.0.ts @@ -0,0 +1,62 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +export type QuoteId = string; +export type QuoteSellAmount = string; +export type QuoteBuyAmount = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + id?: QuoteId; + sellAmount: QuoteSellAmount; + buyAmount: QuoteBuyAmount; + version: Version2; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.4.0.ts b/packages/app-data/src/generatedTypes/v0.4.0.ts new file mode 100644 index 000000000..0346e909e --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.4.0.ts @@ -0,0 +1,61 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.5.0.ts b/packages/app-data/src/generatedTypes/v0.5.0.ts new file mode 100644 index 000000000..fea347d03 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.5.0.ts @@ -0,0 +1,75 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.6.0.ts b/packages/app-data/src/generatedTypes/v0.6.0.ts new file mode 100644 index 000000000..72c831eca --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.6.0.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.7.0.ts b/packages/app-data/src/generatedTypes/v0.7.0.ts new file mode 100644 index 000000000..0b3b38fcf --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.7.0.ts @@ -0,0 +1,104 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Semantic versioning of document. + */ +export type Version2 = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Semantic versioning of document. + */ +export type Version3 = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; + [k: string]: unknown; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + [k: string]: unknown; +} +export interface Referrer { + version: Version1; + address: ReferrerAddress; + [k: string]: unknown; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; + [k: string]: unknown; +} +export interface Quote { + version: Version2; + slippageBips: SlippageBips; + [k: string]: unknown; +} +export interface OrderClass { + version: Version3; + orderClass: OrderClass1; + [k: string]: unknown; +} diff --git a/packages/app-data/src/generatedTypes/v0.8.0.ts b/packages/app-data/src/generatedTypes/v0.8.0.ts new file mode 100644 index 000000000..d7d219ada --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.8.0.ts @@ -0,0 +1,83 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} diff --git a/packages/app-data/src/generatedTypes/v0.9.0.ts b/packages/app-data/src/generatedTypes/v0.9.0.ts new file mode 100644 index 000000000..abdf75069 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v0.9.0.ts @@ -0,0 +1,121 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS) + */ +export type SlippageBips = string; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} diff --git a/packages/app-data/src/generatedTypes/v1.0.0.ts b/packages/app-data/src/generatedTypes/v1.0.0.ts new file mode 100644 index 000000000..952545fbe --- /dev/null +++ b/packages/app-data/src/generatedTypes/v1.0.0.ts @@ -0,0 +1,152 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} diff --git a/packages/app-data/src/generatedTypes/v1.1.0.ts b/packages/app-data/src/generatedTypes/v1.1.0.ts new file mode 100644 index 000000000..e6f91cba3 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v1.1.0.ts @@ -0,0 +1,160 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/packages/app-data/src/generatedTypes/v1.2.0.ts b/packages/app-data/src/generatedTypes/v1.2.0.ts new file mode 100644 index 000000000..e19b4079a --- /dev/null +++ b/packages/app-data/src/generatedTypes/v1.2.0.ts @@ -0,0 +1,165 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Whether the given slippageBips used is originated from a Smart slippage suggestion + */ +export type SmartSlippage = boolean; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; + smartSlippage?: SmartSlippage; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/packages/app-data/src/generatedTypes/v1.3.0.ts b/packages/app-data/src/generatedTypes/v1.3.0.ts new file mode 100644 index 000000000..a11fcf7af --- /dev/null +++ b/packages/app-data/src/generatedTypes/v1.3.0.ts @@ -0,0 +1,170 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Whether the given slippageBips used is originated from a Smart slippage suggestion + */ +export type SmartSlippage = boolean; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook. + */ +export type IdOfTheDAppWhichHasBuiltTheHook = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +/** + * The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type BasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; + smartSlippage?: SmartSlippage; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; + dappId?: IdOfTheDAppWhichHasBuiltTheHook; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface PartnerFee { + bps: BasisPointBPS; + recipient: PartnerAccount; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/packages/app-data/src/generatedTypes/v1.4.0.ts b/packages/app-data/src/generatedTypes/v1.4.0.ts new file mode 100644 index 000000000..02f8a2e82 --- /dev/null +++ b/packages/app-data/src/generatedTypes/v1.4.0.ts @@ -0,0 +1,211 @@ +/* tslint:disable */ +/** + * This file was automatically generated by json-schema-to-typescript. + * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, + * and run json-schema-to-typescript to regenerate this file. + */ + +/** + * Semantic versioning of document. + */ +export type Version = string; +/** + * The code identifying the CLI, UI, service generating the order. + */ +export type AppCode = string; +/** + * Environment from which the order came from. + */ +export type Environment = string; +/** + * The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures. + */ +export type Signer = string; +export type ReferrerAddress = string; +/** + * Tracks in which medium the traffic originated from (twitter, facebook, etc.) + */ +export type UTMSource = string; +/** + * Tracks in which medium the traffic originated from (mail, CPC, social, etc.) + */ +export type UTMMedium = string; +/** + * Track the performance of a specific campaign + */ +export type UTMCampaign = string; +/** + * Track which link was clicked + */ +export type UTMContent = string; +/** + * Track which keyword term a website visitor came from + */ +export type UTMKeywordTerm = string; +/** + * Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent) + */ +export type SlippageBips = number; +/** + * Whether the given slippageBips used is originated from a Smart slippage suggestion + */ +export type SmartSlippage = boolean; +/** + * Indicator of the order class. + */ +export type OrderClass1 = "market" | "limit" | "liquidity" | "twap"; +/** + * Semantic versioning of document. + */ +export type Version1 = string; +/** + * The contract to call for the hook + */ +export type HookTarget = string; +/** + * The calldata to use when calling the hook + */ +export type HookCallData = string; +/** + * The gas limit (in gas units) for the hook + */ +export type HookGasLimit = string; +/** + * CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook. + */ +export type IdOfTheDAppWhichHasBuiltTheHook = string; +/** + * CoW Hooks to call before an order executes + */ +export type PreHooks = CoWHook[]; +/** + * CoW Hooks to call after an order executes + */ +export type PostHooks = CoWHook[]; +/** + * The code identifying the UI powering the widget + */ +export type AppCode1 = string; +/** + * Environment from which the order came from. + */ +export type Environment1 = string; +export type PartnerFee = + | ( + | { + volumeBps: VolumeBasisPointBPS; + recipient: PartnerAccount; + } + | { + surplusBps: SurplusBasisPointBPS; + maxVolumeBps: MaxVolumeBasisPointBPS; + recipient: PartnerAccount; + } + | { + priceImprovementBps: PriceImprovementBasisPointBPS; + maxVolumeBps: MaxVolumeBasisPointBPS; + recipient: PartnerAccount; + } + )[] + | ( + | { + volumeBps: VolumeBasisPointBPS; + recipient: PartnerAccount; + } + | { + surplusBps: SurplusBasisPointBPS; + maxVolumeBps: MaxVolumeBasisPointBPS; + recipient: PartnerAccount; + } + | { + priceImprovementBps: PriceImprovementBasisPointBPS; + maxVolumeBps: MaxVolumeBasisPointBPS; + recipient: PartnerAccount; + } + ); +/** + * The fee in basis points (BPS) to be paid to the partner based on volume. Capped at protocol level to 100 BPS (1%) + */ +export type VolumeBasisPointBPS = number; +/** + * The Ethereum address of the partner to receive the fee. + */ +export type PartnerAccount = string; +/** + * The fee in basis points (BPS) to be paid to the partner based on surplus + */ +export type SurplusBasisPointBPS = number; +/** + * The maximum volume in basis points (BPS) to be paid to the partner. Capped at protocol level to 100 BPS (1%). You can chose to go lower but not higher + */ +export type MaxVolumeBasisPointBPS = number; +/** + * The fee in basis points (BPS) to be paid to the partner based on price improvement + */ +export type PriceImprovementBasisPointBPS = number; +/** + * The replaced order UID. + */ +export type ReplacedOrderUID = string; + +/** + * Metadata JSON document for adding information to orders. + */ +export interface AppDataRootSchema { + version: Version; + appCode?: AppCode; + environment?: Environment; + metadata: Metadata; +} +/** + * Each metadata will specify one aspect of the order. + */ +export interface Metadata { + signer?: Signer; + referrer?: Referrer; + utm?: UTMCodes; + quote?: Quote; + orderClass?: OrderClass; + hooks?: OrderInteractionHooks; + widget?: Widget; + partnerFee?: PartnerFee; + replacedOrder?: ReplacedOrder; +} +export interface Referrer { + address: ReferrerAddress; +} +export interface UTMCodes { + utmSource?: UTMSource; + utmMedium?: UTMMedium; + utmCampaign?: UTMCampaign; + utmContent?: UTMContent; + utmTerm?: UTMKeywordTerm; +} +export interface Quote { + slippageBips: SlippageBips; + smartSlippage?: SmartSlippage; +} +export interface OrderClass { + orderClass: OrderClass1; +} +/** + * Optional Pre and Post order interaction hooks attached to a single order + */ +export interface OrderInteractionHooks { + version?: Version1; + pre?: PreHooks; + post?: PostHooks; +} +export interface CoWHook { + target: HookTarget; + callData: HookCallData; + gasLimit: HookGasLimit; + dappId?: IdOfTheDAppWhichHasBuiltTheHook; +} +export interface Widget { + appCode: AppCode1; + environment?: Environment1; +} +export interface ReplacedOrder { + uid: ReplacedOrderUID; +} diff --git a/packages/app-data/src/importSchema.ts b/packages/app-data/src/importSchema.ts new file mode 100644 index 000000000..4d3cdb2f8 --- /dev/null +++ b/packages/app-data/src/importSchema.ts @@ -0,0 +1,12 @@ +import { AnyAppDataDocVersion } from './generatedTypes' + +export async function importSchema(version: string): Promise { + if (!/^\d+\.\d+\.\d+$/.test(version)) { + throw new Error(`AppData version ${version} is not a valid version`) + } + try { + return await import(`../schemas/v${version}.json`) + } catch (e) { + throw new Error(`AppData version ${version} doesn't exist`) + } +} diff --git a/packages/app-data/src/index.ts b/packages/app-data/src/index.ts new file mode 100644 index 000000000..9eabd95e7 --- /dev/null +++ b/packages/app-data/src/index.ts @@ -0,0 +1,2 @@ +export * from './exports' +export * from './generatedTypes' diff --git a/packages/app-data/src/latest.ts b/packages/app-data/src/latest.ts new file mode 100644 index 000000000..3253f3bf2 --- /dev/null +++ b/packages/app-data/src/latest.ts @@ -0,0 +1,2 @@ +export * from './exports' +export * from './generatedTypes/latest' diff --git a/packages/app-data/src/mocks.ts b/packages/app-data/src/mocks.ts new file mode 100644 index 000000000..7ab9e11b5 --- /dev/null +++ b/packages/app-data/src/mocks.ts @@ -0,0 +1,42 @@ +export const HTTP_STATUS_OK = 200 +export const HTTP_STATUS_INTERNAL_ERROR = 500 + +export const APP_DATA_DOC = { + version: '0.7.0', + appCode: 'CoW Swap', + metadata: {}, +} + +export const APP_DATA_STRING = '{"appCode":"CoW Swap","metadata":{},"version":"0.7.0"}' +export const CID = 'f01551b20337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df' // https://cid.ipfs.tech/#f01551b20337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df +export const APP_DATA_HEX = '0x337aa6e6c2a7a0d1eb79a35ebd88b08fc963d5f7a3fc953b7ffb2b7f5898a1df' + +export const APP_DATA_DOC_CUSTOM = { + ...APP_DATA_DOC, + environment: 'test', + metadata: { + referrer: { + address: '0x1f5B740436Fc5935622e92aa3b46818906F416E9', + version: '0.1.0', + }, + quote: { + slippageBips: 1, + version: '0.2.0', + }, + }, +} + +// Another example of AppData (same as the backend uses in the tests +// See https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs#L64 +export const APP_DATA_STRING_2 = + '{"appCode":"CoW Swap","environment":"production","metadata":{"quote":{"slippageBips":"50","version":"0.2.0"},"orderClass":{"orderClass":"market","version":"0.1.0"}},"version":"0.6.0"}' +export const CID_2 = 'f01551b208af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424' // https://cid.ipfs.tech/#f01551b208af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424 +export const APP_DATA_HEX_2 = '0x8af4e8c9973577b08ac21d17d331aade86c11ebcc5124744d621ca8365ec9424' + +// Legacy IPFS Hash format and AppData +export const APP_DATA_STRING_LEGACY = '{"version":"0.7.0","appCode":"CowSwap","metadata":{}}' // Slightly different than FULL_APP_DATA because legacy used undeterministic JSON.stringify while now we use stringifyDeterministic method +export const CID_LEGACY = 'QmSwrFbdFcryazEr361YmSwtGcN4uo4U5DKpzA4KbGxw4Q' // https://cid.ipfs.tech/#QmUbsYUqP4DXDvXDipKDG6hKhKnb6dADMeBiHHYJiizr25 +export const APP_DATA_HEX_LEGACY = '0x447320af985c5e834321dc495545f764ad20d8397eeed2f4a2dcbee44a56b725' + +export const PINATA_API_KEY = 'apikey' +export const PINATA_API_SECRET = 'apiSecret' diff --git a/packages/app-data/src/schemas/definitions.json b/packages/app-data/src/schemas/definitions.json new file mode 100644 index 000000000..06f3165ba --- /dev/null +++ b/packages/app-data/src/schemas/definitions.json @@ -0,0 +1,52 @@ +{ + "$id": "#definitions.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Definitions sub-schema", + "definitions": { + "version": { + "$id": "#/definitions/version", + "description": "Semantic versioning of document.", + "readOnly": true, + "examples": ["1.0.0", "1.2.3"], + "title": "Version", + "type": "string" + }, + "ethereumAddress": { + "$id": "#/definitions/ethereumAddress", + "pattern": "^0x[a-fA-F0-9]{40}$", + "title": "Ethereum compatible address", + "examples": ["0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9"], + "type": "string" + }, + "bigNumber": { + "$id": "#/definitions/bigNumber", + "pattern": "^\\d+$", + "title": "BigNumber", + "examples": ["90741097240912730913", "0", "75891372"], + "type": "string" + }, + "bps": { + "$id": "#/definitions/bps", + "title": "Basis Point (BPS)", + "description": "One basis point is equivalent to 0.01% (1/100th of a percent)", + "examples": [0, 10, 50], + "type": "integer", + "maximum": 10000, + "minimum": 0 + }, + "orderUid": { + "$id": "#/definitions/orderUid", + "pattern": "^0x[a-fA-F0-9]{112}$", + "title": "Order UID", + "examples": ["0xff2e2e54d178997f173266817c1e9ed6fee1a1aae4b43971c53b543cffcc2969845c6f5599fbb25dbdd1b9b013daf85c03f3c63763e4bc4a"], + "type": "string" + }, + "dappId": { + "$id": "#/definitions/dappId", + "pattern": "^[a-fA-F0-9]{64}$", + "title": "A hex string representing a dApp ID", + "examples": ["75716a3cb48fdbb43ebdff58ce6c541f6a2c269be690513131355800367f2da2"], + "type": "string" + } + } +} diff --git a/packages/app-data/src/schemas/hook/v0.1.0.json b/packages/app-data/src/schemas/hook/v0.1.0.json new file mode 100644 index 000000000..28c157171 --- /dev/null +++ b/packages/app-data/src/schemas/hook/v0.1.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hook/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "target", + "callData", + "gasLimit" + ], + "title": "CoW Hook", + "type": "object", + "additionalProperties": false, + "properties": { + "target": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Hook Target", + "description": "The contract to call for the hook" + }, + "callData": { + "$id": "#/properties/callData", + "title": "Hook CallData", + "description": "The calldata to use when calling the hook", + "type": "string", + "pattern": "^0x[a-fA-F0-9]*$", + "examples": [ + "0x", + "0x01020304" + ] + }, + "gasLimit": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Hook Gas Limit", + "description": "The gas limit (in gas units) for the hook" + } + } +} diff --git a/packages/app-data/src/schemas/hook/v0.2.0.json b/packages/app-data/src/schemas/hook/v0.2.0.json new file mode 100644 index 000000000..5e29ea972 --- /dev/null +++ b/packages/app-data/src/schemas/hook/v0.2.0.json @@ -0,0 +1,40 @@ +{ + "$id": "#hook/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "target", + "callData", + "gasLimit" + ], + "title": "CoW Hook", + "type": "object", + "additionalProperties": false, + "properties": { + "target": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Hook Target", + "description": "The contract to call for the hook" + }, + "callData": { + "$id": "#/properties/callData", + "title": "Hook CallData", + "description": "The calldata to use when calling the hook", + "type": "string", + "pattern": "^0x[a-fA-F0-9]*$", + "examples": [ + "0x", + "0x01020304" + ] + }, + "gasLimit": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Hook Gas Limit", + "description": "The gas limit (in gas units) for the hook" + }, + "dappId": { + "$ref": "../definitions.json#/definitions/dappId", + "title": "Id of the dApp which has built the hook", + "description": "CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook." + } + } +} diff --git a/packages/app-data/src/schemas/hooks/v0.1.0.json b/packages/app-data/src/schemas/hooks/v0.1.0.json new file mode 100644 index 000000000..37a1c6e05 --- /dev/null +++ b/packages/app-data/src/schemas/hooks/v0.1.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hooks/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "default": {}, + "required": [], + "title": "Order interaction hooks", + "description": "Optional Pre and Post order interaction hooks attached to a single order", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "pre": { + "$id": "#/properties/hooks/pre", + "title": "Pre-Hooks", + "description": "CoW Hooks to call before an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.1.0.json#" + } + }, + "post": { + "$id": "#/properties/hooks/post", + "title": "Post-Hooks", + "description": "CoW Hooks to call after an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.1.0.json#" + } + } + } +} diff --git a/packages/app-data/src/schemas/hooks/v0.2.0.json b/packages/app-data/src/schemas/hooks/v0.2.0.json new file mode 100644 index 000000000..53b7ccc4a --- /dev/null +++ b/packages/app-data/src/schemas/hooks/v0.2.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#hooks/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "default": {}, + "required": [], + "title": "Order interaction hooks", + "description": "Optional Pre and Post order interaction hooks attached to a single order", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "pre": { + "$id": "#/properties/hooks/pre", + "title": "Pre-Hooks", + "description": "CoW Hooks to call before an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.2.0.json#" + } + }, + "post": { + "$id": "#/properties/hooks/post", + "title": "Post-Hooks", + "description": "CoW Hooks to call after an order executes", + "type": "array", + "items": { + "$ref": "../hook/v0.2.0.json#" + } + } + } +} diff --git a/packages/app-data/src/schemas/orderClass/v0.1.0.json b/packages/app-data/src/schemas/orderClass/v0.1.0.json new file mode 100644 index 000000000..dc97fd7d3 --- /dev/null +++ b/packages/app-data/src/schemas/orderClass/v0.1.0.json @@ -0,0 +1,33 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "orderClass" + ], + "title": "Order class", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity" + ] + } + } +} diff --git a/packages/app-data/src/schemas/orderClass/v0.2.0.json b/packages/app-data/src/schemas/orderClass/v0.2.0.json new file mode 100644 index 000000000..4a09255c2 --- /dev/null +++ b/packages/app-data/src/schemas/orderClass/v0.2.0.json @@ -0,0 +1,35 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "orderClass" + ], + "title": "Order class", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity", + "twap" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity", + "twap" + ] + } + } +} diff --git a/packages/app-data/src/schemas/orderClass/v0.3.0.json b/packages/app-data/src/schemas/orderClass/v0.3.0.json new file mode 100644 index 000000000..7491429fc --- /dev/null +++ b/packages/app-data/src/schemas/orderClass/v0.3.0.json @@ -0,0 +1,30 @@ +{ + "$id": "#orderClass/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "orderClass" + ], + "title": "Order class", + "type": "object", + "additionalProperties": false, + "properties": { + "orderClass": { + "$id": "#/definitions/orderClass", + "description": "Indicator of the order class.", + "examples": [ + "market", + "limit", + "liquidity", + "twap" + ], + "title": "Order class", + "type": "string", + "enum": [ + "market", + "limit", + "liquidity", + "twap" + ] + } + } +} diff --git a/packages/app-data/src/schemas/partnerFee/v0.1.0.json b/packages/app-data/src/schemas/partnerFee/v0.1.0.json new file mode 100644 index 000000000..ea8eb5a05 --- /dev/null +++ b/packages/app-data/src/schemas/partnerFee/v0.1.0.json @@ -0,0 +1,20 @@ +{ + "$id": "#partnerFee/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["bps", "recipient"], + "title": "Partner fee", + "type": "object", + "additionalProperties": false, + "properties": { + "bps": { + "title": "Basis Point (BPS)", + "description": "The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + }, + "recipient": { + "title": "Partner account", + "description": "The Ethereum address of the partner to receive the fee.", + "$ref": "../definitions.json#/definitions/ethereumAddress" + } + } +} diff --git a/packages/app-data/src/schemas/partnerFee/v1.0.0.json b/packages/app-data/src/schemas/partnerFee/v1.0.0.json new file mode 100644 index 000000000..4e357bfab --- /dev/null +++ b/packages/app-data/src/schemas/partnerFee/v1.0.0.json @@ -0,0 +1,101 @@ +{ + "$id": "#partnerFee/v1.0.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "title": "Partner fee", + "oneOf": [ + { + "type": "array", + "items": { + "$ref": "#/definitions/partnerFeeObject" + } + }, + { + "$ref": "#/definitions/partnerFeeObject" + } + ], + "definitions": { + "partnerFeeObject": { + "type": "object", + "oneOf": [ + { + "required": [ + "volumeBps", + "recipient" + ], + "properties": { + "volumeBps": { + "title": "Volume Basis Point (BPS)", + "description": "The fee in basis points (BPS) to be paid to the partner based on volume. Capped at protocol level to 100 BPS (1%)", + "$ref": "../definitions.json#/definitions/bps", + "maximum": 100, + "minimum": 1 + }, + "recipient": { + "$ref": "#/definitions/recipient" + } + }, + "additionalProperties": false + }, + { + "required": [ + "surplusBps", + "maxVolumeBps", + "recipient" + ], + "properties": { + "surplusBps": { + "title": "Surplus Basis Point (BPS)", + "description": "The fee in basis points (BPS) to be paid to the partner based on surplus", + "$ref": "../definitions.json#/definitions/bps", + "maximum": 9999, + "minimum": 1 + }, + "maxVolumeBps": { + "$ref": "#/definitions/maxVolumeBps" + }, + "recipient": { + "$ref": "#/definitions/recipient" + } + }, + "additionalProperties": false + }, + { + "required": [ + "priceImprovementBps", + "maxVolumeBps", + "recipient" + ], + "properties": { + "priceImprovementBps": { + "title": "Price Improvement Basis Point (BPS)", + "description": "The fee in basis points (BPS) to be paid to the partner based on price improvement", + "$ref": "../definitions.json#/definitions/bps", + "maximum": 9999, + "minimum": 1 + }, + "maxVolumeBps": { + "$ref": "#/definitions/maxVolumeBps" + }, + "recipient": { + "$ref": "#/definitions/recipient" + } + }, + "additionalProperties": false + } + ] + }, + "maxVolumeBps": { + "title": "Max Volume Basis Point (BPS)", + "description": "The maximum volume in basis points (BPS) to be paid to the partner. Capped at protocol level to 100 BPS (1%). You can chose to go lower but not higher", + "$ref": "../definitions.json#/definitions/bps", + "maximum": 100, + "minimum": 1, + "default": 100 + }, + "recipient": { + "title": "Partner account", + "description": "The Ethereum address of the partner to receive the fee.", + "$ref": "../definitions.json#/definitions/ethereumAddress" + } + } +} \ No newline at end of file diff --git a/packages/app-data/src/schemas/quote/v0.1.0.json b/packages/app-data/src/schemas/quote/v0.1.0.json new file mode 100644 index 000000000..905399f15 --- /dev/null +++ b/packages/app-data/src/schemas/quote/v0.1.0.json @@ -0,0 +1,34 @@ +{ + "$id": "#quote/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "sellAmount", + "buyAmount", + "version" + ], + "title": "Quote", + "type": "object", + "properties": { + "id": { + "$id": "#/properties/id", + "title": "Quote id", + "examples": [ + "XA23443543534FF" + ], + "type": "string" + }, + "sellAmount": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Quote sell amount" + }, + "buyAmount": { + "$ref": "../definitions.json#/definitions/bigNumber", + "title": "Quote buy amount" + }, + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + } + } +} diff --git a/packages/app-data/src/schemas/quote/v0.2.0.json b/packages/app-data/src/schemas/quote/v0.2.0.json new file mode 100644 index 000000000..62bc155a3 --- /dev/null +++ b/packages/app-data/src/schemas/quote/v0.2.0.json @@ -0,0 +1,22 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["version", "slippageBips"], + "title": "Quote", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.2.0" + }, + "slippageBips": { + "$id": "#/properties/slippageBips", + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS)", + "examples": ["5", "10", "20", "100"], + "pattern": "^\\d+(\\.\\d+)?$", + "type": "string" + } + } +} diff --git a/packages/app-data/src/schemas/quote/v0.3.0.json b/packages/app-data/src/schemas/quote/v0.3.0.json new file mode 100644 index 000000000..815920510 --- /dev/null +++ b/packages/app-data/src/schemas/quote/v0.3.0.json @@ -0,0 +1,18 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["slippageBips"], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "$id": "#/properties/slippageBips", + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS)", + "examples": ["5", "10", "20", "100"], + "pattern": "^\\d+(\\.\\d+)?$", + "type": "string" + } + } +} diff --git a/packages/app-data/src/schemas/quote/v1.0.0.json b/packages/app-data/src/schemas/quote/v1.0.0.json new file mode 100644 index 000000000..6500a008f --- /dev/null +++ b/packages/app-data/src/schemas/quote/v1.0.0.json @@ -0,0 +1,15 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["slippageBips"], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + } + } +} diff --git a/packages/app-data/src/schemas/quote/v1.1.0.json b/packages/app-data/src/schemas/quote/v1.1.0.json new file mode 100644 index 000000000..160808bd6 --- /dev/null +++ b/packages/app-data/src/schemas/quote/v1.1.0.json @@ -0,0 +1,23 @@ +{ + "$id": "#quote/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "slippageBips" + ], + "title": "Quote", + "type": "object", + "additionalProperties": false, + "properties": { + "slippageBips": { + "title": "Slippage Bips", + "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent)", + "$ref": "../definitions.json#/definitions/bps" + }, + "smartSlippage": { + "title": "Smart Slippage", + "description": "Whether the given slippageBips used is originated from a Smart slippage suggestion", + "type": "boolean", + "default": false + } + } +} \ No newline at end of file diff --git a/packages/app-data/src/schemas/referrer/v0.1.0.json b/packages/app-data/src/schemas/referrer/v0.1.0.json new file mode 100644 index 000000000..642161973 --- /dev/null +++ b/packages/app-data/src/schemas/referrer/v0.1.0.json @@ -0,0 +1,21 @@ +{ + "$id": "#referrer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "version", + "address" + ], + "title": "Referrer", + "type": "object", + "properties": { + "version": { + "$ref": "../definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "address": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Referrer address" + } + } +} diff --git a/packages/app-data/src/schemas/referrer/v0.2.0.json b/packages/app-data/src/schemas/referrer/v0.2.0.json new file mode 100644 index 000000000..635830ce6 --- /dev/null +++ b/packages/app-data/src/schemas/referrer/v0.2.0.json @@ -0,0 +1,16 @@ +{ + "$id": "#referrer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [ + "address" + ], + "title": "Referrer", + "type": "object", + "additionalProperties": false, + "properties": { + "address": { + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Referrer address" + } + } +} diff --git a/packages/app-data/src/schemas/replacedOrder/v0.1.0.json b/packages/app-data/src/schemas/replacedOrder/v0.1.0.json new file mode 100644 index 000000000..ecba827a9 --- /dev/null +++ b/packages/app-data/src/schemas/replacedOrder/v0.1.0.json @@ -0,0 +1,15 @@ +{ + "$id": "#replacedOrder/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["uid"], + "title": "Replaced order", + "type": "object", + "additionalProperties": false, + "properties": { + "uid": { + "title": "Replaced order UID", + "description": "The replaced order UID.", + "$ref": "../definitions.json#/definitions/orderUid" + } + } +} diff --git a/packages/app-data/src/schemas/signer/v0.1.0.json b/packages/app-data/src/schemas/signer/v0.1.0.json new file mode 100644 index 000000000..aeda275af --- /dev/null +++ b/packages/app-data/src/schemas/signer/v0.1.0.json @@ -0,0 +1,7 @@ +{ + "$id": "#signer/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "$ref": "../definitions.json#/definitions/ethereumAddress", + "title": "Signer", + "description": "The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures." +} diff --git a/packages/app-data/src/schemas/utm/v0.1.0.json b/packages/app-data/src/schemas/utm/v0.1.0.json new file mode 100644 index 000000000..a9a4d27a0 --- /dev/null +++ b/packages/app-data/src/schemas/utm/v0.1.0.json @@ -0,0 +1,54 @@ +{ + "$id": "#utm/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [], + "title": "UTM Codes", + "type": "object", + "properties": { + "utmSource": { + "$id": "#/properties/utmSource", + "title": "UTM Source", + "type": "string", + "examples": [ + "twitter" + ], + "description": "Tracks in which medium the traffic originated from (twitter, facebook, etc.)" + }, + "utmMedium": { + "$id": "#/properties/utmMedium", + "title": "UTM Medium", + "type": "string", + "examples": [ + "email" + ], + "description": "Tracks in which medium the traffic originated from (mail, CPC, social, etc.)" + }, + "utmCampaign": { + "$id": "#/properties/utmCampagin", + "title": "UTM Campaign", + "type": "string", + "examples": [ + "everyone-loves-cows-2023" + ], + "description": "Track the performance of a specific campaign" + }, + "utmContent": { + "$id": "#/properties/utmContent", + "title": "UTM Content", + "type": "string", + "examples": [ + "big-fat-button" + ], + "description": "Track which link was clicked" + }, + "utmTerm": { + "$id": "#/properties/utmTem", + "title": "UTM Keyword Term", + "type": "string", + "examples": [ + "coincidence+of+wants" + ], + "description": "Track which keyword term a website visitor came from" + } + } +} diff --git a/packages/app-data/src/schemas/utm/v0.2.0.json b/packages/app-data/src/schemas/utm/v0.2.0.json new file mode 100644 index 000000000..ce085c74c --- /dev/null +++ b/packages/app-data/src/schemas/utm/v0.2.0.json @@ -0,0 +1,55 @@ +{ + "$id": "#utm/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": [], + "title": "UTM Codes", + "type": "object", + "additionalProperties": false, + "properties": { + "utmSource": { + "$id": "#/properties/utmSource", + "title": "UTM Source", + "type": "string", + "examples": [ + "twitter" + ], + "description": "Tracks in which medium the traffic originated from (twitter, facebook, etc.)" + }, + "utmMedium": { + "$id": "#/properties/utmMedium", + "title": "UTM Medium", + "type": "string", + "examples": [ + "email" + ], + "description": "Tracks in which medium the traffic originated from (mail, CPC, social, etc.)" + }, + "utmCampaign": { + "$id": "#/properties/utmCampagin", + "title": "UTM Campaign", + "type": "string", + "examples": [ + "everyone-loves-cows-2023" + ], + "description": "Track the performance of a specific campaign" + }, + "utmContent": { + "$id": "#/properties/utmContent", + "title": "UTM Content", + "type": "string", + "examples": [ + "big-fat-button" + ], + "description": "Track which link was clicked" + }, + "utmTerm": { + "$id": "#/properties/utmTem", + "title": "UTM Keyword Term", + "type": "string", + "examples": [ + "coincidence+of+wants" + ], + "description": "Track which keyword term a website visitor came from" + } + } +} diff --git a/packages/app-data/src/schemas/v0.1.0.json b/packages/app-data/src/schemas/v0.1.0.json new file mode 100644 index 000000000..2d17438e9 --- /dev/null +++ b/packages/app-data/src/schemas/v0.1.0.json @@ -0,0 +1,40 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.1.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.10.0.json b/packages/app-data/src/schemas/v0.10.0.json new file mode 100644 index 000000000..af27492d3 --- /dev/null +++ b/packages/app-data/src/schemas/v0.10.0.json @@ -0,0 +1,69 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.10.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.10.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.11.0.json b/packages/app-data/src/schemas/v0.11.0.json new file mode 100644 index 000000000..5dcd00f12 --- /dev/null +++ b/packages/app-data/src/schemas/v0.11.0.json @@ -0,0 +1,62 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.11.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.2.0.json b/packages/app-data/src/schemas/v0.2.0.json new file mode 100644 index 000000000..a8c2dd664 --- /dev/null +++ b/packages/app-data/src/schemas/v0.2.0.json @@ -0,0 +1,43 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.2.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.3.0.json b/packages/app-data/src/schemas/v0.3.0.json new file mode 100644 index 000000000..ebdd17689 --- /dev/null +++ b/packages/app-data/src/schemas/v0.3.0.json @@ -0,0 +1,55 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.3.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.3.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.4.0.json b/packages/app-data/src/schemas/v0.4.0.json new file mode 100644 index 000000000..5c215212f --- /dev/null +++ b/packages/app-data/src/schemas/v0.4.0.json @@ -0,0 +1,55 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.4.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.4.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.5.0.json b/packages/app-data/src/schemas/v0.5.0.json new file mode 100644 index 000000000..413e3c6d3 --- /dev/null +++ b/packages/app-data/src/schemas/v0.5.0.json @@ -0,0 +1,58 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.5.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.5.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.6.0.json b/packages/app-data/src/schemas/v0.6.0.json new file mode 100644 index 000000000..83db135cc --- /dev/null +++ b/packages/app-data/src/schemas/v0.6.0.json @@ -0,0 +1,61 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.6.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.6.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "utm": { + "$ref": "utm/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.7.0.json b/packages/app-data/src/schemas/v0.7.0.json new file mode 100644 index 000000000..f044f0d2e --- /dev/null +++ b/packages/app-data/src/schemas/v0.7.0.json @@ -0,0 +1,61 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.7.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "properties": { + "referrer": { + "$ref": "referrer/v0.1.0.json#" + }, + "utm": { + "$ref": "utm/v0.1.0.json#" + }, + "quote": { + "$ref": "quote/v0.2.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.2.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.8.0.json b/packages/app-data/src/schemas/v0.8.0.json new file mode 100644 index 000000000..9cb15c5fd --- /dev/null +++ b/packages/app-data/src/schemas/v0.8.0.json @@ -0,0 +1,63 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.8.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v0.9.0.json b/packages/app-data/src/schemas/v0.9.0.json new file mode 100644 index 000000000..c253f1d56 --- /dev/null +++ b/packages/app-data/src/schemas/v0.9.0.json @@ -0,0 +1,66 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.7.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.9.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v0.3.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v1.0.0.json b/packages/app-data/src/schemas/v1.0.0.json new file mode 100644 index 000000000..0add611c5 --- /dev/null +++ b/packages/app-data/src/schemas/v1.0.0.json @@ -0,0 +1,65 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v0.11.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.0.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v1.1.0.json b/packages/app-data/src/schemas/v1.1.0.json new file mode 100644 index 000000000..319227684 --- /dev/null +++ b/packages/app-data/src/schemas/v1.1.0.json @@ -0,0 +1,68 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": ["version", "metadata"], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "0.11.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.0.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v1.2.0.json b/packages/app-data/src/schemas/v1.2.0.json new file mode 100644 index 000000000..ad463b7b0 --- /dev/null +++ b/packages/app-data/src/schemas/v1.2.0.json @@ -0,0 +1,78 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.2.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "1.2.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.1.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.1.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} \ No newline at end of file diff --git a/packages/app-data/src/schemas/v1.3.0.json b/packages/app-data/src/schemas/v1.3.0.json new file mode 100644 index 000000000..10d614a3c --- /dev/null +++ b/packages/app-data/src/schemas/v1.3.0.json @@ -0,0 +1,78 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.3.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "1.3.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.1.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.2.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v0.1.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} diff --git a/packages/app-data/src/schemas/v1.4.0.json b/packages/app-data/src/schemas/v1.4.0.json new file mode 100644 index 000000000..a94a06f51 --- /dev/null +++ b/packages/app-data/src/schemas/v1.4.0.json @@ -0,0 +1,78 @@ +{ + "$id": "https://cowswap.exchange/schemas/app-data/v1.4.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "description": "Metadata JSON document for adding information to orders.", + "required": [ + "version", + "metadata" + ], + "title": "AppData Root Schema", + "type": "object", + "additionalProperties": false, + "properties": { + "version": { + "$ref": "definitions.json#/definitions/version", + "readOnly": true, + "default": "1.4.0" + }, + "appCode": { + "$id": "#/properties/appCode", + "description": "The code identifying the CLI, UI, service generating the order.", + "examples": [ + "CoW Swap" + ], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environment", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": [ + "production", + "development", + "staging", + "ens" + ] + }, + "metadata": { + "$id": "#/properties/metadata", + "default": {}, + "description": "Each metadata will specify one aspect of the order.", + "required": [], + "title": "Metadata", + "type": "object", + "additionalProperties": false, + "properties": { + "signer": { + "$ref": "signer/v0.1.0.json#" + }, + "referrer": { + "$ref": "referrer/v0.2.0.json#" + }, + "utm": { + "$ref": "utm/v0.2.0.json#" + }, + "quote": { + "$ref": "quote/v1.1.0.json#" + }, + "orderClass": { + "$ref": "orderClass/v0.3.0.json#" + }, + "hooks": { + "$ref": "hooks/v0.2.0.json#" + }, + "widget": { + "$ref": "widget/v0.1.0.json#" + }, + "partnerFee": { + "$ref": "partnerFee/v1.0.0.json#" + }, + "replacedOrder": { + "$ref": "replacedOrder/v0.1.0.json#" + } + } + } + } +} \ No newline at end of file diff --git a/packages/app-data/src/schemas/widget/v0.1.0.json b/packages/app-data/src/schemas/widget/v0.1.0.json new file mode 100644 index 000000000..b5f14f4b9 --- /dev/null +++ b/packages/app-data/src/schemas/widget/v0.1.0.json @@ -0,0 +1,24 @@ +{ + "$id": "#widget/v0.1.0.json", + "$schema": "http://json-schema.org/draft-07/schema", + "required": ["appCode"], + "title": "Widget", + "type": "object", + "additionalProperties": false, + "properties": { + "appCode": { + "$id": "#/properties/appCodeWidget", + "description": "The code identifying the UI powering the widget", + "examples": ["CoW Swap"], + "title": "App Code", + "type": "string" + }, + "environment": { + "$id": "#/properties/environmentWidget", + "description": "Environment from which the order came from.", + "title": "Environment", + "type": "string", + "examples": ["production", "development", "staging", "ens"] + } + } +} diff --git a/packages/app-data/src/scripts/compile.ts b/packages/app-data/src/scripts/compile.ts new file mode 100644 index 000000000..c775dba56 --- /dev/null +++ b/packages/app-data/src/scripts/compile.ts @@ -0,0 +1,136 @@ +import * as fs from 'fs' +import $RefParser from 'json-schema-ref-parser' +import { compileFromFile } from 'json-schema-to-typescript' +import * as path from 'path' +import semverSort from 'semver-sort' + +const SCHEMAS_SRC_PATH = path.join('src', 'schemas') +const SCHEMAS_DEST_PATH = 'schemas' +const TYPES_DEST_PATH = path.join('src', 'generatedTypes') + +async function compile(): Promise { + // Creates destinations dirs + console.info(`Creating '${TYPES_DEST_PATH}' and '${SCHEMAS_DEST_PATH}' dirs`) + await fs.promises.mkdir(TYPES_DEST_PATH, { recursive: true }) + await fs.promises.mkdir(SCHEMAS_DEST_PATH) + + // Generates out file for types/index.ts + const typesIndexPath = path.join(TYPES_DEST_PATH, 'index.ts') + console.info(`Creating ${typesIndexPath} file`) + const typesIndexFile = await fs.promises.open(typesIndexPath, 'w') + + // Generates out file for types/latest.ts + const latestIndexPath = path.join(TYPES_DEST_PATH, 'latest.ts') + const latestIndexFile = await fs.promises.open(latestIndexPath, 'w') + + const generatedFiles = [typesIndexFile, latestIndexFile] + await generatedFiles.forEach(async (file) => { + file.write(`// generated file, do not edit manually\n\n`) + }) + + // Lists all schemas + const schemas = await fs.promises.readdir(SCHEMAS_SRC_PATH, { withFileTypes: true }) + const versions: string[] = [] + + for (const schemaFileName of schemas) { + // Ignores folders and non version schemas + if (!schemaFileName.isFile() || !/^v\d+\.\d+\.\d+\.json$/.test(schemaFileName.name)) continue + + // Extracts version from file name + const [version] = schemaFileName.name.split('.json') + versions.push(version) + + // Get schema path relative to repo root + const schemaPath = path.join(SCHEMAS_SRC_PATH, schemaFileName.name) + + // Compiles schema files de-referencing `$ref`s + console.info(`Compiling bundled schema file for ${schemaPath}`) + const newSchemaFile = await $RefParser.bundle(schemaPath) + await fs.promises.writeFile(path.join(SCHEMAS_DEST_PATH, `${version}.json`), JSON.stringify(newSchemaFile)) + + // Compiles schema onto ts type declarations + console.info(`Compiling ts typings for ${schemaPath}`) + const tsFile = await compileFromFile(schemaPath, { cwd: SCHEMAS_SRC_PATH }) + await fs.promises.writeFile(path.join(TYPES_DEST_PATH, `${version}.ts`), tsFile) + + // Add export on types/index.ts for this version + console.info(`Adding ts export for ${version}`) + const exportName = version.replace(/\./g, '_') + const versionImportPath = `./${version}` + await typesIndexFile.write(`import * as ${exportName} from '${versionImportPath}'\n`) + } + + // Select latest version and also expose all versions + if (versions.length) { + const latest = semverSort.desc(versions)[0] + const latestExport = versionNameToExport(latest) + const allVersions = versions.map((version) => `\n | ${versionNameToExport(version)}.AppDataRootSchema`).join('') + const latestQuoteVersion = await getLatestMetadataDocVersion('quote') + const latestReferrerVersion = await getLatestMetadataDocVersion('referrer') + const latestOrderClassVersion = await getLatestMetadataDocVersion('orderClass') + const latestUtmVersion = await getLatestMetadataDocVersion('utm') + const latestHooksVersion = await getLatestMetadataDocVersion('hooks') + const latestSignerVersion = await getLatestMetadataDocVersion('signer') + const latestWidgetVersion = await getLatestMetadataDocVersion('widget') + const latestPartnerFeeVersion = await getLatestMetadataDocVersion('partnerFee') + const latestReplacedOrderVersion = await getLatestMetadataDocVersion('replacedOrder') + + const additionalTypesExport = ` +export * from './latest' + +export const LATEST_APP_DATA_VERSION = '${extractSemver(latest)}' +export const LATEST_QUOTE_METADATA_VERSION = '${extractSemver(latestQuoteVersion)}' +export const LATEST_REFERRER_METADATA_VERSION = '${extractSemver(latestReferrerVersion)}' +export const LATEST_ORDER_CLASS_METADATA_VERSION = '${extractSemver(latestOrderClassVersion)}' +export const LATEST_UTM_METADATA_VERSION = '${extractSemver(latestUtmVersion)}' +export const LATEST_HOOKS_METADATA_VERSION = '${extractSemver(latestHooksVersion)}' +export const LATEST_SIGNER_METADATA_VERSION = '${extractSemver(latestSignerVersion)}' +export const LATEST_WIDGET_METADATA_VERSION = '${extractSemver(latestWidgetVersion)}' +export const LATEST_PARTNER_FEE_METADATA_VERSION = '${extractSemver(latestPartnerFeeVersion)}' +export const LATEST_REPLACED_ORDER_METADATA_VERSION = '${extractSemver(latestReplacedOrderVersion)}' + +export type LatestAppDataDocVersion = ${latestExport}.AppDataRootSchema +export type AnyAppDataDocVersion = ${allVersions} + +export {${versions.map((version) => `\n ${versionNameToExport(version)}`)} +} +` + // Writes exports to types/index.ts + await typesIndexFile.write(additionalTypesExport) + + // Writes exports to types/latest.ts + await latestIndexFile.write(`export * as latest from './${latest}'\n`) + } + + // Closes all files + for (const file of generatedFiles) { + await file.close() + } +} + +compile().then(() => console.log('Done')) + +function versionNameToExport(name: string): string { + return name.replace(/\./g, '_') +} + +function extractSemver(name: string): string { + return /(\d+\.\d+\.\d+)/.exec(name)?.[0] || '' +} + +async function getLatestMetadataDocVersion( + metadataDocName: + | 'quote' + | 'referrer' + | 'orderClass' + | 'utm' + | 'hooks' + | 'signer' + | 'widget' + | 'partnerFee' + | 'replacedOrder' +): Promise { + const metadataPath = path.join(SCHEMAS_SRC_PATH, metadataDocName) + const versions = await fs.promises.readdir(metadataPath) + return semverSort.desc(versions)[0] +} diff --git a/packages/app-data/src/types.ts b/packages/app-data/src/types.ts new file mode 100644 index 000000000..4a288a33d --- /dev/null +++ b/packages/app-data/src/types.ts @@ -0,0 +1,50 @@ +import { latest } from './generatedTypes' + +export type AppDataParams = Partial> + +export type AppDataInfo = { + /** + * IPFS's content identifier. + * + * App-data content can be uploaded to IPFS. If its uploaded, this CID will be the content identifier. + * This is a way to be able to connect the appDataHex (app-data hex part of the order struct) to its content using a decentralized system. + * + * See https://docs.ipfs.io/concepts/content-addressing/#identifier-formats + */ + cid: string + + /** + * Full appData content. + * + * It will be the exact string that if hashed using keccak-256 you would get the returned appDataHex (app-data hex part of the order struct). + * + * It's a JSON that can be parsed to create the document following the schemas defined in https://github.com/cowprotocol/app-data + * It contains all the meta-data related to an order. + */ + appDataContent: string + + /** + * appData hex for CoW Orders. Its value is the multihash part of the IPFS CID, therefore it points to a IPFS document. + * Because its just the multihash, it doesn't have any infomation regarding the encoding and hashing algorithm. These parts are implicit. + * + * Currently, the implicit encoding is base16 and the implicit hashing algorithm is keccak256. + * See https://github.com/cowprotocol/app-data/blob/app-data-v1/src/api/appDataToCid.ts#L102 + * + * Previous versions used a different encoding and hashing algorithm (base58btc, dag-pb, sha2-256) + * + */ + appDataHex: string +} + +export interface Ipfs { + uri?: string + writeUri?: string + readUri?: string + pinataApiKey?: string + pinataApiSecret?: string +} + +export type ValidationResult = { + success: boolean + errors?: string +} diff --git a/packages/app-data/src/utils/ipfs.ts b/packages/app-data/src/utils/ipfs.ts new file mode 100644 index 000000000..86245200d --- /dev/null +++ b/packages/app-data/src/utils/ipfs.ts @@ -0,0 +1,36 @@ +import type { CID, MultibaseDecoder } from 'multiformats/cid' + +// CID uses multibase to self-describe the encoding used (See https://github.com/multiformats/multibase) +// - Most reference implementations (multiformats/cid or Pinata, etc) use base58btc encoding +// - However, the backend uses base16 encoding (See https://github.com/cowprotocol/services/blob/main/crates/app-data-hash/src/lib.rs#L64) +const MULTIBASE_BASE16 = 'f' + +export async function parseCid(ipfsHash: string): Promise { + const { CID } = await import('multiformats/cid') + + const decoder = await getDecoder(ipfsHash) + return CID.parse(ipfsHash, decoder) +} + +export async function decodeCid(bytes: Uint8Array): Promise { + const { CID } = await import('multiformats/cid') + return CID.decode(bytes) +} + +async function getDecoder(ipfsHash: string): Promise | undefined> { + if (ipfsHash[0] === MULTIBASE_BASE16) { + // Base 16 encoding + const { base16 } = await import('multiformats/bases/base16') + return base16 + } + + // Use default decoder (base58btc) + return undefined +} + +export async function extractDigest(cid: string): Promise { + const cidDetails = await parseCid(cid) + const { digest } = cidDetails.multihash + + return `0x${Buffer.from(digest).toString('hex')}` +} diff --git a/packages/app-data/src/utils/stringify.ts b/packages/app-data/src/utils/stringify.ts new file mode 100644 index 000000000..68f1825f7 --- /dev/null +++ b/packages/app-data/src/utils/stringify.ts @@ -0,0 +1,4 @@ +export async function stringifyDeterministic(obj: any): Promise { + const { default: stringify } = await import('json-stringify-deterministic') + return stringify(obj) +} diff --git a/packages/app-data/src/workflows/publish.sh b/packages/app-data/src/workflows/publish.sh new file mode 100755 index 000000000..7bc1aa543 --- /dev/null +++ b/packages/app-data/src/workflows/publish.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +set -o nounset +set -o pipefail +set -o errexit + +fail_if_unset() { + local var_name="$1" + if [[ -z "${!var_name:-""}" ]]; then + printf '%s not set\n' "$var_name" >&2 + exit 1 + fi +} + +package_exists() { + npm view --json "$1" &>/dev/null +} + +fail_if_unset NODE_AUTH_TOKEN + +package_name="$(jq --raw-output .name ./package.json)" +version="$(jq --raw-output .version ./package.json)" + +if package_exists "$package_name" && grep --silent --line-regexp --fixed-strings -- "$version" \ + <(npm view --json "$package_name" | jq '.versions[] | .' --raw-output); then + echo "Version $version already published" + exit 1 +fi + +version_tag="v$version" +if ! git fetch --end-of-options origin "refs/tags/$version_tag" 2>/dev/null; then + echo "Tag $version_tag is not created. Create the Release first." + exit 1 +fi + +latest_tag="$(git describe --tags --abbrev=0)" +if ! [ "$version_tag" = "$latest_tag" ]; then + echo "Latest tag $latest_tag version doesn't match package.json version $version" + exit 1 +fi + +npm publish --access public + +echo "Package $package_name version $version successfully published." diff --git a/packages/app-data/test/schema.spec.ts b/packages/app-data/test/schema.spec.ts new file mode 100644 index 000000000..d679f53d5 --- /dev/null +++ b/packages/app-data/test/schema.spec.ts @@ -0,0 +1,1181 @@ +import Ajv, { ValidateFunction } from 'ajv' + +import schemaV0_1_0 from '../schemas/v0.1.0.json' +import schemaV0_10_0 from '../schemas/v0.10.0.json' +import schemaV0_11_0 from '../schemas/v0.11.0.json' +import schemaV0_2_0 from '../schemas/v0.2.0.json' +import schemaV0_3_0 from '../schemas/v0.3.0.json' +import schemaV0_4_0 from '../schemas/v0.4.0.json' +import schemaV0_5_0 from '../schemas/v0.5.0.json' +import schemaV0_6_0 from '../schemas/v0.6.0.json' +import schemaV0_9_0 from '../schemas/v0.9.0.json' +import schemaV1_0_0 from '../schemas/v1.0.0.json' +import schemaV1_1_0 from '../schemas/v1.1.0.json' +import schemaV1_2_0 from '../schemas/v1.2.0.json' +import schemaV1_4_0 from '../schemas/v1.4.0.json' + +const ADDRESS = '0xb6BAd41ae76A11D10f7b0E664C5007b908bC77C9' +const REFERRER_V0_1_0 = { address: ADDRESS, version: '0.1.0' } +const REFERRER_V0_2_0 = { address: ADDRESS } +const ORDER_CLASS_V0_1_0 = { orderClass: 'limit', version: '0.1.0' } +const ORDER_CLASS_V0_3_0 = { orderClass: 'twap' } +const QUOTE_V0_1_0 = { sellAmount: '123123', buyAmount: '1314123', version: '0.1.0' } +const QUOTE_V0_2_0 = { slippageBips: '1', version: '0.2.0' } +const QUOTE_V0_3_0 = { slippageBips: '1' } +const UTM_V0_2_0 = { + utmSource: 'google', + utmMedium: 'cpc', + utmCampaign: 'campaign', + utmContent: 'content', +} + +const MISSING_VERSION_ERROR = [ + { + instancePath: '', + keyword: 'required', + message: "must have required property 'version'", + params: { missingProperty: 'version' }, + schemaPath: '#/required', + }, +] + +describe('Schema v0.1.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_1_0) + + const BASE_DOCUMENT = { + version: '0.1.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With referrer metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + }, + }) + ) + + test( + 'With invalid referrer metadata', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: { address: '0xas', version: '0.1.0' }, + }, + }, + [ + { + instancePath: '/metadata/referrer/address', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/referrer/properties/address/pattern', + }, + ] + ) + ) +}) + +describe('Schema v0.2.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_2_0) + + const BASE_DOCUMENT = { + version: '0.2.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With referrer v0.1.0 and quote v0.1.0 metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }) + ) + + test( + 'With invalid quote metadata v0.1.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + metadata: { + referrer: REFERRER_V0_1_0, + quote: { sellAmount: 'xx12d', buyAmount: 0.13, version: '0.1.0' }, + }, + }, + [ + { + instancePath: '/metadata/quote/sellAmount', + keyword: 'pattern', + message: 'must match pattern "^\\d+$"', + params: { pattern: '^\\d+$' }, + schemaPath: '#/properties/metadata/properties/quote/properties/buyAmount/pattern', + }, + ] + ) + ) +}) + +describe('Schema v0.3.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_3_0) + + const BASE_DOCUMENT = { + version: '0.3.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With environment and full metadata (both v0.1.0)', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }) + ) +}) + +describe('Schema v0.4.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_4_0) + + const BASE_DOCUMENT = { + version: '0.4.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With quote metadata v0.2.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + }, + }) + ) + + test( + 'With invalid quote metadata v0.2.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_1_0, + }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) +}) + +describe('Schema v0.5.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_5_0) + + const BASE_DOCUMENT = { + version: '0.5.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('Missing required fields', _buildAssertInvalidFn(validator, {}, MISSING_VERSION_ERROR)) + + test( + 'With order class v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + orderClass: ORDER_CLASS_V0_1_0, + }, + }) + ) + + test( + 'With invalid order class v0.1.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + appCode: 'MyApp', + environment: 'prod', + metadata: { + referrer: REFERRER_V0_1_0, + quote: QUOTE_V0_2_0, + orderClass: { orderClass: 'mooo', version: '0.1.0' }, // Invalid value + }, + }, + [ + { + instancePath: '/metadata/orderClass/orderClass', + keyword: 'enum', + message: 'must be equal to one of the allowed values', + params: { allowedValues: ['market', 'limit', 'liquidity'] }, + schemaPath: '#/properties/metadata/properties/orderClass/properties/orderClass/enum', + }, + ] + ) + ) +}) + +describe('Schema v0.6.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_6_0) + + const BASE_DOCUMENT = { + version: '0.6.0', + metadata: {}, + } + + test( + 'UTM Source', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmSource: 'twitter', + }, + }) + ) + + test( + 'UTM Medium', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmMedium: 'email', + }, + }) + ) + + test( + 'UTM Campaign', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmCampaign: 'everyone-loves-cows-2023', + }, + }) + ) + + test( + 'UTM Content', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmContent: 'big-fat-button', + }, + }) + ) + + test( + 'UTM Term', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmTerm: 'coincidence+of+wants', + }, + }) + ) + + test( + 'UTM all at once', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + utmSource: 'twitter', + utmMedium: 'email', + utmCampaign: 'everyone-loves-cows-2023', + utmContent: 'big-fat-button', + utmTerm: 'coincidence+of+wants', + }, + }) + ) +}) + +describe('Schema v0.9.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_9_0) + + const BASE_DOCUMENT = { + version: '0.9.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With minimal hooks v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { hooks: {} }, + }) + ) + + test( + 'With pre-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With post-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With pre- and post-hooks', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + ], + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With hooks and full metadata', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + quote: QUOTE_V0_3_0, + referrer: REFERRER_V0_2_0, + orderClass: ORDER_CLASS_V0_3_0, + utm: UTM_V0_2_0, + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x01020304', + gasLimit: '10000', + }, + ], + post: [ + { + target: '0x0102030405060708091011121314151617181920', + callData: '0x', + gasLimit: '10000', + }, + ], + }, + }, + }) + ) + + test( + 'With missing required hook fields', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + hooks: { + pre: [ + { + target: '0x0102030405060708091011121314151617181920', + gasLimit: '10000', + }, + ], + }, + }, + }, + [ + { + instancePath: '/metadata/hooks/pre/0', + keyword: 'required', + message: "must have required property 'callData'", + params: { missingProperty: 'callData' }, + schemaPath: '#/properties/metadata/properties/hooks/properties/pre/items/required', + }, + ] + ) + ) +}) + +describe('Schema v0.10.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_10_0) + + const BASE_DOCUMENT = { + version: '0.10.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With signer v0.1.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { signer: ADDRESS }, + }) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: '0xinvalid', + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/signer/pattern', + }, + ] + ) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: { address: ADDRESS }, + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'type', + message: 'must be string', + params: { type: 'string' }, + schemaPath: '#/properties/metadata/properties/signer/type', + }, + ] + ) + ) +}) + +describe('Schema v0.11.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV0_11_0) + + const BASE_DOCUMENT = { + version: '0.11.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'With widget v0.11.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { widget: { appCode: 'Pig Swap', environment: 'production' } }, + }) + ) + + test( + 'With widget and no environment v0.11.0', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { widget: { appCode: 'Pig Swap' } }, + }) + ) + + test( + 'Widget with no appCode v0.11.0', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + widget: { + environment: 'production', + }, + }, + }, + [ + { + instancePath: '/metadata/widget', + keyword: 'required', + message: "must have required property 'appCode'", + params: { missingProperty: 'appCode' }, + schemaPath: '#/properties/metadata/properties/widget/required', + }, + ] + ) + ) + + test( + 'Signer with invalid address', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { + signer: '0xinvalid', + }, + }, + [ + { + instancePath: '/metadata/signer', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{40}$"', + params: { pattern: '^0x[a-fA-F0-9]{40}$' }, + schemaPath: '#/properties/metadata/properties/signer/pattern', + }, + ] + ) + ) +}) + +describe('Schema v1.0.0: Add partner fee', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_0_0) + + const BASE_DOCUMENT = { + version: '1.0.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'Valid partner fee', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 50, recipient: ADDRESS } }, + }) + ) + + test( + 'Valid zero partner fee', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 0, recipient: ADDRESS } }, + }) + ) + + test( + 'Invalid partner fee: missing bps', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee', + keyword: 'required', + message: "must have required property 'bps'", + params: { missingProperty: 'bps' }, + schemaPath: '#/properties/metadata/properties/partnerFee/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing recipient', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 50 } }, + }, + [ + { + instancePath: '/metadata/partnerFee', + keyword: 'required', + message: "must have required property 'recipient'", + params: { missingProperty: 'recipient' }, + schemaPath: '#/properties/metadata/properties/partnerFee/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: BIPs is too low (negative)', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: -1, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'minimum', + message: 'must be >= 0', + params: { + comparison: '>=', + limit: 0, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/minimum', + }, + ] + ) + ) + + test( + 'Invalid partner fee: BIPs is too high (over 100%)', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 10001, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'maximum', + message: 'must be <= 10000', + params: { + comparison: '<=', + limit: 10000, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/maximum', + }, + ] + ) + ) + + test( + "Invalid partner fee: BIPs don't allow decimals", + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 10.5, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee/bps', + keyword: 'type', + message: 'must be integer', + params: { + type: 'integer', + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/type', + }, + ] + ) + ) +}) + +describe('Schema v1.0.0: Update quote definition', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_0_0) + + const BASE_DOCUMENT = { + version: '1.0.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'Valid quote', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 50 } }, + }) + ) + + test( + 'Valid quote, with zero slippage', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 0 } }, + }) + ) + + test( + 'Valid quote, with maximum slippage (10,000)', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 10000 } }, + }) + ) + + test( + 'Invalid partner fee: unknown field', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: {} }, + }, + [ + { + instancePath: '/metadata/quote', + keyword: 'required', + message: "must have required property 'slippageBips'", + params: { missingProperty: 'slippageBips' }, + schemaPath: '#/properties/metadata/properties/quote/required', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: -1 } }, + }, + [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'minimum', + message: 'must be >= 0', + params: { + comparison: '>=', + limit: 0, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/minimum', + }, + ] + ) + ) + + test( + 'Invalid partner fee: missing slippageBips', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { quote: { slippageBips: 100001 } }, + }, + [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'maximum', + message: 'must be <= 10000', + params: { + comparison: '<=', + limit: 10000, + }, + schemaPath: '#/properties/metadata/properties/partnerFee/properties/bps/maximum', + }, + ] + ) + ) +}) + +describe('Schema v1.1.0: Add replaced order', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_1_0) + + const BASE_DOCUMENT = { + version: '1.1.0', + metadata: {}, + } + + test( + 'Valid order id', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + replacedOrder: { + uid: '0xff2e2e54d178997f173266817c1e9ed6fee1a1aae4b43971c53b543cffcc2969845c6f5599fbb25dbdd1b9b013daf85c03f3c63763e4bc4a', + }, + }, + }) + ) + + test( + 'Invalid order id length', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { replacedOrder: { uid: '0xgogogog' } }, + }, + [ + { + instancePath: '/metadata/replacedOrder/uid', + keyword: 'pattern', + message: 'must match pattern "^0x[a-fA-F0-9]{112}$"', + params: { pattern: '^0x[a-fA-F0-9]{112}$' }, + schemaPath: '#/properties/metadata/properties/replacedOrder/properties/uid/pattern', + }, + ] + ) + ) + + test( + 'Invalid order id length', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { replacedOrder: {} }, + }, + [ + { + instancePath: '/metadata/replacedOrder', + keyword: 'required', + message: "must have required property 'uid'", + params: { missingProperty: 'uid' }, + schemaPath: '#/properties/metadata/properties/replacedOrder/required', + }, + ] + ) + ) +}) + +describe('Schema v1.2.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_2_0) + + const BASE_DOCUMENT = { + version: '1.2.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test('With quote metadata v1.1.0', () => { + const validQuote = { + slippageBips: 5, + smartSlippage: true, + } + + const validDocument = { + ...BASE_DOCUMENT, + metadata: { + quote: validQuote, + }, + } + + expect(validator(validDocument)).toBe(true) + }) + + test('With valid metadata (without smartSlippage)', () => { + const quote = { + slippageBips: 5, + } + + const validDocument = { + ...BASE_DOCUMENT, + metadata: { + quote, + }, + } + + expect(validator(validDocument)).toBe(true) + }) + + test('With invalid quote metadata (invalid slippageBips)', () => { + const invalidQuote = { + slippageBips: 'invalid', + smartSlippage: true, + } + + const invalidDocument = { + ...BASE_DOCUMENT, + metadata: { + quote: invalidQuote, + }, + } + + const errors = [ + { + instancePath: '/metadata/quote/slippageBips', + keyword: 'pattern', + message: 'must match pattern "^\\d+$"', + params: { pattern: '^\\d+$' }, + schemaPath: '#/properties/metadata/properties/quote/properties/slippageBips/pattern', + }, + ] + + expect(_buildAssertInvalidFn(validator, invalidDocument, errors)).toBeTruthy() + }) +}) + +describe('Schema v1.4.0: Upgrade partnerFee metadata to 1.0.0', () => { + const ajv = new Ajv() + const validator = ajv.compile(schemaV1_4_0) + + const BASE_DOCUMENT = { + version: '1.4.0', + metadata: {}, + } + + test('Minimal valid schema', _buildAssertValidFn(validator, BASE_DOCUMENT)) + + test( + 'Valid volume partner fee obj', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { volumeBps: 100, recipient: ADDRESS } }, + }) + ) + test( + 'Valid volume partner fee array', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: [{ volumeBps: 100, recipient: ADDRESS }] }, + }) + ) + + test( + 'Valid surplus fee obj', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { maxVolumeBps: 100, surplusBps: 100, recipient: ADDRESS } }, + }) + ) + + test( + 'Valid surplus fee array', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: [{ maxVolumeBps: 100, surplusBps: 100, recipient: ADDRESS }] }, + }) + ) + + test( + 'Valid price improvement fee obj', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: { maxVolumeBps: 100, priceImprovementBps: 100, recipient: ADDRESS } }, + }) + ) + + test( + 'Valid price improvement fee array', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { partnerFee: [{ maxVolumeBps: 100, priceImprovementBps: 100, recipient: ADDRESS }] }, + }) + ) + + test( + 'Valid multiple partner fees', + _buildAssertValidFn(validator, { + ...BASE_DOCUMENT, + metadata: { + partnerFee: [ + { volumeBps: 100, recipient: ADDRESS }, + { maxVolumeBps: 100, surplusBps: 100, recipient: ADDRESS }, + { maxVolumeBps: 100, priceImprovementBps: 100, recipient: ADDRESS }, + ], + }, + }) + ) + + test( + 'Invalid partner fee. Pure BPS no longer allowed', + _buildAssertInvalidFn( + validator, + { + ...BASE_DOCUMENT, + metadata: { partnerFee: { bps: 50, recipient: ADDRESS } }, + }, + [ + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/properties/metadata/properties/partnerFee/oneOf/0/type', + keyword: 'type', + params: { + type: 'array', + }, + message: 'must be array', + }, + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/oneOf/0/required', + keyword: 'required', + params: { + missingProperty: 'volumeBps', + }, + message: "must have required property 'volumeBps'", + }, + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/oneOf/1/required', + keyword: 'required', + params: { + missingProperty: 'surplusBps', + }, + message: "must have required property 'surplusBps'", + }, + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/oneOf/2/required', + keyword: 'required', + params: { + missingProperty: 'priceImprovementBps', + }, + message: "must have required property 'priceImprovementBps'", + }, + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/oneOf', + keyword: 'oneOf', + params: { + passingSchemas: null, + }, + message: 'must match exactly one schema in oneOf', + }, + { + instancePath: '/metadata/partnerFee', + schemaPath: '#/properties/metadata/properties/partnerFee/oneOf', + keyword: 'oneOf', + params: { + passingSchemas: null, + }, + message: 'must match exactly one schema in oneOf', + }, + ] + ) + ) +}) + +function _buildAssertValidFn(validator: ValidateFunction, doc: any) { + return () => { + // when + const actual = validator(doc) + // then + expect(validator.errors).toBeFalsy() + expect(actual).toBeTruthy() + } +} + +function _buildAssertInvalidFn(validator: ValidateFunction, doc: any, errors: any) { + return () => { + // when + const actual = validator(doc) + // then + expect(actual).toBeFalsy() + expect(validator.errors).toEqual(errors) + } +} diff --git a/packages/app-data/tsconfig.json b/packages/app-data/tsconfig.json new file mode 100644 index 000000000..826a5b38a --- /dev/null +++ b/packages/app-data/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "moduleResolution": "node", + "module": "ESNext", + "target": "ESNext", + "strict": true, + "alwaysStrict": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true, + "skipLibCheck": true, + "baseUrl": "src" + } +} From 7601c217047a4fe50da0d3416b4ed9b07a8a50b7 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Tue, 27 May 2025 18:08:18 -0300 Subject: [PATCH 08/33] feat: add typescript-config --- packages/typescript-config/base.json | 19 +++++++++++++++++++ packages/typescript-config/package.json | 8 ++++++++ 2 files changed, 27 insertions(+) create mode 100644 packages/typescript-config/base.json create mode 100644 packages/typescript-config/package.json diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json new file mode 100644 index 000000000..ee44aeaea --- /dev/null +++ b/packages/typescript-config/base.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "incremental": false, + "isolatedModules": true, + "lib": ["es2022"], + "module": "NodeNext", + "moduleDetection": "force", + "moduleResolution": "NodeNext", + "noUncheckedIndexedAccess": true, + "resolveJsonModule": true, + "skipLibCheck": false, + "strict": true, + "target": "ES2022" + } +} diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json new file mode 100644 index 000000000..af0631c87 --- /dev/null +++ b/packages/typescript-config/package.json @@ -0,0 +1,8 @@ +{ + "name": "@repo/typescript-config", + "version": "0.0.0", + "private": true, + "files": [ + "base.json" + ] +} From 5e99f36ddf1d8380a6ed136a51a7a1ecc4870396 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Tue, 27 May 2025 18:12:35 -0300 Subject: [PATCH 09/33] feat: create common package with abstract adapter and context classes --- packages/common/package.json | 25 ++++++++++++ .../src/adapters/AbstractProviderAdapter.ts | 14 +++++++ packages/common/src/adapters/context.ts | 40 +++++++++++++++++++ packages/common/src/adapters/index.ts | 3 ++ .../common/src/adapters/types/AdapterUtils.ts | 22 ++++++++++ packages/common/src/adapters/types/index.ts | 7 ++++ packages/common/src/index.ts | 6 +++ packages/common/tsconfig.json | 9 +++++ 8 files changed, 126 insertions(+) create mode 100644 packages/common/package.json create mode 100644 packages/common/src/adapters/AbstractProviderAdapter.ts create mode 100644 packages/common/src/adapters/context.ts create mode 100644 packages/common/src/adapters/index.ts create mode 100644 packages/common/src/adapters/types/AdapterUtils.ts create mode 100644 packages/common/src/adapters/types/index.ts create mode 100644 packages/common/src/index.ts create mode 100644 packages/common/tsconfig.json diff --git a/packages/common/package.json b/packages/common/package.json new file mode 100644 index 000000000..a3aa435ad --- /dev/null +++ b/packages/common/package.json @@ -0,0 +1,25 @@ +{ + "name": "@cowprotocol/sdk-common", + "version": "0.1.0", + "description": "Common utilities and types for CoW Protocol SDK", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "sideEffects": false, + "license": "MIT", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "devDependencies": { + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.17.31", + "eslint": "^8.48.0", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + } +} diff --git a/packages/common/src/adapters/AbstractProviderAdapter.ts b/packages/common/src/adapters/AbstractProviderAdapter.ts new file mode 100644 index 000000000..a2d0cd0bb --- /dev/null +++ b/packages/common/src/adapters/AbstractProviderAdapter.ts @@ -0,0 +1,14 @@ +import type { AdapterTypes, AdapterUtils } from './types' + +/** + * AbstractProviderAdapter defines the common interface that all provider-specific + * implementations must follow. This ensures consistent interaction with different + * Ethereum libraries throughout the SDK. + */ +export abstract class AbstractProviderAdapter { + public abstract utils: AdapterUtils + + // Core functionality + abstract getChainId(): Promise + abstract getAddress(): Promise +} diff --git a/packages/common/src/adapters/context.ts b/packages/common/src/adapters/context.ts new file mode 100644 index 000000000..9d69b474b --- /dev/null +++ b/packages/common/src/adapters/context.ts @@ -0,0 +1,40 @@ +import { AbstractProviderAdapter } from './AbstractProviderAdapter' + +// Shared global context between all packages +export class AdapterContext { + private static _instance: AdapterContext + private _adapter?: AbstractProviderAdapter + + private constructor() {} + + public static getInstance(): AdapterContext { + if (!AdapterContext._instance) { + AdapterContext._instance = new AdapterContext() + } + return AdapterContext._instance + } + + public setAdapter(adapter: AbstractProviderAdapter): void { + this._adapter = adapter + } + + public getAdapter(): AbstractProviderAdapter { + if (!this._adapter) { + throw new Error( + 'Provider adapter is not configurated. Configure with CowSdk or using AdapterContext.getInstance().setAdapter()', + ) + } + return this._adapter + } +} + +// Utility to get the global adapter +export function getGlobalAdapter(): AbstractProviderAdapter { + return AdapterContext.getInstance().getAdapter() +} + +// Utility to set the global adapter +export function setGlobalAdapter(adapter: AbstractProviderAdapter): void { + const instance = AdapterContext.getInstance() + instance.setAdapter(adapter) +} diff --git a/packages/common/src/adapters/index.ts b/packages/common/src/adapters/index.ts new file mode 100644 index 000000000..cbc2e91cf --- /dev/null +++ b/packages/common/src/adapters/index.ts @@ -0,0 +1,3 @@ +export * from './AbstractProviderAdapter' +export * from './types' +export * from './context' diff --git a/packages/common/src/adapters/types/AdapterUtils.ts b/packages/common/src/adapters/types/AdapterUtils.ts new file mode 100644 index 000000000..f7627cda8 --- /dev/null +++ b/packages/common/src/adapters/types/AdapterUtils.ts @@ -0,0 +1,22 @@ +import { Bytes } from '.' + +/** + * Abstract class defining the interface for adapter utilities + * Based on the EthersV6Utils implementation + */ +export abstract class AdapterUtils { + /** + * Converts a string to UTF-8 bytes + */ + abstract toUtf8Bytes(text: string): Uint8Array + + /** + * Computes the keccak256 hash of data + */ + abstract keccak256(data: Bytes): string + + /** + * Converts a hex string to a Uint8Array + */ + abstract arrayify(hexString: string): Uint8Array +} diff --git a/packages/common/src/adapters/types/index.ts b/packages/common/src/adapters/types/index.ts new file mode 100644 index 000000000..449e66e80 --- /dev/null +++ b/packages/common/src/adapters/types/index.ts @@ -0,0 +1,7 @@ +export * from './AdapterUtils' + +export type Bytes = unknown + +export type AdapterTypes = { + Bytes: Bytes +} diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts new file mode 100644 index 000000000..c13c48132 --- /dev/null +++ b/packages/common/src/index.ts @@ -0,0 +1,6 @@ +/** + * Common utilities and types for CoW Protocol SDK + * @module @cowprotocol/sdk-common + */ + +export * from './adapters' diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json new file mode 100644 index 000000000..04c584564 --- /dev/null +++ b/packages/common/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "baseUrl": "src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} From 1231f7c1809fd497d15e8945b880a9c3da6fa6b4 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Tue, 27 May 2025 18:52:58 -0300 Subject: [PATCH 10/33] feat: implement adapters for ethers v5, ethers v6, and viem --- .../providers/ether-v5-adapter/package.json | 32 +++++++++++++ .../ether-v5-adapter/src/EthersV5Adapter.ts | 47 +++++++++++++++++++ .../ether-v5-adapter/src/EthersV5Utils.ts | 16 +++++++ .../providers/ether-v5-adapter/src/index.ts | 1 + .../providers/ether-v5-adapter/tsconfig.json | 9 ++++ .../providers/ether-v6-adapter/package.json | 30 ++++++++++++ .../ether-v6-adapter/src/EthersV6Adapter.ts | 44 +++++++++++++++++ .../ether-v6-adapter/src/EthersV6Utils.ts | 30 ++++++++++++ .../providers/ether-v6-adapter/src/index.ts | 1 + .../providers/ether-v6-adapter/tsconfig.json | 9 ++++ packages/providers/viem-adapter/package.json | 30 ++++++++++++ .../providers/viem-adapter/src/ViemAdapter.ts | 40 ++++++++++++++++ .../providers/viem-adapter/src/ViemUtils.ts | 16 +++++++ packages/providers/viem-adapter/src/index.ts | 1 + packages/providers/viem-adapter/tsconfig.json | 9 ++++ pnpm-workspace.yaml | 2 + 16 files changed, 317 insertions(+) create mode 100644 packages/providers/ether-v5-adapter/package.json create mode 100644 packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts create mode 100644 packages/providers/ether-v5-adapter/src/EthersV5Utils.ts create mode 100644 packages/providers/ether-v5-adapter/src/index.ts create mode 100644 packages/providers/ether-v5-adapter/tsconfig.json create mode 100644 packages/providers/ether-v6-adapter/package.json create mode 100644 packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts create mode 100644 packages/providers/ether-v6-adapter/src/EthersV6Utils.ts create mode 100644 packages/providers/ether-v6-adapter/src/index.ts create mode 100644 packages/providers/ether-v6-adapter/tsconfig.json create mode 100644 packages/providers/viem-adapter/package.json create mode 100644 packages/providers/viem-adapter/src/ViemAdapter.ts create mode 100644 packages/providers/viem-adapter/src/ViemUtils.ts create mode 100644 packages/providers/viem-adapter/src/index.ts create mode 100644 packages/providers/viem-adapter/tsconfig.json diff --git a/packages/providers/ether-v5-adapter/package.json b/packages/providers/ether-v5-adapter/package.json new file mode 100644 index 000000000..d497e6b36 --- /dev/null +++ b/packages/providers/ether-v5-adapter/package.json @@ -0,0 +1,32 @@ +{ + "name": "@cowprotocol/sdk-ethers-v5-adapter", + "version": "0.1.0", + "description": "Ethers v5 adapter for CoW Protocol SDK", + "main": "dist/index.js", + "module": "./dist/index.mjs", + "types": "dist/index.d.ts", + "license": "MIT", + "files": [ + "dist" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "dev": "tsup src/index.ts --format esm,cjs --watch --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "dependencies": { + "@cowprotocol/sdk-common": "workspace:*" + }, + "peerDependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@typechain/ethers-v5": "^11.0.0", + "ethers": "^5.7.2" + }, + "devDependencies": { + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.5.2", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + } +} diff --git a/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts new file mode 100644 index 000000000..6e488ac31 --- /dev/null +++ b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts @@ -0,0 +1,47 @@ +import { BigNumberish, BytesLike, ethers } from 'ethers' +import type { TypedDataDomain, TypedDataField, TypedDataSigner } from '@ethersproject/abstract-signer' +import { AbstractProviderAdapter, AdapterTypes } from '@cowprotocol/sdk-common' +import { EthersV5Utils } from './EthersV5Utils' + +type Abi = ConstructorParameters[0] +type Interface = ethers.utils.Interface + +export interface EthersV5Types extends AdapterTypes { + Bytes: BytesLike +} + +export class EthersV5Adapter extends AbstractProviderAdapter { + declare protected _type?: EthersV5Types + + private provider: ethers.providers.Provider + private signer: ethers.Signer & TypedDataSigner + public utils: EthersV5Utils + + constructor(providerOrSigner: ethers.providers.Provider | ethers.Signer) { + super() + + if (ethers.Signer.isSigner(providerOrSigner)) { + this.signer = providerOrSigner as ethers.Signer & TypedDataSigner + this.provider = providerOrSigner.provider as ethers.providers.Provider + if (!this.provider) { + throw new Error('Signer must be connected to a provider') + } + } else { + this.provider = providerOrSigner + this.signer = new ethers.VoidSigner( + '0x0000000000000000000000000000000000000000', + this.provider, + ) as ethers.Signer & TypedDataSigner + } + + this.utils = new EthersV5Utils() + } + + async getChainId(): Promise { + return (await this.provider.getNetwork()).chainId + } + + async getAddress(): Promise { + return this.signer.getAddress() + } +} diff --git a/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts b/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts new file mode 100644 index 000000000..0e0263ff6 --- /dev/null +++ b/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts @@ -0,0 +1,16 @@ +import { AdapterUtils } from '@cowprotocol/sdk-common' +import { BytesLike, ethers } from 'ethers' + +export class EthersV5Utils implements AdapterUtils { + toUtf8Bytes(text: string): Uint8Array { + return ethers.utils.toUtf8Bytes(text) + } + + keccak256(data: BytesLike) { + return ethers.utils.keccak256(data) + } + + arrayify(hexString: string): Uint8Array { + return ethers.utils.arrayify(hexString) + } +} diff --git a/packages/providers/ether-v5-adapter/src/index.ts b/packages/providers/ether-v5-adapter/src/index.ts new file mode 100644 index 000000000..a686cf9f0 --- /dev/null +++ b/packages/providers/ether-v5-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './EthersV5Adapter' diff --git a/packages/providers/ether-v5-adapter/tsconfig.json b/packages/providers/ether-v5-adapter/tsconfig.json new file mode 100644 index 000000000..9e2e459e8 --- /dev/null +++ b/packages/providers/ether-v5-adapter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} diff --git a/packages/providers/ether-v6-adapter/package.json b/packages/providers/ether-v6-adapter/package.json new file mode 100644 index 000000000..854a340d0 --- /dev/null +++ b/packages/providers/ether-v6-adapter/package.json @@ -0,0 +1,30 @@ +{ + "name": "@cowprotocol/sdk-ethers-v6-adapter", + "version": "0.1.0", + "description": "Ethers v6 adapter for CoW Protocol SDK", + "main": "dist/index.js", + "module": "./dist/index.mjs", + "types": "dist/index.d.ts", + "license": "MIT", + "files": [ + "dist" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "dev": "tsup src/index.ts --format esm,cjs --watch --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "dependencies": { + "@cowprotocol/sdk-common": "workspace:*" + }, + "peerDependencies": { + "ethers": "^6.13.7" + }, + "devDependencies": { + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.5.2", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + } +} diff --git a/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts b/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts new file mode 100644 index 000000000..8094d1424 --- /dev/null +++ b/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts @@ -0,0 +1,44 @@ +import { Provider, Signer, VoidSigner, JsonRpcSigner, Wallet, BytesLike } from 'ethers' +import { AbstractProviderAdapter, AdapterTypes } from '@cowprotocol/sdk-common' + +export interface EthersV6Types extends AdapterTypes { + Bytes: BytesLike +} +import { EthersV6Utils } from './EthersV6Utils' + +export class EthersV6Adapter extends AbstractProviderAdapter { + declare protected _type?: EthersV6Types + + private provider: Provider + private signer: Signer + public utils: EthersV6Utils + + constructor(providerOrSigner: Provider | Signer) { + super() + if ( + providerOrSigner instanceof JsonRpcSigner || + providerOrSigner instanceof VoidSigner || + providerOrSigner instanceof Wallet + ) { + this.signer = providerOrSigner + this.provider = this.signer.provider as Provider //Possible null - check later + if (!this.provider) { + throw new Error('Signer must be connected to a provider') + } + } else { + this.provider = providerOrSigner as Provider + this.signer = new VoidSigner('0x0000000000000000000000000000000000000000', this.provider) + } + + this.utils = new EthersV6Utils() + } + + async getChainId(): Promise { + const network = await this.provider.getNetwork() + return Number(network.chainId) + } + + async getAddress(): Promise { + return this.signer.getAddress() + } +} diff --git a/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts b/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts new file mode 100644 index 000000000..caef49fc8 --- /dev/null +++ b/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts @@ -0,0 +1,30 @@ +import { AdapterUtils } from '@cowprotocol/sdk-common' +import { BytesLike, toUtf8Bytes, keccak256, getBytes } from 'ethers' + +export class EthersV6Utils implements AdapterUtils { + toUtf8Bytes(text: string): Uint8Array { + return toUtf8Bytes(text) + } + + keccak256(data: BytesLike): string { + return keccak256(this.toEthersBytesLike(data)) + } + + // Helper method to convert our BytesLike to ethers BytesLike + private toEthersBytesLike(data: BytesLike): BytesLike { + if (typeof data === 'string') { + if (data.startsWith('0x')) { + return data + } + return toUtf8Bytes(data) + } else if (data instanceof Uint8Array) { + return data + } else { + throw new Error('Unsupported data type for conversion to BytesLike') + } + } + + arrayify(hexString: string): Uint8Array { + return getBytes(hexString) + } +} diff --git a/packages/providers/ether-v6-adapter/src/index.ts b/packages/providers/ether-v6-adapter/src/index.ts new file mode 100644 index 000000000..84c273777 --- /dev/null +++ b/packages/providers/ether-v6-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './EthersV6Adapter' diff --git a/packages/providers/ether-v6-adapter/tsconfig.json b/packages/providers/ether-v6-adapter/tsconfig.json new file mode 100644 index 000000000..9e2e459e8 --- /dev/null +++ b/packages/providers/ether-v6-adapter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} diff --git a/packages/providers/viem-adapter/package.json b/packages/providers/viem-adapter/package.json new file mode 100644 index 000000000..0aa3f3543 --- /dev/null +++ b/packages/providers/viem-adapter/package.json @@ -0,0 +1,30 @@ +{ + "name": "@cowprotocol/sdk-viem-adapter", + "version": "0.1.0", + "description": "Viem adapter for CoW Protocol SDK", + "main": "dist/index.js", + "module": "./dist/index.mjs", + "types": "dist/index.d.ts", + "license": "MIT", + "files": [ + "dist" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "dev": "tsup src/index.ts --format esm,cjs --watch --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "dependencies": { + "@cowprotocol/sdk-common": "workspace:*" + }, + "peerDependencies": { + "viem": "^2.28.4" + }, + "devDependencies": { + "@repo/typescript-config": "workspace:*", + "@types/node": "^20.5.2", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + } +} diff --git a/packages/providers/viem-adapter/src/ViemAdapter.ts b/packages/providers/viem-adapter/src/ViemAdapter.ts new file mode 100644 index 000000000..617480391 --- /dev/null +++ b/packages/providers/viem-adapter/src/ViemAdapter.ts @@ -0,0 +1,40 @@ +import { createPublicClient, http, PublicClient, Account, Transport, Chain } from 'viem' + +import { AdapterTypes, AbstractProviderAdapter } from '@cowprotocol/sdk-common' + +export interface ViemTypes extends AdapterTypes { + Bytes: `0x${string}` +} +import { ViemUtils } from './ViemUtils' + +export class ViemAdapter extends AbstractProviderAdapter { + declare protected _type?: ViemTypes + private publicClient: PublicClient + private account?: Account + public utils: ViemUtils + + constructor(chain: Chain, transport: Transport = http(), account?: Account | `0x${string}`) { + super() + this.publicClient = createPublicClient({ + chain, + transport, + }) + + if (account) { + this.account = typeof account === 'string' ? ({ address: account } as Account) : account + } + + this.utils = new ViemUtils() + } + + async getChainId(): Promise { + return this.publicClient.chain?.id ?? 0 + } + + async getAddress(): Promise { + if (!this.account) { + throw new Error('No account provided') + } + return this.account.address + } +} diff --git a/packages/providers/viem-adapter/src/ViemUtils.ts b/packages/providers/viem-adapter/src/ViemUtils.ts new file mode 100644 index 000000000..3fa4f2eea --- /dev/null +++ b/packages/providers/viem-adapter/src/ViemUtils.ts @@ -0,0 +1,16 @@ +import { AdapterUtils } from '@cowprotocol/sdk-common' +import { Hex, stringToBytes, keccak256, hexToBytes } from 'viem' + +export class ViemUtils implements AdapterUtils { + toUtf8Bytes(text: string): Uint8Array { + return stringToBytes(text) + } + + keccak256(data: Hex): string { + return keccak256(data) + } + + arrayify(hexString: string): Uint8Array { + return hexToBytes(hexString as Hex) + } +} diff --git a/packages/providers/viem-adapter/src/index.ts b/packages/providers/viem-adapter/src/index.ts new file mode 100644 index 000000000..cdfa87204 --- /dev/null +++ b/packages/providers/viem-adapter/src/index.ts @@ -0,0 +1 @@ +export * from './ViemAdapter' diff --git a/packages/providers/viem-adapter/tsconfig.json b/packages/providers/viem-adapter/tsconfig.json new file mode 100644 index 000000000..9e2e459e8 --- /dev/null +++ b/packages/providers/viem-adapter/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./src" + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist", "**/*.test.ts"] +} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 18ec407ef..681b93797 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,4 @@ packages: - 'packages/*' + - 'packages/*/*' + - '!**/dist' # exclude dist directories to avoid build artifacts being treated as packages From bbb0b3c0a75f91aefb6196de87e39f3633d5baf4 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:04:29 -0300 Subject: [PATCH 11/33] chore: update pnpm-lock --- pnpm-lock.yaml | 1242 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 1209 insertions(+), 33 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5717cae7..bb3c05e52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,91 @@ importers: specifier: ^8.32.1 version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + packages/app-data: + dependencies: + ajv: + specifier: ^8.11.0 + version: 8.17.1 + cross-fetch: + specifier: ^3.1.5 + version: 3.2.0 + ipfs-only-hash: + specifier: ^4.0.0 + version: 4.0.0 + json-stringify-deterministic: + specifier: ^1.0.8 + version: 1.0.12 + multiformats: + specifier: ^9.6.4 + version: 9.9.0 + devDependencies: + '@babel/core': + specifier: ^7.18.9 + version: 7.27.1 + '@babel/preset-env': + specifier: ^7.18.9 + version: 7.27.2(@babel/core@7.27.1) + '@babel/preset-typescript': + specifier: ^7.18.6 + version: 7.27.1(@babel/core@7.27.1) + '@types/jest': + specifier: ^29.4.0 + version: 29.5.14 + '@types/semver-sort': + specifier: ^0.0.1 + version: 0.0.1 + babel-jest: + specifier: ^28.1.3 + version: 28.1.3(@babel/core@7.27.1) + ethers: + specifier: ^5.0.26 + version: 5.8.0 + jest: + specifier: ^29.4.2 + version: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + json-schema-ref-parser: + specifier: ^9.0.9 + version: 9.0.9 + json-schema-to-typescript: + specifier: ^10.1.5 + version: 10.1.5 + microbundle: + specifier: ^0.15.1 + version: 0.15.1(@types/babel__core@7.20.5)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + prettier: + specifier: ^2.7.1 + version: 2.8.8 + semver-sort: + specifier: ^1.0.0 + version: 1.0.0 + ts-node: + specifier: ^10.8.2 + version: 10.9.2(@types/node@20.17.51)(typescript@4.9.5) + typescript: + specifier: ^4.9.5 + version: 4.9.5 + + packages/common: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/node': + specifier: ^20.17.31 + version: 20.17.51 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + packages/cow-sdk: dependencies: '@cowprotocol/app-data': @@ -178,8 +263,88 @@ importers: specifier: ^8.32.1 version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + packages/providers/ether-v5-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + '@ethersproject/abstract-signer': + specifier: ^5.8.0 + version: 5.8.0 + '@typechain/ethers-v5': + specifier: ^11.0.0 + version: 11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0)(ethers@5.8.0)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + ethers: + specifier: ^5.7.2 + version: 5.8.0 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/providers/ether-v6-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + ethers: + specifier: ^6.13.7 + version: 6.14.3 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/providers/viem-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + viem: + specifier: ^2.28.4 + version: 2.30.4(typescript@5.8.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/typescript-config: {} + packages: + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@adraffy/ens-normalize@1.11.0': + resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -188,6 +353,9 @@ packages: resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} engines: {node: '>= 16'} + '@apidevtools/json-schema-ref-parser@9.0.9': + resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} + '@ardatan/relay-compiler@12.0.3': resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} hasBin: true @@ -1039,10 +1207,18 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1407,10 +1583,19 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -1473,6 +1658,10 @@ packages: node-notifier: optional: true + '@jest/schemas@28.1.3': + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1489,10 +1678,18 @@ packages: resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@28.1.3': + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/transform@29.7.0': resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@28.1.3': + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1543,6 +1740,9 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} @@ -1550,6 +1750,14 @@ packages: resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -1772,6 +1980,9 @@ packages: '@scure/bip39@1.6.0': resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + '@sinclair/typebox@0.24.51': + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1830,6 +2041,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -1851,18 +2065,30 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash@4.17.17': + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} + '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@20.17.51': + resolution: {integrity: sha512-hccptBl7C8lHiKxTBsY6vYYmqpmw1E/aGR/8fmueE+B390L3pdMOpNSRvFO4ZnXzW5+p2HBXV0yNABd2vdk22Q==} + '@types/node@22.15.21': resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1875,6 +2101,9 @@ packages: '@types/resolve@1.17.1': resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + '@types/semver-sort@0.0.1': + resolution: {integrity: sha512-abYNwum55FpJWDxcWjT1eNI3J5/KXS7cWY7KUgbr/l/vn/5vaB1ejUpipLPZba8BvdbJBAJCWIXfJYZvc4SwTA==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -1934,6 +2163,9 @@ packages: resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -1954,6 +2186,17 @@ packages: resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} engines: {node: '>=16.0.0'} + abitype@1.0.8: + resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1971,6 +2214,9 @@ packages: aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -2148,6 +2394,12 @@ packages: aws4@1.13.2: resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + babel-jest@28.1.3: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + babel-jest@29.7.0: resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2161,6 +2413,10 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-jest-hoist@28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + babel-plugin-jest-hoist@29.6.3: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2197,6 +2453,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@28.1.3: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-jest@29.6.3: resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2323,6 +2585,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2406,6 +2671,10 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2510,6 +2779,9 @@ packages: constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -2620,6 +2892,10 @@ packages: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -2749,6 +3025,10 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -2843,6 +3123,20 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} @@ -2873,6 +3167,10 @@ packages: '@typescript-eslint/eslint-plugin': optional: true + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2885,6 +3183,12 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2895,10 +3199,18 @@ packages: jiti: optional: true + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + espree@10.3.0: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2939,12 +3251,22 @@ packages: ethers@5.8.0: resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} + ethers@6.14.3: + resolution: {integrity: sha512-qq7ft/oCJohoTcsNPFaXSQUm457MA5iWqkf1Mb11ujONdg7jBI6sAOrHaTi3j0CBqIGFSCeR/RMc+qwRRub7IA==} + engines: {node: '>=14.0.0'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2972,6 +3294,9 @@ packages: exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -3043,6 +3368,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3092,6 +3421,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3199,6 +3532,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stdin@8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -3229,6 +3566,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-promise@3.4.0: + resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} + engines: {node: '>=4'} + peerDependencies: + glob: '*' + glob2base@0.0.12: resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} engines: {node: '>= 0.10'} @@ -3254,6 +3597,10 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3696,6 +4043,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3716,6 +4067,9 @@ packages: resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} engines: {node: '>=0.10.0'} + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -3807,6 +4161,11 @@ packages: peerDependencies: ws: '*' + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -3911,6 +4270,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-haste-map@29.7.0: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3940,6 +4303,10 @@ packages: jest-resolve: optional: true + jest-regex-util@28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-regex-util@29.6.3: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3964,6 +4331,10 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3980,6 +4351,10 @@ packages: resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} engines: {node: '>= 10.13.0'} + jest-worker@28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + jest-worker@29.7.0: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4042,6 +4417,16 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-ref-parser@9.0.9: + resolution: {integrity: sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==} + engines: {node: '>=10'} + deprecated: Please switch to @apidevtools/json-schema-ref-parser + + json-schema-to-typescript@10.1.5: + resolution: {integrity: sha512-X8bNNksfCQo6LhEuqNxmZr4eZpPjXZajmimciuk8eWXzZlif9Brq7WuMGD/SOhBKcRKP2SGVDNZbC28WQqx9Rg==} + engines: {node: '>=10.0.0'} + hasBin: true + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4214,6 +4599,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -4264,6 +4652,10 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} + meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} @@ -4426,6 +4818,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -4559,6 +4954,14 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + ox@0.7.1: + resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -5170,6 +5573,11 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -5268,6 +5676,14 @@ packages: scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} + semver-regex@3.1.4: + resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==} + engines: {node: '>=8'} + + semver-sort@1.0.0: + resolution: {integrity: sha512-JicVlQKz/C//4BiPmbHEDou6HihXxo5xqB/8Hm9FaLJ6HHkRRvYgCECq4u/z0XF8kyJQ/KAZt++A/kYz/oOSSg==} + engines: {node: '>=0.10.0'} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -5597,6 +6013,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -5611,6 +6030,10 @@ packages: resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} + timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} + tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -5711,6 +6134,9 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -5783,6 +6209,10 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5795,6 +6225,9 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + typechain@8.3.2: resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} hasBin: true @@ -5865,6 +6298,9 @@ packages: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -5962,6 +6398,14 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} + viem@2.30.4: + resolution: {integrity: sha512-f0iW2t7P8Z6dV5oNiy8/azCZkxk+wPfElWy1U6JR3WnfGjkicHhkvTpBxlrH9s+z+85BrV3Hh4ShxrZUGHHM3w==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -6039,6 +6483,18 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -6110,6 +6566,10 @@ packages: snapshots: + '@adraffy/ens-normalize@1.10.1': {} + + '@adraffy/ens-normalize@1.11.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -6121,6 +6581,13 @@ snapshots: '@types/json-schema': 7.0.15 js-yaml: 4.1.0 + '@apidevtools/json-schema-ref-parser@9.0.9': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + '@ardatan/relay-compiler@12.0.3(graphql@16.11.0)': dependencies: '@babel/generator': 7.27.1 @@ -7064,6 +7531,11 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -7085,6 +7557,20 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -7099,6 +7585,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -7834,8 +8322,18 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -7862,27 +8360,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7903,20 +8401,55 @@ snapshots: - supports-color - ts-node - '@jest/environment@29.7.0': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': dependencies: - '@jest/fake-timers': 29.7.0 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 + '@types/node': 20.17.51 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.51 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color @@ -7925,7 +8458,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -7947,7 +8480,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -7968,6 +8501,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/schemas@28.1.3': + dependencies: + '@sinclair/typebox': 0.24.51 + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -7992,6 +8529,26 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 + '@jest/transform@28.1.3': + dependencies: + '@babel/core': 7.27.1 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.8 + pirates: 4.0.7 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + '@jest/transform@29.7.0': dependencies: '@babel/core': 7.27.1 @@ -8012,12 +8569,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/types@28.1.3': + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.17.51 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -8077,6 +8643,10 @@ snapshots: '@noble/ciphers@1.3.0': {} + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 @@ -8085,6 +8655,12 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.3.2': {} + '@noble/hashes@1.4.0': {} '@noble/hashes@1.8.0': {} @@ -8276,6 +8852,8 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.5 + '@sinclair/typebox@0.24.51': {} + '@sinclair/typebox@0.27.8': {} '@sinonjs/commons@3.0.1': @@ -8342,9 +8920,14 @@ snapshots: '@types/estree@1.0.7': {} + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.17.51 + '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/istanbul-lib-coverage@2.0.6': {} @@ -8365,16 +8948,28 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/lodash@4.17.17': {} + '@types/long@4.0.2': {} + '@types/minimatch@5.1.2': {} + '@types/minimist@1.2.5': {} '@types/ms@2.1.0': {} + '@types/node@20.17.51': + dependencies: + undici-types: 6.19.8 + '@types/node@22.15.21': dependencies: undici-types: 6.21.0 + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + '@types/normalize-package-data@2.4.4': {} '@types/parse-json@4.0.2': {} @@ -8383,13 +8978,15 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 + + '@types/semver-sort@0.0.1': {} '@types/stack-utils@2.0.3': {} '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/yargs-parser@21.0.3': {} @@ -8474,6 +9071,8 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.3.0': {} + '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -8502,6 +9101,10 @@ snapshots: dependencies: tslib: 2.8.1 + abitype@1.0.8(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -8514,6 +9117,8 @@ snapshots: aes-js@3.0.0: {} + aes-js@4.0.0-beta.5: {} + agent-base@7.1.3: {} aggregate-error@3.1.0: @@ -8660,6 +9265,19 @@ snapshots: aws4@1.13.2: {} + babel-jest@28.1.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + '@jest/transform': 28.1.3 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3(@babel/core@7.27.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + babel-jest@29.7.0(@babel/core@7.27.1): dependencies: '@babel/core': 7.27.1 @@ -8687,6 +9305,13 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-jest-hoist@28.1.3: + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.27.1 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.7 + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.27.2 @@ -8750,6 +9375,12 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.27.1) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.27.1) + babel-preset-jest@28.1.3(@babel/core@7.27.1): + dependencies: + '@babel/core': 7.27.1 + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.27.1) + babel-preset-jest@29.6.3(@babel/core@7.27.1): dependencies: '@babel/core': 7.27.1 @@ -8911,6 +9542,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camel-case@4.1.2: @@ -9043,6 +9676,14 @@ snapshots: clean-stack@2.2.0: {} + cli-color@2.0.4: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + memoizee: 0.4.17 + timers-ext: 0.1.8 + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -9135,6 +9776,8 @@ snapshots: tslib: 2.8.1 upper-case: 2.0.2 + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} copy-descriptor@0.1.1: {} @@ -9192,6 +9835,21 @@ snapshots: crc-32@1.2.2: {} + create-jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 @@ -9294,6 +9952,11 @@ snapshots: dependencies: css-tree: 1.1.3 + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -9396,6 +10059,10 @@ snapshots: dependencies: path-type: 4.0.0 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9545,6 +10212,31 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -9585,6 +10277,11 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -9594,6 +10291,49 @@ snapshots: eslint-visitor-keys@4.2.0: {} + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -9636,12 +10376,25 @@ snapshots: transitivePeerDependencies: - supports-color + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + espree@10.3.0: dependencies: acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} esquery@1.6.0: @@ -9713,6 +10466,24 @@ snapshots: - bufferutil - utf-8-validate + ethers@6.14.3: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-stream@3.3.4: dependencies: duplexer: 0.1.2 @@ -9725,6 +10496,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -9769,6 +10542,10 @@ snapshots: exponential-backoff@3.1.2: {} + ext@1.7.0: + dependencies: + type: 2.7.3 + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -9859,6 +10636,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9915,6 +10696,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -10034,6 +10821,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stdin@8.0.0: {} + get-stream@6.0.1: {} get-symbol-description@1.1.0: @@ -10065,6 +10854,11 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-promise@3.4.0(glob@7.2.3): + dependencies: + '@types/glob': 8.1.0 + glob: 7.2.3 + glob2base@0.0.12: dependencies: find-index: 0.1.1 @@ -10107,6 +10901,10 @@ snapshots: globals@11.12.0: {} + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + globals@14.0.0: {} globalthis@1.0.4: @@ -10579,6 +11377,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@3.0.3: {} + is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -10591,6 +11391,8 @@ snapshots: is-primitive@2.0.0: {} + is-promise@2.2.2: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.7 @@ -10674,6 +11476,10 @@ snapshots: dependencies: ws: 8.18.2 + isows@1.0.7(ws@8.18.2): + dependencies: + ws: 8.18.2 + isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -10756,7 +11562,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0(babel-plugin-macros@3.1.0) @@ -10776,6 +11582,25 @@ snapshots: - babel-plugin-macros - supports-color + jest-cli@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-cli@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -10795,6 +11620,68 @@ snapshots: - supports-color - ts-node + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.51 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@4.9.5) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.51 + ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-config@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.1 @@ -10850,7 +11737,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10863,11 +11750,27 @@ snapshots: jest-get-type@29.6.3: {} + jest-haste-map@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.17.51 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.21 + '@types/node': 20.17.51 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10906,13 +11809,15 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): optionalDependencies: jest-resolve: 29.7.0 + jest-regex-util@28.0.2: {} + jest-regex-util@29.6.3: {} jest-resolve-dependencies@29.7.0: @@ -10941,7 +11846,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10969,7 +11874,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -11012,10 +11917,19 @@ snapshots: transitivePeerDependencies: - supports-color + jest-util@28.1.3: + dependencies: + '@jest/types': 28.1.3 + '@types/node': 20.17.51 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11034,7 +11948,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -11043,17 +11957,35 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 merge-stream: 2.0.0 supports-color: 7.2.0 + jest-worker@28.1.3: + dependencies: + '@types/node': 20.17.51 + merge-stream: 2.0.0 + supports-color: 8.1.1 + jest-worker@29.7.0: dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -11097,6 +12029,28 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-schema-ref-parser@9.0.9: + dependencies: + '@apidevtools/json-schema-ref-parser': 9.0.9 + + json-schema-to-typescript@10.1.5: + dependencies: + '@types/json-schema': 7.0.15 + '@types/lodash': 4.17.17 + '@types/prettier': 2.7.3 + cli-color: 2.0.4 + get-stdin: 8.0.0 + glob: 7.2.3 + glob-promise: 3.4.0(glob@7.2.3) + is-glob: 4.0.3 + json-schema-ref-parser: 9.0.9 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + minimist: 1.2.8 + mkdirp: 1.0.4 + mz: 2.7.0 + prettier: 2.8.8 + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -11245,6 +12199,10 @@ snapshots: dependencies: yallist: 4.0.0 + lru-queue@0.1.0: + dependencies: + es5-ext: 0.10.64 + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -11288,6 +12246,17 @@ snapshots: mdn-data@2.0.14: {} + memoizee@0.4.17: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.8 + meow@9.0.0: dependencies: '@types/minimist': 1.2.5 @@ -11317,6 +12286,56 @@ snapshots: micro-ftch@0.3.1: {} + microbundle@0.15.1(@types/babel__core@7.20.5)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + '@babel/core': 7.27.1 + '@babel/plugin-proposal-class-properties': 7.12.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.27.1) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regenerator': 7.27.1(@babel/core@7.27.1) + '@babel/preset-env': 7.27.2(@babel/core@7.27.1) + '@babel/preset-flow': 7.27.1(@babel/core@7.27.1) + '@babel/preset-react': 7.27.1(@babel/core@7.27.1) + '@rollup/plugin-alias': 3.1.9(rollup@2.79.2) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.1)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-commonjs': 17.1.0(rollup@2.79.2) + '@rollup/plugin-json': 4.1.0(rollup@2.79.2) + '@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2) + '@surma/rollup-plugin-off-main-thread': 2.2.3 + asyncro: 3.0.0 + autoprefixer: 10.4.21(postcss@8.5.3) + babel-plugin-macros: 3.1.0 + babel-plugin-transform-async-to-promises: 0.8.18 + babel-plugin-transform-replace-expressions: 0.2.0(@babel/core@7.27.1) + brotli-size: 4.0.0 + builtin-modules: 3.3.0 + camelcase: 6.3.0 + escape-string-regexp: 4.0.0 + filesize: 6.4.0 + gzip-size: 6.0.0 + kleur: 4.1.5 + lodash.merge: 4.6.2 + postcss: 8.5.3 + pretty-bytes: 5.6.0 + rollup: 2.79.2 + rollup-plugin-bundle-size: 1.0.3 + rollup-plugin-postcss: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + rollup-plugin-terser: 7.0.2(rollup@2.79.2) + rollup-plugin-typescript2: 0.32.1(rollup@2.79.2)(typescript@4.9.5) + rollup-plugin-visualizer: 5.14.0(rollup@2.79.2) + sade: 1.8.1 + terser: 5.39.2 + tiny-glob: 0.2.9 + tslib: 2.8.1 + typescript: 4.9.5 + transitivePeerDependencies: + - '@types/babel__core' + - rolldown + - supports-color + - ts-node + microbundle@0.15.1(@types/babel__core@7.20.5)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.1 @@ -11524,6 +12543,8 @@ snapshots: neo-async@2.6.2: {} + next-tick@1.1.0: {} + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -11670,6 +12691,21 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + ox@0.7.1(typescript@5.8.3): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - zod + p-finally@1.0.0: {} p-limit@2.3.0: @@ -11836,6 +12872,14 @@ snapshots: dependencies: postcss: 8.5.3 + postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@4.9.5) + postcss-load-config@3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: lilconfig: 2.1.0 @@ -11844,6 +12888,14 @@ snapshots: postcss: 8.5.3 ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: lilconfig: 3.1.3 @@ -12063,7 +13115,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 22.15.21 + '@types/node': 20.17.51 long: 4.0.0 ps-tree@1.2.0: @@ -12286,11 +13338,34 @@ snapshots: rfdc@1.4.1: {} + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 maxmin: 2.1.0 + rollup-plugin-postcss@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)): + dependencies: + chalk: 4.1.2 + concat-with-sourcemaps: 1.1.0 + cssnano: 5.1.15(postcss@8.5.3) + import-cwd: 3.0.0 + p-queue: 6.6.2 + pify: 5.0.0 + postcss: 8.5.3 + postcss-load-config: 3.1.4(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5)) + postcss-modules: 4.3.1(postcss@8.5.3) + promise.series: 0.2.0 + resolve: 1.22.10 + rollup-pluginutils: 2.8.2 + safe-identifier: 0.4.2 + style-inject: 0.3.0 + transitivePeerDependencies: + - ts-node + rollup-plugin-postcss@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: chalk: 4.1.2 @@ -12422,6 +13497,13 @@ snapshots: scuid@1.1.0: {} + semver-regex@3.1.4: {} + + semver-sort@1.0.0: + dependencies: + semver: 5.7.2 + semver-regex: 3.1.4 + semver@5.7.2: {} semver@6.3.1: {} @@ -12818,6 +13900,8 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-table@0.2.0: {} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -12830,6 +13914,11 @@ snapshots: timeout-signal@2.0.0: {} + timers-ext@0.1.8: + dependencies: + es5-ext: 0.10.64 + next-tick: 1.1.0 + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -12914,6 +14003,43 @@ snapshots: dependencies: lodash: 4.17.21 + ts-node@10.9.2(@types/node@20.17.51)(typescript@4.9.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.51 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + + ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.51 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optional: true + ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -12942,8 +14068,33 @@ snapshots: tslib@2.6.3: {} + tslib@2.7.0: {} + tslib@2.8.1: {} + tsup@7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3): + dependencies: + bundle-require: 4.2.1(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.4.1 + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + resolve-from: 5.0.0 + rollup: 4.41.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.3 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + - ts-node + tsup@7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))(typescript@5.8.3): dependencies: bundle-require: 4.2.1(esbuild@0.19.12) @@ -13008,12 +14159,16 @@ snapshots: type-fest@0.18.1: {} + type-fest@0.20.2: {} + type-fest@0.21.3: {} type-fest@0.6.0: {} type-fest@0.8.1: {} + type@2.7.3: {} + typechain@8.3.2(typescript@5.8.3): dependencies: '@types/prettier': 2.7.3 @@ -13103,6 +14258,8 @@ snapshots: unc-path-regex@0.1.2: {} + undici-types@6.19.8: {} + undici-types@6.21.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -13189,6 +14346,23 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 + viem@2.30.4(typescript@5.8.3): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3) + isows: 1.0.7(ws@8.18.2) + ox: 0.7.1(typescript@5.8.3) + ws: 8.18.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -13295,6 +14469,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@8.17.1: {} + ws@8.18.0: {} ws@8.18.2: {} From 3e814a53ad6c6a2acdcf8fa900f91f9d43d51580 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:04:41 -0300 Subject: [PATCH 12/33] chore: remove appdata and cow-sdk from build --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 771f61cd5..001031788 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "scripts": { - "build": "turbo run build", + "build": "turbo run build --filter='!@cowprotocol/cow-sdk' --filter='!@cowprotocol/app-data'", "dev": "turbo run dev", "lint": "turbo run lint -- --fix", "test": "turbo run test", From 212c4a74eae46ff6150138300334e0565f581ad1 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:29:46 -0300 Subject: [PATCH 13/33] feat: create config package --- packages/config/README.md | 1 + packages/config/package.json | 28 +++++++++++++++++++ .../src/chains/const/index.ts | 0 .../src/chains/const/path.ts | 0 .../src/chains/details/arbitrum.ts | 0 .../src/chains/details/avalanche.ts | 0 .../src/chains/details/base.ts | 0 .../src/chains/details/gnosis.ts | 0 .../src/chains/details/mainnet.ts | 0 .../src/chains/details/optimism.ts | 0 .../src/chains/details/polygon.ts | 0 .../src/chains/details/sepolia.ts | 0 .../src/chains/images/arbitrum-logo-dark.svg | 0 .../src/chains/images/arbitrum-logo-light.svg | 0 .../src/chains/images/avax-logo.svg | 0 .../src/chains/images/base-logo.svg | 0 .../src/chains/images/gnosis-logo.svg | 0 .../src/chains/images/mainnet-logo.svg | 0 .../src/chains/images/optimism-logo.svg | 0 .../src/chains/images/polygon-logo.svg | 0 .../src/chains/images/sepolia-logo.svg | 0 .../{cow-sdk => config}/src/chains/index.ts | 0 .../{cow-sdk => config}/src/chains/types.ts | 0 .../{cow-sdk => config}/src/chains/utils.ts | 0 .../consts => config/src/constants}/config.ts | 0 .../src/constants}/contracts.ts | 0 .../consts => config/src/constants}/ipfs.ts | 0 .../consts => config/src/constants}/path.ts | 0 .../consts => config/src/constants}/tokens.ts | 0 .../src/common => config/src}/types/config.ts | 0 .../common => config/src}/types/cow-error.ts | 0 .../common => config/src}/types/ethereum.ts | 0 .../src/common => config/src}/types/tokens.ts | 0 .../common => config/src}/types/wallets.ts | 0 packages/config/tsconfig.json | 13 +++++++++ 35 files changed, 42 insertions(+) create mode 100644 packages/config/README.md create mode 100644 packages/config/package.json rename packages/{cow-sdk => config}/src/chains/const/index.ts (100%) rename packages/{cow-sdk => config}/src/chains/const/path.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/arbitrum.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/avalanche.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/base.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/gnosis.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/mainnet.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/optimism.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/polygon.ts (100%) rename packages/{cow-sdk => config}/src/chains/details/sepolia.ts (100%) rename packages/{cow-sdk => config}/src/chains/images/arbitrum-logo-dark.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/arbitrum-logo-light.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/avax-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/base-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/gnosis-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/mainnet-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/optimism-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/polygon-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/images/sepolia-logo.svg (100%) rename packages/{cow-sdk => config}/src/chains/index.ts (100%) rename packages/{cow-sdk => config}/src/chains/types.ts (100%) rename packages/{cow-sdk => config}/src/chains/utils.ts (100%) rename packages/{cow-sdk/src/common/consts => config/src/constants}/config.ts (100%) rename packages/{cow-sdk/src/common/consts => config/src/constants}/contracts.ts (100%) rename packages/{cow-sdk/src/common/consts => config/src/constants}/ipfs.ts (100%) rename packages/{cow-sdk/src/common/consts => config/src/constants}/path.ts (100%) rename packages/{cow-sdk/src/common/consts => config/src/constants}/tokens.ts (100%) rename packages/{cow-sdk/src/common => config/src}/types/config.ts (100%) rename packages/{cow-sdk/src/common => config/src}/types/cow-error.ts (100%) rename packages/{cow-sdk/src/common => config/src}/types/ethereum.ts (100%) rename packages/{cow-sdk/src/common => config/src}/types/tokens.ts (100%) rename packages/{cow-sdk/src/common => config/src}/types/wallets.ts (100%) create mode 100644 packages/config/tsconfig.json diff --git a/packages/config/README.md b/packages/config/README.md new file mode 100644 index 000000000..e463d5663 --- /dev/null +++ b/packages/config/README.md @@ -0,0 +1 @@ +# `config` \ No newline at end of file diff --git a/packages/config/package.json b/packages/config/package.json new file mode 100644 index 000000000..184cb6d45 --- /dev/null +++ b/packages/config/package.json @@ -0,0 +1,28 @@ +{ + "name": "@cowprotocol/sdk-config", + "version": "0.1.0", + "description": "Configuration constants and settings for CoW Protocol SDK", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "sideEffects": false, + "license": "MIT", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + }, + "devDependencies": { + "@types/node": "^20.17.31", + "eslint": "^8.48.0", + "tsup": "^7.2.0", + "typescript": "^5.2.2" + }, + "dependencies": { + "exponential-backoff": "^3.1.1", + "limiter": "^2.1.0" + } +} diff --git a/packages/cow-sdk/src/chains/const/index.ts b/packages/config/src/chains/const/index.ts similarity index 100% rename from packages/cow-sdk/src/chains/const/index.ts rename to packages/config/src/chains/const/index.ts diff --git a/packages/cow-sdk/src/chains/const/path.ts b/packages/config/src/chains/const/path.ts similarity index 100% rename from packages/cow-sdk/src/chains/const/path.ts rename to packages/config/src/chains/const/path.ts diff --git a/packages/cow-sdk/src/chains/details/arbitrum.ts b/packages/config/src/chains/details/arbitrum.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/arbitrum.ts rename to packages/config/src/chains/details/arbitrum.ts diff --git a/packages/cow-sdk/src/chains/details/avalanche.ts b/packages/config/src/chains/details/avalanche.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/avalanche.ts rename to packages/config/src/chains/details/avalanche.ts diff --git a/packages/cow-sdk/src/chains/details/base.ts b/packages/config/src/chains/details/base.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/base.ts rename to packages/config/src/chains/details/base.ts diff --git a/packages/cow-sdk/src/chains/details/gnosis.ts b/packages/config/src/chains/details/gnosis.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/gnosis.ts rename to packages/config/src/chains/details/gnosis.ts diff --git a/packages/cow-sdk/src/chains/details/mainnet.ts b/packages/config/src/chains/details/mainnet.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/mainnet.ts rename to packages/config/src/chains/details/mainnet.ts diff --git a/packages/cow-sdk/src/chains/details/optimism.ts b/packages/config/src/chains/details/optimism.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/optimism.ts rename to packages/config/src/chains/details/optimism.ts diff --git a/packages/cow-sdk/src/chains/details/polygon.ts b/packages/config/src/chains/details/polygon.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/polygon.ts rename to packages/config/src/chains/details/polygon.ts diff --git a/packages/cow-sdk/src/chains/details/sepolia.ts b/packages/config/src/chains/details/sepolia.ts similarity index 100% rename from packages/cow-sdk/src/chains/details/sepolia.ts rename to packages/config/src/chains/details/sepolia.ts diff --git a/packages/cow-sdk/src/chains/images/arbitrum-logo-dark.svg b/packages/config/src/chains/images/arbitrum-logo-dark.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/arbitrum-logo-dark.svg rename to packages/config/src/chains/images/arbitrum-logo-dark.svg diff --git a/packages/cow-sdk/src/chains/images/arbitrum-logo-light.svg b/packages/config/src/chains/images/arbitrum-logo-light.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/arbitrum-logo-light.svg rename to packages/config/src/chains/images/arbitrum-logo-light.svg diff --git a/packages/cow-sdk/src/chains/images/avax-logo.svg b/packages/config/src/chains/images/avax-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/avax-logo.svg rename to packages/config/src/chains/images/avax-logo.svg diff --git a/packages/cow-sdk/src/chains/images/base-logo.svg b/packages/config/src/chains/images/base-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/base-logo.svg rename to packages/config/src/chains/images/base-logo.svg diff --git a/packages/cow-sdk/src/chains/images/gnosis-logo.svg b/packages/config/src/chains/images/gnosis-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/gnosis-logo.svg rename to packages/config/src/chains/images/gnosis-logo.svg diff --git a/packages/cow-sdk/src/chains/images/mainnet-logo.svg b/packages/config/src/chains/images/mainnet-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/mainnet-logo.svg rename to packages/config/src/chains/images/mainnet-logo.svg diff --git a/packages/cow-sdk/src/chains/images/optimism-logo.svg b/packages/config/src/chains/images/optimism-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/optimism-logo.svg rename to packages/config/src/chains/images/optimism-logo.svg diff --git a/packages/cow-sdk/src/chains/images/polygon-logo.svg b/packages/config/src/chains/images/polygon-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/polygon-logo.svg rename to packages/config/src/chains/images/polygon-logo.svg diff --git a/packages/cow-sdk/src/chains/images/sepolia-logo.svg b/packages/config/src/chains/images/sepolia-logo.svg similarity index 100% rename from packages/cow-sdk/src/chains/images/sepolia-logo.svg rename to packages/config/src/chains/images/sepolia-logo.svg diff --git a/packages/cow-sdk/src/chains/index.ts b/packages/config/src/chains/index.ts similarity index 100% rename from packages/cow-sdk/src/chains/index.ts rename to packages/config/src/chains/index.ts diff --git a/packages/cow-sdk/src/chains/types.ts b/packages/config/src/chains/types.ts similarity index 100% rename from packages/cow-sdk/src/chains/types.ts rename to packages/config/src/chains/types.ts diff --git a/packages/cow-sdk/src/chains/utils.ts b/packages/config/src/chains/utils.ts similarity index 100% rename from packages/cow-sdk/src/chains/utils.ts rename to packages/config/src/chains/utils.ts diff --git a/packages/cow-sdk/src/common/consts/config.ts b/packages/config/src/constants/config.ts similarity index 100% rename from packages/cow-sdk/src/common/consts/config.ts rename to packages/config/src/constants/config.ts diff --git a/packages/cow-sdk/src/common/consts/contracts.ts b/packages/config/src/constants/contracts.ts similarity index 100% rename from packages/cow-sdk/src/common/consts/contracts.ts rename to packages/config/src/constants/contracts.ts diff --git a/packages/cow-sdk/src/common/consts/ipfs.ts b/packages/config/src/constants/ipfs.ts similarity index 100% rename from packages/cow-sdk/src/common/consts/ipfs.ts rename to packages/config/src/constants/ipfs.ts diff --git a/packages/cow-sdk/src/common/consts/path.ts b/packages/config/src/constants/path.ts similarity index 100% rename from packages/cow-sdk/src/common/consts/path.ts rename to packages/config/src/constants/path.ts diff --git a/packages/cow-sdk/src/common/consts/tokens.ts b/packages/config/src/constants/tokens.ts similarity index 100% rename from packages/cow-sdk/src/common/consts/tokens.ts rename to packages/config/src/constants/tokens.ts diff --git a/packages/cow-sdk/src/common/types/config.ts b/packages/config/src/types/config.ts similarity index 100% rename from packages/cow-sdk/src/common/types/config.ts rename to packages/config/src/types/config.ts diff --git a/packages/cow-sdk/src/common/types/cow-error.ts b/packages/config/src/types/cow-error.ts similarity index 100% rename from packages/cow-sdk/src/common/types/cow-error.ts rename to packages/config/src/types/cow-error.ts diff --git a/packages/cow-sdk/src/common/types/ethereum.ts b/packages/config/src/types/ethereum.ts similarity index 100% rename from packages/cow-sdk/src/common/types/ethereum.ts rename to packages/config/src/types/ethereum.ts diff --git a/packages/cow-sdk/src/common/types/tokens.ts b/packages/config/src/types/tokens.ts similarity index 100% rename from packages/cow-sdk/src/common/types/tokens.ts rename to packages/config/src/types/tokens.ts diff --git a/packages/cow-sdk/src/common/types/wallets.ts b/packages/config/src/types/wallets.ts similarity index 100% rename from packages/cow-sdk/src/common/types/wallets.ts rename to packages/config/src/types/wallets.ts diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json new file mode 100644 index 000000000..73f2a72ec --- /dev/null +++ b/packages/config/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../../packages/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "moduleResolution": "node", + "module": "ESNext", + "target": "ESNext", + "baseUrl": "src", + "skipLibCheck": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} From 41b7ac7bee3272246d809b66c347465a5511095d Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:37:30 -0300 Subject: [PATCH 14/33] chore: fix eslint tsconfig path --- eslint.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.js b/eslint.config.js index 2b3f971b3..e9105b2fd 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -16,7 +16,7 @@ export default [ languageOptions: { parser: tseslint.parser, parserOptions: { - project: './tsconfig.json', + project: './packages/*/tsconfig.json', }, }, rules: { From f7fcf73a7fde59b47a5aa2432fddea8e1648fd94 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:44:59 -0300 Subject: [PATCH 15/33] feat: refactor config --- packages/config/src/chains/const/chainIds.ts | 21 +++++++ .../{constants => chains/const}/contracts.ts | 48 +++++++++++++++- packages/config/src/chains/const/index.ts | 56 +------------------ packages/config/src/chains/const/path.ts | 3 - packages/config/src/chains/const/utils.ts | 18 ++++++ .../config/src/chains/details/arbitrum.ts | 4 +- .../config/src/chains/details/avalanche.ts | 4 +- packages/config/src/chains/details/base.ts | 4 +- packages/config/src/chains/details/gnosis.ts | 4 +- packages/config/src/chains/details/mainnet.ts | 4 +- .../config/src/chains/details/optimism.ts | 4 +- packages/config/src/chains/details/polygon.ts | 4 +- packages/config/src/chains/details/sepolia.ts | 4 +- packages/config/src/chains/index.ts | 8 +++ packages/config/src/chains/types.ts | 2 +- packages/config/src/constants/config.ts | 15 ----- packages/config/src/constants/index.ts | 2 + packages/config/src/constants/path.ts | 1 - packages/config/src/constants/paths.ts | 9 +++ packages/config/src/constants/tokens.ts | 2 +- packages/config/src/index.ts | 7 +++ .../src/types/{config.ts => configs.ts} | 17 +++++- packages/config/src/types/cow-error.ts | 8 --- packages/config/src/types/ethereum.ts | 5 -- packages/config/src/types/index.ts | 2 + packages/config/src/types/tokens.ts | 2 +- packages/config/src/types/wallets.ts | 6 -- 27 files changed, 149 insertions(+), 115 deletions(-) create mode 100644 packages/config/src/chains/const/chainIds.ts rename packages/config/src/{constants => chains/const}/contracts.ts (56%) delete mode 100644 packages/config/src/chains/const/path.ts create mode 100644 packages/config/src/chains/const/utils.ts delete mode 100644 packages/config/src/constants/config.ts create mode 100644 packages/config/src/constants/index.ts delete mode 100644 packages/config/src/constants/path.ts create mode 100644 packages/config/src/constants/paths.ts create mode 100644 packages/config/src/index.ts rename packages/config/src/types/{config.ts => configs.ts} (87%) delete mode 100644 packages/config/src/types/cow-error.ts delete mode 100644 packages/config/src/types/ethereum.ts create mode 100644 packages/config/src/types/index.ts delete mode 100644 packages/config/src/types/wallets.ts diff --git a/packages/config/src/chains/const/chainIds.ts b/packages/config/src/chains/const/chainIds.ts new file mode 100644 index 000000000..b825b504c --- /dev/null +++ b/packages/config/src/chains/const/chainIds.ts @@ -0,0 +1,21 @@ +import { SupportedChainId } from '../types' +import { mainnet } from '../details/mainnet' +import { gnosisChain } from '../details/gnosis' +import { arbitrumOne } from '../details/arbitrum' +import { base } from '../details/base' +import { sepolia } from '../details/sepolia' +import { avalanche } from '../details/avalanche' +import { polygon } from '../details/polygon' + +/** + * The list of supported chains. + */ +export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = [ + mainnet.id, + gnosisChain.id, + arbitrumOne.id, + base.id, + avalanche.id, + polygon.id, + sepolia.id, +] diff --git a/packages/config/src/constants/contracts.ts b/packages/config/src/chains/const/contracts.ts similarity index 56% rename from packages/config/src/constants/contracts.ts rename to packages/config/src/chains/const/contracts.ts index bbc2fba82..622f28a00 100644 --- a/packages/config/src/constants/contracts.ts +++ b/packages/config/src/chains/const/contracts.ts @@ -1,10 +1,17 @@ -import { SupportedChainId } from '../../chains/types' -import { mapAddressToSupportedNetworks } from '../utils/config' +import { mapAddressToSupportedNetworks } from './utils' +import { AdditionalTargetChainId, ChainInfo, SupportedChainId } from '../types' +import { mainnet } from '../details/mainnet' +import { gnosisChain } from '../details/gnosis' +import { arbitrumOne } from '../details/arbitrum' +import { base } from '../details/base' +import { sepolia } from '../details/sepolia' +import { avalanche } from '../details/avalanche' +import { optimism } from '../details/optimism' +import { polygon } from '../details/polygon' export const ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' export const EXTENSIBLE_FALLBACK_HANDLER = '0x2f55e8b20D0B9FEFA187AA7d00B6Cbe563605bF5' export const COMPOSABLE_COW = '0xfdaFc9d1902f4e0b84f65F49f244b32b31013b74' - export const COW_SHED_FACTORY = '0x00E989b87700514118Fa55326CD1cCE82faebEF6' export const COW_SHED_IMPLEMENTATION = '0x2CFFA8cf11B90C9F437567b86352169dF4009F73' @@ -47,3 +54,38 @@ export const BARN_ETH_FLOW_ADDRESSES: Record = mapAddressToSupportedNetworks(BARN_ETH_FLOW_ADDRESS) export const MAX_VALID_TO_EPOCH = 4294967295 // Max uint32 (Feb 07 2106 07:28:15 GMT+0100) + +/** + * Details of all supported chains. + */ +export const ALL_SUPPORTED_CHAINS_MAP: Record = { + [SupportedChainId.MAINNET]: mainnet, + [SupportedChainId.GNOSIS_CHAIN]: gnosisChain, + [SupportedChainId.ARBITRUM_ONE]: arbitrumOne, + [SupportedChainId.BASE]: base, + [SupportedChainId.AVALANCHE]: avalanche, + [SupportedChainId.POLYGON]: polygon, + [SupportedChainId.SEPOLIA]: sepolia, +} + +/** + * All supported chains. + */ +export const ALL_SUPPORTED_CHAINS = Object.values(ALL_SUPPORTED_CHAINS_MAP) + +/** + * Maps a chain where you can bridge to, but not sell tokens from (not supported by CoW Protocol) + */ +export const ADDITIONAL_TARGET_CHAINS_MAP: Record = { + [AdditionalTargetChainId.OPTIMISM]: optimism, +} + +/** + * All chains (both supported by CoW Protocol, or chains where you can bridge to) + */ +export const ALL_CHAINS = ALL_SUPPORTED_CHAINS.concat(Object.values(ADDITIONAL_TARGET_CHAINS_MAP)) + +/** + * All chain ids (both supported by CoW Protocol, or chains where you can bridge to) + */ +export const ALL_CHAINS_IDS = ALL_CHAINS.map((chain) => chain.id) diff --git a/packages/config/src/chains/const/index.ts b/packages/config/src/chains/const/index.ts index 3fe009935..5ef8f3999 100644 --- a/packages/config/src/chains/const/index.ts +++ b/packages/config/src/chains/const/index.ts @@ -1,53 +1,3 @@ -import { AdditionalTargetChainId, ChainInfo, SupportedChainId } from '../types' - -import { mainnet } from '../details/mainnet' -import { gnosisChain } from '../details/gnosis' -import { arbitrumOne } from '../details/arbitrum' -import { base } from '../details/base' -import { sepolia } from '../details/sepolia' - -import { avalanche } from '../details/avalanche' -import { optimism } from '../details/optimism' -import { polygon } from '../details/polygon' - -/** - * Details of all supported chains. - */ -export const ALL_SUPPORTED_CHAINS_MAP: Record = { - [SupportedChainId.MAINNET]: mainnet, - [SupportedChainId.GNOSIS_CHAIN]: gnosisChain, - [SupportedChainId.ARBITRUM_ONE]: arbitrumOne, - [SupportedChainId.BASE]: base, - [SupportedChainId.AVALANCHE]: avalanche, - [SupportedChainId.POLYGON]: polygon, - [SupportedChainId.SEPOLIA]: sepolia, -} - -/** - * All supported chains. - */ -export const ALL_SUPPORTED_CHAINS = Object.values(ALL_SUPPORTED_CHAINS_MAP) - -/** - * The list of supported chains. - */ -export const ALL_SUPPORTED_CHAIN_IDS: SupportedChainId[] = ALL_SUPPORTED_CHAINS.map( - (chain) => chain.id, -) as SupportedChainId[] - -/** - * Maps a chain where you can bridge to, but not sell tokens from (not supported by CoW Protocol) - */ -export const ADDITIONAL_TARGET_CHAINS_MAP: Record = { - [AdditionalTargetChainId.OPTIMISM]: optimism, -} - -/** - * All chains (both supported by CoW Protocol, or chains where you can bridge to) - */ -export const ALL_CHAINS = ALL_SUPPORTED_CHAINS.concat(Object.values(ADDITIONAL_TARGET_CHAINS_MAP)) - -/** - * All chain ids (both supported by CoW Protocol, or chains where you can bridge to) - */ -export const ALL_CHAINS_IDS = ALL_CHAINS.map((chain) => chain.id) +export * from './contracts' +export * from './utils' +export * from './chainIds' diff --git a/packages/config/src/chains/const/path.ts b/packages/config/src/chains/const/path.ts deleted file mode 100644 index e8993c089..000000000 --- a/packages/config/src/chains/const/path.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RAW_FILES_PATH } from '../../common/consts/path' - -export const RAW_CHAINS_FILES_PATH = `${RAW_FILES_PATH}/src/chains` diff --git a/packages/config/src/chains/const/utils.ts b/packages/config/src/chains/const/utils.ts new file mode 100644 index 000000000..0daa65e04 --- /dev/null +++ b/packages/config/src/chains/const/utils.ts @@ -0,0 +1,18 @@ +import { ALL_SUPPORTED_CHAIN_IDS } from './chainIds' +import { SupportedChainId } from '../types' + +export function mapSupportedNetworks(value: (chainId: SupportedChainId) => T): Record +export function mapSupportedNetworks(value: T): Record +export function mapSupportedNetworks(value: T | ((chainId: SupportedChainId) => T)): Record { + return ALL_SUPPORTED_CHAIN_IDS.reduce>( + (acc, chainId) => ({ + ...acc, + [chainId]: typeof value === 'function' ? (value as (chainId: SupportedChainId) => T)(chainId) : value, + }), + {}, + ) +} + +export function mapAddressToSupportedNetworks(address: string): Record { + return mapSupportedNetworks(address) +} diff --git a/packages/config/src/chains/details/arbitrum.ts b/packages/config/src/chains/details/arbitrum.ts index f4f85b755..5adb93b81 100644 --- a/packages/config/src/chains/details/arbitrum.ts +++ b/packages/config/src/chains/details/arbitrum.ts @@ -1,6 +1,6 @@ import { ChainInfo, SupportedChainId } from '../types' -import { nativeCurrencyTemplate } from '../../common/consts/tokens' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { nativeCurrencyTemplate } from '../../constants/tokens' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const arbitrumOneLogoLight = `${RAW_CHAINS_FILES_PATH}/images/arbitrum-logo-light.svg` const arbitrumOneLogoDark = `${RAW_CHAINS_FILES_PATH}/images/arbitrum-logo-dark.svg` diff --git a/packages/config/src/chains/details/avalanche.ts b/packages/config/src/chains/details/avalanche.ts index dc8a9524f..f803c72d8 100644 --- a/packages/config/src/chains/details/avalanche.ts +++ b/packages/config/src/chains/details/avalanche.ts @@ -1,6 +1,6 @@ -import { nativeCurrencyTemplate } from '../../common/consts/tokens' +import { nativeCurrencyTemplate } from '../../constants/tokens' import { ChainInfo, SupportedChainId } from '../types' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' // TODO: this is the AVAX token logo, we should add Avalanche symbol logo as well const avaxLogo = `${RAW_CHAINS_FILES_PATH}/images/avax-logo.svg` diff --git a/packages/config/src/chains/details/base.ts b/packages/config/src/chains/details/base.ts index 3488a7c12..27cb45d44 100644 --- a/packages/config/src/chains/details/base.ts +++ b/packages/config/src/chains/details/base.ts @@ -1,6 +1,6 @@ import { ChainInfo, SupportedChainId } from '../types' -import { nativeCurrencyTemplate } from '../../common/consts/tokens' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { nativeCurrencyTemplate } from '../../constants/tokens' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const baseLogo = `${RAW_CHAINS_FILES_PATH}/images/base-logo.svg` diff --git a/packages/config/src/chains/details/gnosis.ts b/packages/config/src/chains/details/gnosis.ts index 925dd575f..7738fa9dc 100644 --- a/packages/config/src/chains/details/gnosis.ts +++ b/packages/config/src/chains/details/gnosis.ts @@ -1,6 +1,6 @@ import { ChainInfo, SupportedChainId } from '../types' -import { NATIVE_CURRENCY_ADDRESS, nativeCurrencyTemplate, TOKEN_LIST_IMAGES_PATH } from '../../common/consts/tokens' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { NATIVE_CURRENCY_ADDRESS, nativeCurrencyTemplate, TOKEN_LIST_IMAGES_PATH } from '../../constants/tokens' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const gnosisChainLogo = `${RAW_CHAINS_FILES_PATH}/images/gnosis-logo.svg` diff --git a/packages/config/src/chains/details/mainnet.ts b/packages/config/src/chains/details/mainnet.ts index d263a4273..18cba8bdf 100644 --- a/packages/config/src/chains/details/mainnet.ts +++ b/packages/config/src/chains/details/mainnet.ts @@ -1,6 +1,6 @@ -import { nativeCurrencyTemplate } from '../../common/consts/tokens' +import { nativeCurrencyTemplate } from '../../constants/tokens' import { ChainInfo, SupportedChainId } from '../types' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const ethereumLogo = `${RAW_CHAINS_FILES_PATH}/images/mainnet-logo.svg` diff --git a/packages/config/src/chains/details/optimism.ts b/packages/config/src/chains/details/optimism.ts index b4cc0b216..986bb1cd2 100644 --- a/packages/config/src/chains/details/optimism.ts +++ b/packages/config/src/chains/details/optimism.ts @@ -1,6 +1,6 @@ -import { nativeCurrencyTemplate } from '../../common/consts/tokens' +import { nativeCurrencyTemplate } from '../../constants/tokens' import { ChainInfo } from '../types' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const optimismLogo = `${RAW_CHAINS_FILES_PATH}/images/optimism-logo.svg` diff --git a/packages/config/src/chains/details/polygon.ts b/packages/config/src/chains/details/polygon.ts index de5159f10..fb8d9b0e1 100644 --- a/packages/config/src/chains/details/polygon.ts +++ b/packages/config/src/chains/details/polygon.ts @@ -1,6 +1,6 @@ -import { nativeCurrencyTemplate } from '../../common/consts/tokens' +import { nativeCurrencyTemplate } from '../../constants/tokens' import { ChainInfo } from '../types' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const polygonLogo = `${RAW_CHAINS_FILES_PATH}/images/polygon-logo.svg` diff --git a/packages/config/src/chains/details/sepolia.ts b/packages/config/src/chains/details/sepolia.ts index 0feddd7fb..9d0f5ee1b 100644 --- a/packages/config/src/chains/details/sepolia.ts +++ b/packages/config/src/chains/details/sepolia.ts @@ -1,6 +1,6 @@ import { ChainInfo, SupportedChainId } from '../types' -import { nativeCurrencyTemplate } from '../../common/consts/tokens' -import { RAW_CHAINS_FILES_PATH } from '../const/path' +import { nativeCurrencyTemplate } from '../../constants/tokens' +import { RAW_CHAINS_FILES_PATH } from '../../constants/paths' const sepoliaLogo = `${RAW_CHAINS_FILES_PATH}/images/sepolia-logo.svg` diff --git a/packages/config/src/chains/index.ts b/packages/config/src/chains/index.ts index 172f63d51..9de0f07d6 100644 --- a/packages/config/src/chains/index.ts +++ b/packages/config/src/chains/index.ts @@ -1,3 +1,11 @@ export * from './types' export * from './const' export * from './utils' +export * from './details/arbitrum' +export * from './details/avalanche' +export * from './details/base' +export * from './details/gnosis' +export * from './details/mainnet' +export * from './details/optimism' +export * from './details/polygon' +export * from './details/sepolia' diff --git a/packages/config/src/chains/types.ts b/packages/config/src/chains/types.ts index 2951e5844..27845cb8d 100644 --- a/packages/config/src/chains/types.ts +++ b/packages/config/src/chains/types.ts @@ -1,4 +1,4 @@ -import { TokenInfo } from '../common/types/tokens' +import { TokenInfo } from '../types/tokens' /** * Supported chains and their `chainId` for the SDK. diff --git a/packages/config/src/constants/config.ts b/packages/config/src/constants/config.ts deleted file mode 100644 index d2b700fa8..000000000 --- a/packages/config/src/constants/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { SupportedChainId } from '../../chains/types' -import { ApiContext, CowEnv } from '../types/config' - -/** - * The list of available environments. - */ -export const ENVS_LIST: CowEnv[] = ['prod', 'staging'] - -/** - * The default CoW Protocol API context. - */ -export const DEFAULT_COW_API_CONTEXT: ApiContext = { - env: 'prod', - chainId: SupportedChainId.MAINNET, -} diff --git a/packages/config/src/constants/index.ts b/packages/config/src/constants/index.ts new file mode 100644 index 000000000..005cd3114 --- /dev/null +++ b/packages/config/src/constants/index.ts @@ -0,0 +1,2 @@ +export * from './ipfs' +export * from './paths' diff --git a/packages/config/src/constants/path.ts b/packages/config/src/constants/path.ts deleted file mode 100644 index 4a60f32d4..000000000 --- a/packages/config/src/constants/path.ts +++ /dev/null @@ -1 +0,0 @@ -export const RAW_FILES_PATH = 'https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main' diff --git a/packages/config/src/constants/paths.ts b/packages/config/src/constants/paths.ts new file mode 100644 index 000000000..40b2a1cda --- /dev/null +++ b/packages/config/src/constants/paths.ts @@ -0,0 +1,9 @@ +// Base path to GitHub raw files +export const RAW_FILES_PATH = 'https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main' + +// for chains +export const RAW_CHAINS_FILES_PATH = `${RAW_FILES_PATH}/packages/config/src/chains` + +// for bridging package +export const RAW_PROVIDERS_FILES_PATH = `${RAW_FILES_PATH}/src/bridging/providers` // TODO: fix to packages/bridging after copy +export const DEFAULT_GAS_COST_FOR_HOOK_ESTIMATION = 110_000 // Based on https://dashboard.tenderly.co/anxolin/project/tx/0xc7d230c4119dabc7a4c332619a275d2390cf4596662be0524c04d1fa7a030c38/gas-usage diff --git a/packages/config/src/constants/tokens.ts b/packages/config/src/constants/tokens.ts index 80061fed8..49e624190 100644 --- a/packages/config/src/constants/tokens.ts +++ b/packages/config/src/constants/tokens.ts @@ -1,4 +1,4 @@ -import { SupportedChainId } from '../../chains/types' +import { SupportedChainId } from '../chains' import { TokenInfo } from '../types/tokens' export const NATIVE_CURRENCY_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts new file mode 100644 index 000000000..576fa2df7 --- /dev/null +++ b/packages/config/src/index.ts @@ -0,0 +1,7 @@ +/** + * Configuration constants and settings for CoW Protocol SDK + * @module @cowprotocol/sdk-config + */ +export * from './chains' +export * from './constants' +export * from './types' diff --git a/packages/config/src/types/config.ts b/packages/config/src/types/configs.ts similarity index 87% rename from packages/config/src/types/config.ts rename to packages/config/src/types/configs.ts index cf984f3d6..0782d90ce 100644 --- a/packages/config/src/types/config.ts +++ b/packages/config/src/types/configs.ts @@ -1,6 +1,6 @@ import { BackoffOptions } from 'exponential-backoff' -import { RateLimiterOpts } from 'limiter/dist/esm' -import { SupportedChainId } from '../../chains/types' +import { RateLimiterOpts } from 'limiter' +import { SupportedChainId } from '../chains' /** * IPFS configuration. @@ -74,3 +74,16 @@ export interface ApiContext { limiterOpts?: RateLimiterOpts backoffOpts?: BackoffOptions } + +/** + * The list of available environments. + */ +export const ENVS_LIST: CowEnv[] = ['prod', 'staging'] + +/** + * The default CoW Protocol API context. + */ +export const DEFAULT_COW_API_CONTEXT: ApiContext = { + env: 'prod', + chainId: SupportedChainId.MAINNET, +} diff --git a/packages/config/src/types/cow-error.ts b/packages/config/src/types/cow-error.ts deleted file mode 100644 index b6e79445c..000000000 --- a/packages/config/src/types/cow-error.ts +++ /dev/null @@ -1,8 +0,0 @@ -export class CowError extends Error { - error_code?: string - - constructor(message: string, error_code?: string) { - super(message) - this.error_code = error_code - } -} diff --git a/packages/config/src/types/ethereum.ts b/packages/config/src/types/ethereum.ts deleted file mode 100644 index ad776b03e..000000000 --- a/packages/config/src/types/ethereum.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface EvmCall { - to: string - data: string - value: bigint -} diff --git a/packages/config/src/types/index.ts b/packages/config/src/types/index.ts new file mode 100644 index 000000000..13f554e00 --- /dev/null +++ b/packages/config/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './configs' +export * from './tokens' diff --git a/packages/config/src/types/tokens.ts b/packages/config/src/types/tokens.ts index df757a2a3..8c5629e1a 100644 --- a/packages/config/src/types/tokens.ts +++ b/packages/config/src/types/tokens.ts @@ -1,4 +1,4 @@ -import { ChainId } from '../../chains/types' +import { ChainId } from '../chains' /** * Token on a chain. diff --git a/packages/config/src/types/wallets.ts b/packages/config/src/types/wallets.ts deleted file mode 100644 index 895021ade..000000000 --- a/packages/config/src/types/wallets.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { Signer } from 'ethers' -import type { ExternalProvider } from '@ethersproject/providers' - -export type PrivateKey = string // 64 characters -export type AccountAddress = `0x${string}` // 42 characters -export type SignerLike = Signer | ExternalProvider | PrivateKey From 420181cbacbf2f1496f2fde5e65bc5885fffd985 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 10:45:28 -0300 Subject: [PATCH 16/33] chore: update pnpm-lock --- pnpm-lock.yaml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb3c05e52..4037c7166 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -121,6 +121,28 @@ importers: specifier: ^5.2.2 version: 5.8.3 + packages/config: + dependencies: + exponential-backoff: + specifier: ^3.1.1 + version: 3.1.2 + limiter: + specifier: ^2.1.0 + version: 2.1.0 + devDependencies: + '@types/node': + specifier: ^20.17.31 + version: 20.17.51 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + packages/cow-sdk: dependencies: '@cowprotocol/app-data': @@ -4465,6 +4487,9 @@ packages: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} + just-performance@4.3.0: + resolution: {integrity: sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -4508,6 +4533,9 @@ packages: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} + limiter@2.1.0: + resolution: {integrity: sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==} + limiter@3.0.0: resolution: {integrity: sha512-hev7DuXojsTFl2YwyzUJMDnZ/qBDd3yZQLSH3aD4tdL1cqfc3TMnoecEJtWFaQFdErZsKoFMBTxF/FBSkgDbEg==} @@ -12087,6 +12115,8 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 + just-performance@4.3.0: {} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -12118,6 +12148,10 @@ snapshots: lilconfig@3.1.3: {} + limiter@2.1.0: + dependencies: + just-performance: 4.3.0 + limiter@3.0.0: {} lines-and-columns@1.2.4: {} From 422afd2e7613d6f7558764f149b15aae4be65390 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Wed, 28 May 2025 18:33:45 -0300 Subject: [PATCH 17/33] feat: implement adapter usage in app-data; update app-data config and test files --- .gitignore | 12 + packages/app-data/babel.config.cjs | 4 + packages/app-data/jest.config.cjs | 9 + packages/app-data/package.json | 94 ++---- .../{setupTests.js => setupTests.cjs} | 3 +- .../app-data/src/api/appDataHexToCid.spec.ts | 89 +++++- packages/app-data/src/api/appDataHexToCid.ts | 20 +- .../src/api/fetchDocFromAppData.spec.ts | 76 +++-- .../app-data/src/api/getAppDataInfo.spec.ts | 108 ++++++- packages/app-data/src/api/getAppDataInfo.ts | 27 +- .../app-data/src/api/getAppDataSchema.spec.ts | 4 +- packages/app-data/src/api/getAppDataSchema.ts | 5 +- packages/app-data/src/api/index.ts | 17 +- .../app-data/src/api/validateAppDataDoc.ts | 2 +- packages/app-data/src/importSchema.ts | 19 +- packages/app-data/src/scripts/compile.ts | 281 ++++++++++++------ packages/app-data/src/workflows/publish.sh | 44 --- packages/app-data/tsconfig.json | 15 +- packages/typescript-config/base.json | 4 +- 19 files changed, 569 insertions(+), 264 deletions(-) create mode 100644 packages/app-data/babel.config.cjs create mode 100644 packages/app-data/jest.config.cjs rename packages/app-data/{setupTests.js => setupTests.cjs} (65%) delete mode 100755 packages/app-data/src/workflows/publish.sh diff --git a/.gitignore b/.gitignore index f097de917..42434a016 100644 --- a/.gitignore +++ b/.gitignore @@ -5,11 +5,23 @@ node_modules .pnp +# Build dist coverage .coveralls.yml jest.results.json + +# IDE .idea *.iml + +# macOS +.DS_Store + +# Generated files packages/cow-sdk/src/common/generated packages/cow-sdk/docs/typedoc/ + + +#app-data +packages/app-data/schemas/ diff --git a/packages/app-data/babel.config.cjs b/packages/app-data/babel.config.cjs new file mode 100644 index 000000000..84cd62bca --- /dev/null +++ b/packages/app-data/babel.config.cjs @@ -0,0 +1,4 @@ +module.exports = { + presets: [['@babel/preset-env', { targets: { node: 'current' } }], '@babel/preset-typescript'], + plugins: [], +} diff --git a/packages/app-data/jest.config.cjs b/packages/app-data/jest.config.cjs new file mode 100644 index 000000000..be5d7f3cf --- /dev/null +++ b/packages/app-data/jest.config.cjs @@ -0,0 +1,9 @@ +module.exports = { + preset: 'ts-jest/presets/js-with-ts-esm', + testEnvironment: 'node', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + testMatch: ['**/src/**/*.spec.ts', '**/test/**/*.spec.ts'], + setupFilesAfterEnv: ['/setupTests.cjs'], +} diff --git a/packages/app-data/package.json b/packages/app-data/package.json index 75a1c42c2..70b736f53 100644 --- a/packages/app-data/package.json +++ b/packages/app-data/package.json @@ -1,60 +1,47 @@ { - "name": "@cowprotocol/app-data", - "version": "3.1.0", + "name": "@cowprotocol/sdk-app-data", + "version": "4.0.0", "description": "CoW Protocol AppData schema definitions", "type": "module", - "source": "src/index.ts", - "exports": { - ".": { - "types": "./dist/index.d.ts", - "require": "./dist/index.cjs", - "import": "./dist/index.module.mjs", - "default": "./dist/index.modern.mjs" - } - }, - "main": "./dist/index.cjs", - "module": "./dist/index.module.js", - "unpkg": "./dist/index.umd.js", - "types": "dist/index.d.ts", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "sideEffects": false, + "license": "MIT", "files": [ - "/dist", - "/schemas" + "dist/**", + "schemas/**" ], "scripts": { "clean": "rm -rf dist/* && rm -rf src/generatedTypes/* && rm -rf schemas/", - "compile": "node --loader ts-node/esm src/scripts/compile.ts --experimental-specifier-resolution=node", - "build": "yarn clean && yarn compile && microbundle -f modern,esm,cjs", - "test": "jest", - "prepare": "yarn build && yarn test" + "compile": "tsx src/scripts/compile.ts", + "prebuild": "pnpm run clean && pnpm run compile", + "build": "tsup src/index.ts --format esm,cjs --dts --external multiformats", + "dev": "pnpm run compile && tsup src/index.ts --format esm,cjs --watch --dts --external multiformats", + "lint": "eslint src/**/*.ts", + "test": "jest" }, - "repository": { - "type": "git", - "url": "git+https://github.com/cowprotocol/app-data.git" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/cowprotocol/app-data/issues" - }, - "homepage": "https://github.com/cowprotocol/app-data#readme", "devDependencies": { - "ethers": "^5.0.26", - "@babel/core": "^7.18.9", - "@babel/preset-env": "^7.18.9", - "@babel/preset-typescript": "^7.18.6", + "@repo/typescript-config": "workspace:*", + "@babel/core": "7.27.1", + "@babel/preset-env": "7.27.2", + "@babel/preset-typescript": "7.27.1", "@types/jest": "^29.4.0", + "@types/node": "^20.17.31", "@types/semver-sort": "^0.0.1", - "babel-jest": "^28.1.3", + "babel-jest": "29.7.0", "jest": "^29.4.2", "jest-fetch-mock": "^3.0.3", "json-schema-ref-parser": "^9.0.9", "json-schema-to-typescript": "^10.1.5", - "microbundle": "^0.15.1", - "prettier": "^2.7.1", - "semver-sort": "^1.0.0", - "ts-node": "^10.8.2", - "typescript": "^4.9.5" + "ts-jest": "^29.0.0", + "tsup": "^7.2.0", + "tsx": "^4.19.4", + "typescript": "^5.2.2", + "semver-sort": "^1.0.0" }, "dependencies": { + "@cowprotocol/sdk-common": "workspace:*", "ajv": "^8.11.0", "cross-fetch": "^3.1.5", "ipfs-only-hash": "^4.0.0", @@ -63,32 +50,7 @@ }, "peerDependencies": { "cross-fetch": "^3.x", - "ethers": "^5.0.0", "ipfs-only-hash": "^4.x", "multiformats": "^9.x" - }, - "jest": { - "automock": false, - "resetMocks": false, - "setupFiles": [ - "/setupTests.js" - ], - "collectCoverageFrom": [ - "src/**/*.{ts,tsx}", - "test/*.{ts,tsx}" - ] - }, - "babel": { - "presets": [ - [ - "@babel/preset-env", - { - "targets": { - "node": "current" - } - } - ], - "@babel/preset-typescript" - ] } -} \ No newline at end of file +} diff --git a/packages/app-data/setupTests.js b/packages/app-data/setupTests.cjs similarity index 65% rename from packages/app-data/setupTests.js rename to packages/app-data/setupTests.cjs index 2360fc52c..46f181a0d 100644 --- a/packages/app-data/setupTests.js +++ b/packages/app-data/setupTests.cjs @@ -1,8 +1,7 @@ -import fetchMock from 'jest-fetch-mock' +global.fetchMock = require('jest-fetch-mock') global.window = global fetchMock.enableMocks() jest.setMock('cross-fetch', fetchMock) - diff --git a/packages/app-data/src/api/appDataHexToCid.spec.ts b/packages/app-data/src/api/appDataHexToCid.spec.ts index 471988926..ddadb88ac 100644 --- a/packages/app-data/src/api/appDataHexToCid.spec.ts +++ b/packages/app-data/src/api/appDataHexToCid.spec.ts @@ -1,17 +1,83 @@ import { APP_DATA_HEX, APP_DATA_HEX_LEGACY, CID, CID_LEGACY } from '../mocks' import { appDataHexToCid, appDataHexToCidLegacy } from './appDataHexToCid' +import { AbstractProviderAdapter, getGlobalAdapter } from '@cowprotocol/sdk-common' + +jest.mock('multiformats/bases/base16', () => ({ + base16: { + encode: jest.fn().mockReturnValue(CID), + }, +})) + +jest.mock('multiformats/cid', () => ({ + CID: { + decode: jest.fn().mockImplementation(() => ({ + toV0: () => ({ + toString: () => CID_LEGACY, + }), + })), + }, +})) + +const mockAdapter: Partial = { + utils: { + arrayify: (value: string) => { + if (value === 'invalidHash') { + throw new Error('Invalid hash format') + } + return new Uint8Array([1, 2, 3, 4]) + }, + keccak256: (data: string | Uint8Array) => '0x' + data.toString(), + toUtf8Bytes: (text: string) => new Uint8Array(Array.from(text).map((c) => c.charCodeAt(0))), + }, +} + +// Mock the getGlobalAdapter function +jest.mock('@cowprotocol/sdk-common', () => { + const original = jest.requireActual('@cowprotocol/sdk-common') + return { + ...original, + getGlobalAdapter: jest.fn(() => mockAdapter), + } +}) + +beforeEach(() => { + jest.clearAllMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) describe('appDataHexToCid', () => { test('Happy path', async () => { // when const decodedAppDataHex = await appDataHexToCid(APP_DATA_HEX) + // then expect(decodedAppDataHex).toEqual(CID) + // Verify getGlobalAdapter was called + expect(getGlobalAdapter).toHaveBeenCalled() }) - test('Throws with wrong hash format ', async () => { + test('Throws with wrong hash format', async () => { + // Configure mock adapter to throw for invalidHash + ;(getGlobalAdapter as jest.Mock).mockImplementation(() => ({ + ...mockAdapter, + getAppDataUtils: () => ({ + arrayify: (value: string) => { + if (value === 'invalidHash') { + throw new Error('Invalid hash format') + } + return new Uint8Array([1, 2, 3, 4]) + }, + keccak256: (data: string | Uint8Array) => '0x' + data.toString(), + toUtf8Bytes: (text: string) => new Uint8Array(Array.from(text).map((c) => c.charCodeAt(0))), + }), + })) + // when const promise = appDataHexToCid('invalidHash') + // then await expect(promise).rejects.toThrow() }) @@ -21,13 +87,32 @@ describe('appDataHexToCidLegacy', () => { test('Happy path', async () => { // when const decodedAppDataHex = await appDataHexToCidLegacy(APP_DATA_HEX_LEGACY) + // then expect(decodedAppDataHex).toEqual(CID_LEGACY) + // Verify getGlobalAdapter was called + expect(getGlobalAdapter).toHaveBeenCalled() }) - test('Throws with wrong hash format ', async () => { + test('Throws with wrong hash format', async () => { + // Configure mock adapter to throw for invalidHash + ;(getGlobalAdapter as jest.Mock).mockImplementation(() => ({ + ...mockAdapter, + getAppDataUtils: () => ({ + arrayify: (value: string) => { + if (value === 'invalidHash') { + throw new Error('Invalid hash format') + } + return new Uint8Array([1, 2, 3, 4]) + }, + keccak256: (data: string | Uint8Array) => '0x' + data.toString(), + toUtf8Bytes: (text: string) => new Uint8Array(Array.from(text).map((c) => c.charCodeAt(0))), + }), + })) + // when const promise = appDataHexToCidLegacy('invalidHash') + // then await expect(promise).rejects.toThrow() }) diff --git a/packages/app-data/src/api/appDataHexToCid.ts b/packages/app-data/src/api/appDataHexToCid.ts index 92478db66..dcd3da905 100644 --- a/packages/app-data/src/api/appDataHexToCid.ts +++ b/packages/app-data/src/api/appDataHexToCid.ts @@ -1,3 +1,4 @@ +import { getGlobalAdapter } from '@cowprotocol/sdk-common' import { MetaDataError } from '../consts' /** @@ -9,7 +10,6 @@ import { MetaDataError } from '../consts' export async function appDataHexToCid(appDataHex: string): Promise { const cid = await _appDataHexToCid(appDataHex) _assertCid(cid, appDataHex) - return cid } @@ -67,7 +67,7 @@ async function _appDataHexToCidLegacy(appDataHex: string): Promise { return CID.decode(cidBytes).toV0().toString() } -interface ToCidParmams { +interface ToCidParams { version: number multicodec: number hashingAlgorithm: number @@ -75,20 +75,12 @@ interface ToCidParmams { multihashHex: string } -async function _toCidBytes({ - version, - multicodec, - hashingAlgorithm, - hashingLength, - multihashHex, -}: ToCidParmams): Promise { - const module = await import('ethers/lib/utils') - const { arrayify } = module.default || module - const hashBytes = arrayify(multihashHex) +async function _toCidBytes(params: ToCidParams): Promise { + const hashBytes = getGlobalAdapter().utils.arrayify(params.multihashHex) // Concat prefix and multihash - const cidPrefix = Uint8Array.from([version, multicodec, hashingAlgorithm, hashingLength]) - var cidBytes = new Uint8Array(cidPrefix.length + hashBytes.length) + const cidPrefix = Uint8Array.from([params.version, params.multicodec, params.hashingAlgorithm, params.hashingLength]) + const cidBytes = new Uint8Array(cidPrefix.length + hashBytes.length) cidBytes.set(cidPrefix) cidBytes.set(hashBytes, cidPrefix.length) diff --git a/packages/app-data/src/api/fetchDocFromAppData.spec.ts b/packages/app-data/src/api/fetchDocFromAppData.spec.ts index f6e5f6977..99b10b9cd 100644 --- a/packages/app-data/src/api/fetchDocFromAppData.spec.ts +++ b/packages/app-data/src/api/fetchDocFromAppData.spec.ts @@ -1,41 +1,73 @@ -import { DEFAULT_IPFS_READ_URI } from '../consts' -import { - APP_DATA_DOC_CUSTOM, - APP_DATA_HEX_LEGACY, - CID_LEGACY, - HTTP_STATUS_INTERNAL_ERROR, - HTTP_STATUS_OK, -} from '../mocks' - +import { APP_DATA_DOC_CUSTOM, APP_DATA_HEX_LEGACY, CID_LEGACY } from '../mocks' import { fetchDocFromAppDataHex, fetchDocFromAppDataHexLegacy } from './fetchDocFromAppData' +import { AbstractProviderAdapter } from '@cowprotocol/sdk-common' +import fetchMock from 'jest-fetch-mock' +import { appDataHexToCidLegacy } from './appDataHexToCid' +import { fetchDocFromCid } from './fetchDocFromCid' + +fetchMock.enableMocks() + +// Create a mock adapter +const mockAdapter: Partial = { + utils: { + arrayify: () => new Uint8Array([1, 2, 3, 4]), + keccak256: () => '0x12345678', + toUtf8Bytes: () => new Uint8Array([1, 2, 3, 4]), + }, +} -// beforeEach(() => { -// fetchMock.resetMocks() -// }) +// Mock the modules +jest.mock('@cowprotocol/sdk-common', () => { + const original = jest.requireActual('@cowprotocol/sdk-common') + return { + ...original, + getGlobalAdapter: jest.fn(() => mockAdapter), + } +}) + +jest.mock('./appDataHexToCid', () => ({ + appDataHexToCid: jest.fn(async (hash) => { + if (hash === 'invalidHash') { + throw new Error('Invalid hash format') + } + return 'valid-cid' + }), + appDataHexToCidLegacy: jest.fn(async () => CID_LEGACY), +})) -// afterEach(() => { -// jest.restoreAllMocks() -// }) +jest.mock('./fetchDocFromCid', () => ({ + fetchDocFromCid: jest.fn(async (cid) => { + if (cid === CID_LEGACY) { + return APP_DATA_DOC_CUSTOM + } + return {} + }), +})) + +beforeEach(() => { + fetchMock.resetMocks() + jest.clearAllMocks() +}) + +afterEach(() => { + jest.restoreAllMocks() +}) describe('fetchDocFromAppData', () => { test('Decodes appData', async () => { - // given - fetchMock.mockResponseOnce(JSON.stringify(APP_DATA_DOC_CUSTOM), { status: HTTP_STATUS_OK }) - // when const appDataDoc = await fetchDocFromAppDataHexLegacy(APP_DATA_HEX_LEGACY) // then - expect(fetchMock).toHaveBeenCalledTimes(1) - expect(fetchMock).toHaveBeenCalledWith(`${DEFAULT_IPFS_READ_URI}/${CID_LEGACY}`) + expect(appDataHexToCidLegacy).toHaveBeenCalledWith(APP_DATA_HEX_LEGACY) + expect(fetchDocFromCid).toHaveBeenCalledWith(CID_LEGACY, undefined) expect(appDataDoc).toEqual(APP_DATA_DOC_CUSTOM) }) test('Throws with wrong hash format', async () => { - // given - fetchMock.mockResponseOnce(JSON.stringify({}), { status: HTTP_STATUS_INTERNAL_ERROR }) // when const promise = fetchDocFromAppDataHex('invalidHash') + // then await expect(promise).rejects.toThrow(/Error decoding AppData:/) }) diff --git a/packages/app-data/src/api/getAppDataInfo.spec.ts b/packages/app-data/src/api/getAppDataInfo.spec.ts index 438d17e60..e2fa4692a 100644 --- a/packages/app-data/src/api/getAppDataInfo.spec.ts +++ b/packages/app-data/src/api/getAppDataInfo.spec.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-require-imports */ import fetchMock from 'jest-fetch-mock' import { APP_DATA_DOC, @@ -11,10 +12,77 @@ import { CID_LEGACY, } from '../mocks' import { getAppDataInfo, getAppDataInfoLegacy } from './getAppDataInfo' -import { stringifyDeterministic } from '..' +import { AbstractProviderAdapter } from '@cowprotocol/sdk-common' + +// Create a mock adapter +const mockAdapter: Partial = { + utils: { + arrayify: () => new Uint8Array([1, 2, 3, 4]), + keccak256: () => APP_DATA_HEX, + toUtf8Bytes: () => new Uint8Array([1, 2, 3, 4]), + }, +} + +// Mock modules +jest.mock('@cowprotocol/sdk-common', () => { + const original = jest.requireActual('@cowprotocol/sdk-common') + return { + ...original, + getGlobalAdapter: jest.fn(() => mockAdapter), + } +}) + +jest.mock('./validateAppDataDoc', () => ({ + validateAppDataDoc: jest.fn((appDataDoc) => { + // Check if it's the invalid doc we're testing + if (appDataDoc?.metadata?.quote?.sellAmount === 'fsdfas') { + return { success: false, errors: 'Test validation error' } + } + // Otherwise return success + return { success: true } + }), +})) + +jest.mock('./appDataHexToCid', () => ({ + appDataHexToCid: jest.fn().mockImplementation(async () => CID), +})) + +jest.mock('../utils/ipfs', () => ({ + extractDigest: jest.fn().mockImplementation(() => APP_DATA_HEX), +})) + +jest.mock('../utils/stringify', () => ({ + stringifyDeterministic: jest.fn().mockResolvedValue(APP_DATA_STRING), +})) + +// Mock ipfs-only-hash for legacy CID generation +jest.mock( + 'ipfs-only-hash', + () => ({ + of: jest.fn().mockReturnValue(CID_LEGACY), + }), + { virtual: true }, +) beforeEach(() => { fetchMock.resetMocks() + jest.clearAllMocks() + + // Update mock return values for specific tests + const { extractDigest } = require('../utils/ipfs') + extractDigest.mockImplementation((cid: string) => { + if (cid === CID) return APP_DATA_HEX + if (cid === CID_2) return APP_DATA_HEX_2 + if (cid === CID_LEGACY) return APP_DATA_HEX_LEGACY + return APP_DATA_HEX + }) + + const { appDataHexToCid } = require('./appDataHexToCid') + appDataHexToCid.mockImplementation(async (hex: string) => { + if (hex === APP_DATA_HEX) return CID + if (hex === APP_DATA_HEX_2) return CID_2 + return CID + }) }) afterEach(() => { @@ -23,6 +91,10 @@ afterEach(() => { describe('getAppDataInfo', () => { test('Happy path with fullAppData string', async () => { + // Setup mock for this test + const { stringifyDeterministic } = require('../utils/stringify') + stringifyDeterministic.mockResolvedValueOnce(APP_DATA_STRING) + // when const result = await getAppDataInfo(APP_DATA_STRING) @@ -32,6 +104,10 @@ describe('getAppDataInfo', () => { }) test('Happy path with appData doc', async () => { + // Setup mocks for this test + const { stringifyDeterministic } = require('../utils/stringify') + stringifyDeterministic.mockResolvedValueOnce(APP_DATA_STRING) + // when const result = await getAppDataInfo(APP_DATA_DOC) @@ -40,11 +116,19 @@ describe('getAppDataInfo', () => { expect(result).toEqual({ cid: CID, appDataHex: APP_DATA_HEX, - appDataContent: await stringifyDeterministic(APP_DATA_DOC), + appDataContent: APP_DATA_STRING, }) }) - test('Happy path with appData doc 2 ', async () => { + test('Happy path with appData doc 2', async () => { + // Setup mocks for this test + const { stringifyDeterministic } = require('../utils/stringify') + stringifyDeterministic.mockResolvedValueOnce(APP_DATA_STRING_2) + const { appDataHexToCid } = require('./appDataHexToCid') + appDataHexToCid.mockResolvedValueOnce(CID_2) + const { extractDigest } = require('../utils/ipfs') + extractDigest.mockReturnValueOnce(APP_DATA_HEX_2) + // when const result = await getAppDataInfo(APP_DATA_STRING_2) @@ -70,15 +154,29 @@ describe('getAppDataInfo', () => { describe('getAppDataInfoLegacy', () => { test('Happy path', async () => { + // Mock JSON.stringify + const originalStringify = JSON.stringify + global.JSON.stringify = jest.fn().mockReturnValue(APP_DATA_STRING) + + // Setup mocks for this test + const ipfsOnlyHash = require('ipfs-only-hash') + ipfsOnlyHash.of.mockReturnValueOnce(CID_LEGACY) + const { extractDigest } = require('../utils/ipfs') + extractDigest.mockReturnValueOnce(APP_DATA_HEX_LEGACY) + // when const result = await getAppDataInfoLegacy(APP_DATA_DOC) + // then expect(result).not.toBeFalsy() expect(result).toEqual({ cid: CID_LEGACY, appDataHex: APP_DATA_HEX_LEGACY, - appDataContent: JSON.stringify(APP_DATA_DOC), // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + appDataContent: APP_DATA_STRING, }) + + // Restore JSON.stringify + global.JSON.stringify = originalStringify }) test('Throws with invalid appDoc', async () => { @@ -87,8 +185,10 @@ describe('getAppDataInfoLegacy', () => { ...APP_DATA_DOC, metadata: { quote: { sellAmount: 'fsdfas', buyAmount: '41231', version: '0.1.0' } }, } + // when const promise = getAppDataInfoLegacy(doc) + // then await expect(promise).rejects.toThrow('Invalid appData provided') }) diff --git a/packages/app-data/src/api/getAppDataInfo.ts b/packages/app-data/src/api/getAppDataInfo.ts index b78773061..302793ca1 100644 --- a/packages/app-data/src/api/getAppDataInfo.ts +++ b/packages/app-data/src/api/getAppDataInfo.ts @@ -1,3 +1,4 @@ +import { getGlobalAdapter } from '@cowprotocol/sdk-common' import { MetaDataError } from '../consts' import { AnyAppDataDocVersion } from '../generatedTypes' import { AppDataInfo } from '../types' @@ -66,21 +67,21 @@ export async function getAppDataInfoLegacy(fullAppData: string): Promise { - // For the legacy-mode we use plain JSON.stringify to mantain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic + // For the legacy-mode we use plain JSON.stringify to maintain backwards compatibility, however this is not a good idea to do since JSON.stringify. Better specify the doc as a fullAppData string or use stringifyDeterministic const fullAppData = JSON.stringify(appDataAux) return _appDataToCidAux(fullAppData, _appDataToCidLegacy) } export async function _appDataToCidAux( appDataAux: AnyAppDataDocVersion | string, - deriveCid: (fullAppData: string) => Promise + deriveCid: (fullAppData: string) => Promise, ): Promise { const [appDataDoc, fullAppData] = typeof appDataAux === 'string' ? [JSON.parse(appDataAux), appDataAux] - : [appDataAux, await stringifyDeterministic(appDataAux)] + : [appDataAux, await stringifyDeterministic(appDataAux as Record)] const validation = await validateAppDataDoc(appDataDoc) @@ -105,21 +106,25 @@ export async function _appDataToCidAux( } /** - * Derive the IPFS CID v0 from the full appData JSON content + * Derive the IPFS CID v0 from the full appData JSON content * - * @param fullAppData string with the full AppData in JSON format. It is a string to make the hashing deterministic (do not rely on stringification of objects) + * @param fullAppDataJson string with the full AppData in JSON format. It is a string to make the hashing deterministic (do not rely on stringification of objects) * @returns the IPFS CID v0 of the content */ async function _appDataToCid(fullAppDataJson: string): Promise { - const module = await import('ethers/lib/utils') - const { keccak256, toUtf8Bytes } = module.default || module - - const appDataHex = await keccak256(toUtf8Bytes(fullAppDataJson)) + const adapter = getGlobalAdapter() + const appDataHex = adapter.utils.keccak256(adapter.utils.toUtf8Bytes(fullAppDataJson)) return appDataHexToCid(appDataHex) } +/** + * Derive CID using legacy method + * + * @param doc App data document or JSON string + * @returns IPFS CID + */ export async function _appDataToCidLegacy(doc: AnyAppDataDocVersion | string): Promise { - const fullAppData = typeof doc === 'string' ? doc : stringifyDeterministic(doc) + const fullAppData = typeof doc === 'string' ? doc : await stringifyDeterministic(doc as Record) // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore diff --git a/packages/app-data/src/api/getAppDataSchema.spec.ts b/packages/app-data/src/api/getAppDataSchema.spec.ts index c43bbed3d..12a7561ca 100644 --- a/packages/app-data/src/api/getAppDataSchema.spec.ts +++ b/packages/app-data/src/api/getAppDataSchema.spec.ts @@ -7,7 +7,7 @@ describe('getAppDataSchema', () => { // when const schema = await getAppDataSchema(version) // then - // @ts-ignore + // @ts-expect-error schema.$id exists but TypeScript doesn't know about it expect(schema.$id).toMatch(version) }) @@ -49,7 +49,7 @@ function _buildAssertVersionFn(version: string) { // when const schema = await getAppDataSchema(version) // then - // @ts-ignore + // @ts-expect-error schema.$id exists but TypeScript doesn't know about it expect(schema.$id).toMatch(version) } } diff --git a/packages/app-data/src/api/getAppDataSchema.ts b/packages/app-data/src/api/getAppDataSchema.ts index abd758264..7b2f794ad 100644 --- a/packages/app-data/src/api/getAppDataSchema.ts +++ b/packages/app-data/src/api/getAppDataSchema.ts @@ -3,7 +3,7 @@ import { MetaDataError } from '../consts' import { importSchema } from '../importSchema' /** - * Wrapper around @cowprotocol/app-data getAppDataSchema + * Wrapper around @cowprotocol/sdk-app-data getAppDataSchema * * Returns the appData schema for given version, if any * Throws CowError when version doesn't exist @@ -12,7 +12,8 @@ export async function getAppDataSchema(version: string): Promise appData + // Legacy methods legacy = { // Fetch appData document from IPFS (deprecated) fetchDocFromCid: fetchDocFromCid, // cid --> document diff --git a/packages/app-data/src/api/validateAppDataDoc.ts b/packages/app-data/src/api/validateAppDataDoc.ts index 8953435e4..a6b173347 100644 --- a/packages/app-data/src/api/validateAppDataDoc.ts +++ b/packages/app-data/src/api/validateAppDataDoc.ts @@ -6,7 +6,7 @@ import { AnyAppDataDocVersion } from '../generatedTypes' import { importSchema } from '../importSchema' let _ajvPromise: Promise | undefined -let _validatorPromises: Record> | undefined> = {} +const _validatorPromises: Record> | undefined> = {} async function getAjv(): Promise { if (!_ajvPromise) { diff --git a/packages/app-data/src/importSchema.ts b/packages/app-data/src/importSchema.ts index 4d3cdb2f8..3738b9990 100644 --- a/packages/app-data/src/importSchema.ts +++ b/packages/app-data/src/importSchema.ts @@ -1,11 +1,28 @@ import { AnyAppDataDocVersion } from './generatedTypes' +import * as fs from 'fs' +import * as path from 'path' + +const SCHEMAS_DIR = path.resolve(process.cwd(), 'schemas') +const schemaCache: Record = {} export async function importSchema(version: string): Promise { if (!/^\d+\.\d+\.\d+$/.test(version)) { throw new Error(`AppData version ${version} is not a valid version`) } + + if (schemaCache[version]) { + return schemaCache[version] + } + try { - return await import(`../schemas/v${version}.json`) + const schemaPath = path.join(SCHEMAS_DIR, `v${version}.json`) + + const content = fs.readFileSync(schemaPath, 'utf8') + const schema = JSON.parse(content) as AnyAppDataDocVersion + + schemaCache[version] = schema + + return schema } catch (e) { throw new Error(`AppData version ${version} doesn't exist`) } diff --git a/packages/app-data/src/scripts/compile.ts b/packages/app-data/src/scripts/compile.ts index c775dba56..ab23c4ba1 100644 --- a/packages/app-data/src/scripts/compile.ts +++ b/packages/app-data/src/scripts/compile.ts @@ -3,16 +3,35 @@ import $RefParser from 'json-schema-ref-parser' import { compileFromFile } from 'json-schema-to-typescript' import * as path from 'path' import semverSort from 'semver-sort' +import { fileURLToPath } from 'url' -const SCHEMAS_SRC_PATH = path.join('src', 'schemas') -const SCHEMAS_DEST_PATH = 'schemas' -const TYPES_DEST_PATH = path.join('src', 'generatedTypes') +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) + +const SCHEMAS_SRC_PATH = path.resolve(__dirname, '..', 'schemas') +const SCHEMAS_DEST_PATH = path.resolve(__dirname, '..', '..', 'schemas') +const TYPES_DEST_PATH = path.resolve(__dirname, '..', 'generatedTypes') async function compile(): Promise { // Creates destinations dirs + console.log('Starting compilation...') + console.log(`Source schemas path: ${SCHEMAS_SRC_PATH}`) + console.log(`Destination schemas path: ${SCHEMAS_DEST_PATH}`) + console.log(`Types destination path: ${TYPES_DEST_PATH}`) + + // Check if the schemas directory exists + try { + await fs.promises.access(SCHEMAS_SRC_PATH) + } catch { + console.error(`Schemas directory ${SCHEMAS_SRC_PATH} does not exist or is not accessible!`) + console.error('Make sure you have copied the schema files from the original app-data repository') + return + } + + // Creates destination dirs console.info(`Creating '${TYPES_DEST_PATH}' and '${SCHEMAS_DEST_PATH}' dirs`) await fs.promises.mkdir(TYPES_DEST_PATH, { recursive: true }) - await fs.promises.mkdir(SCHEMAS_DEST_PATH) + await fs.promises.mkdir(SCHEMAS_DEST_PATH, { recursive: true }) // Generates out file for types/index.ts const typesIndexPath = path.join(TYPES_DEST_PATH, 'index.ts') @@ -21,94 +40,155 @@ async function compile(): Promise { // Generates out file for types/latest.ts const latestIndexPath = path.join(TYPES_DEST_PATH, 'latest.ts') + console.info(`Creating ${latestIndexPath} file`) const latestIndexFile = await fs.promises.open(latestIndexPath, 'w') const generatedFiles = [typesIndexFile, latestIndexFile] - await generatedFiles.forEach(async (file) => { - file.write(`// generated file, do not edit manually\n\n`) - }) - - // Lists all schemas - const schemas = await fs.promises.readdir(SCHEMAS_SRC_PATH, { withFileTypes: true }) - const versions: string[] = [] - - for (const schemaFileName of schemas) { - // Ignores folders and non version schemas - if (!schemaFileName.isFile() || !/^v\d+\.\d+\.\d+\.json$/.test(schemaFileName.name)) continue - - // Extracts version from file name - const [version] = schemaFileName.name.split('.json') - versions.push(version) - - // Get schema path relative to repo root - const schemaPath = path.join(SCHEMAS_SRC_PATH, schemaFileName.name) - - // Compiles schema files de-referencing `$ref`s - console.info(`Compiling bundled schema file for ${schemaPath}`) - const newSchemaFile = await $RefParser.bundle(schemaPath) - await fs.promises.writeFile(path.join(SCHEMAS_DEST_PATH, `${version}.json`), JSON.stringify(newSchemaFile)) - - // Compiles schema onto ts type declarations - console.info(`Compiling ts typings for ${schemaPath}`) - const tsFile = await compileFromFile(schemaPath, { cwd: SCHEMAS_SRC_PATH }) - await fs.promises.writeFile(path.join(TYPES_DEST_PATH, `${version}.ts`), tsFile) - - // Add export on types/index.ts for this version - console.info(`Adding ts export for ${version}`) - const exportName = version.replace(/\./g, '_') - const versionImportPath = `./${version}` - await typesIndexFile.write(`import * as ${exportName} from '${versionImportPath}'\n`) + for (const file of generatedFiles) { + await file.write(`// generated file, do not edit manually\n\n`) } - // Select latest version and also expose all versions - if (versions.length) { - const latest = semverSort.desc(versions)[0] - const latestExport = versionNameToExport(latest) - const allVersions = versions.map((version) => `\n | ${versionNameToExport(version)}.AppDataRootSchema`).join('') - const latestQuoteVersion = await getLatestMetadataDocVersion('quote') - const latestReferrerVersion = await getLatestMetadataDocVersion('referrer') - const latestOrderClassVersion = await getLatestMetadataDocVersion('orderClass') - const latestUtmVersion = await getLatestMetadataDocVersion('utm') - const latestHooksVersion = await getLatestMetadataDocVersion('hooks') - const latestSignerVersion = await getLatestMetadataDocVersion('signer') - const latestWidgetVersion = await getLatestMetadataDocVersion('widget') - const latestPartnerFeeVersion = await getLatestMetadataDocVersion('partnerFee') - const latestReplacedOrderVersion = await getLatestMetadataDocVersion('replacedOrder') - - const additionalTypesExport = ` -export * from './latest' - -export const LATEST_APP_DATA_VERSION = '${extractSemver(latest)}' -export const LATEST_QUOTE_METADATA_VERSION = '${extractSemver(latestQuoteVersion)}' -export const LATEST_REFERRER_METADATA_VERSION = '${extractSemver(latestReferrerVersion)}' -export const LATEST_ORDER_CLASS_METADATA_VERSION = '${extractSemver(latestOrderClassVersion)}' -export const LATEST_UTM_METADATA_VERSION = '${extractSemver(latestUtmVersion)}' -export const LATEST_HOOKS_METADATA_VERSION = '${extractSemver(latestHooksVersion)}' -export const LATEST_SIGNER_METADATA_VERSION = '${extractSemver(latestSignerVersion)}' -export const LATEST_WIDGET_METADATA_VERSION = '${extractSemver(latestWidgetVersion)}' -export const LATEST_PARTNER_FEE_METADATA_VERSION = '${extractSemver(latestPartnerFeeVersion)}' -export const LATEST_REPLACED_ORDER_METADATA_VERSION = '${extractSemver(latestReplacedOrderVersion)}' - -export type LatestAppDataDocVersion = ${latestExport}.AppDataRootSchema -export type AnyAppDataDocVersion = ${allVersions} - -export {${versions.map((version) => `\n ${versionNameToExport(version)}`)} -} -` - // Writes exports to types/index.ts - await typesIndexFile.write(additionalTypesExport) - - // Writes exports to types/latest.ts - await latestIndexFile.write(`export * as latest from './${latest}'\n`) + // Lists all schemas + try { + const schemaFiles = await fs.promises.readdir(SCHEMAS_SRC_PATH) + console.log(`Found ${schemaFiles.length} files in schemas directory`) + + const versionSchemas = schemaFiles.filter((filename) => /^v\d+\.\d+\.\d+\.json$/.test(filename)) + console.log(`Found ${versionSchemas.length} version schema files`) + + const versions: string[] = [] + + for (const schemaFileName of versionSchemas) { + // Extracts version from file name + const version = schemaFileName.split('.json')[0] + if (!version) continue + versions.push(version) + + // Get schema path relative to repo root + const schemaPath = path.join(SCHEMAS_SRC_PATH, schemaFileName) + + // Compiles schema files de-referencing `$ref`s + console.info(`Compiling bundled schema file for ${schemaPath}`) + const parser = new ($RefParser as unknown as { new (): $RefParser })() + const newSchemaFile = await parser.bundle(schemaPath) + await fs.promises.writeFile(path.join(SCHEMAS_DEST_PATH, `${version}.json`), JSON.stringify(newSchemaFile)) + + // Compiles schema onto ts type declarations + console.info(`Compiling ts typings for ${schemaPath}`) + try { + const tsFile = await compileFromFile(schemaPath, { cwd: SCHEMAS_SRC_PATH }) + await fs.promises.writeFile(path.join(TYPES_DEST_PATH, `${version}.ts`), tsFile) + + // Add export on types/index.ts for this version + console.info(`Adding ts export for ${version}`) + const exportName = version.replace(/\./g, '_') + const versionImportPath = `./${version}` + await typesIndexFile.write(`import * as ${exportName} from '${versionImportPath}'\n`) + } catch (error) { + console.error(`Error compiling typings for ${schemaPath}:`, error) + } + } + console.log(`Processed ${versions.length} version schemas`) + + // Select latest version and also expose all versions + if (versions.length) { + const latest = semverSort.desc(versions)[0] + if (!latest) { + console.error('No latest version found') + return + } + console.log(`Latest version is ${latest}`) + + const latestExport = versionNameToExport(latest) + const allVersions = versions.map((version) => `\n | ${versionNameToExport(version)}.AppDataRootSchema`).join('') + + try { + // Get latest metadata versions + console.log('Getting latest metadata versions...') + const metadataResults = await Promise.allSettled([ + getLatestMetadataDocVersion('quote'), + getLatestMetadataDocVersion('referrer'), + getLatestMetadataDocVersion('orderClass'), + getLatestMetadataDocVersion('utm'), + getLatestMetadataDocVersion('hooks'), + getLatestMetadataDocVersion('signer'), + getLatestMetadataDocVersion('widget'), + getLatestMetadataDocVersion('partnerFee'), + getLatestMetadataDocVersion('replacedOrder'), + ]) + + const [ + latestQuoteVersion, + latestReferrerVersion, + latestOrderClassVersion, + latestUtmVersion, + latestHooksVersion, + latestSignerVersion, + latestWidgetVersion, + latestPartnerFeeVersion, + latestReplacedOrderVersion, + ] = metadataResults.map((result) => (result.status === 'fulfilled' ? result.value : '')) + + const additionalTypesExport = ` + export * from './latest' + + export const LATEST_APP_DATA_VERSION = '${extractSemver(latest)}' + export const LATEST_QUOTE_METADATA_VERSION = '${extractSemver(latestQuoteVersion || '')}' + export const LATEST_REFERRER_METADATA_VERSION = '${extractSemver(latestReferrerVersion || '')}' + export const LATEST_ORDER_CLASS_METADATA_VERSION = '${extractSemver(latestOrderClassVersion || '')}' + export const LATEST_UTM_METADATA_VERSION = '${extractSemver(latestUtmVersion || '')}' + export const LATEST_HOOKS_METADATA_VERSION = '${extractSemver(latestHooksVersion || '')}' + export const LATEST_SIGNER_METADATA_VERSION = '${extractSemver(latestSignerVersion || '')}' + export const LATEST_WIDGET_METADATA_VERSION = '${extractSemver(latestWidgetVersion || '')}' + export const LATEST_PARTNER_FEE_METADATA_VERSION = '${extractSemver(latestPartnerFeeVersion || '')}' + export const LATEST_REPLACED_ORDER_METADATA_VERSION = '${extractSemver(latestReplacedOrderVersion || '')}' + + export type LatestAppDataDocVersion = ${latestExport}.AppDataRootSchema + export type AnyAppDataDocVersion = ${allVersions} + + export {${versions.map((version) => `\n ${versionNameToExport(version)}`)} + } + ` + // Write exports to types/index.ts + await typesIndexFile.write(additionalTypesExport) + + // Write exports to types/latest.ts + await latestIndexFile.write(`export * as latest from './${latest}'\n`) + } catch (e) { + console.error('Error generating metadata version exports:', e) + + // Simplified version without specific metadata + const additionalTypesExport = ` + export * from './latest' + + export const LATEST_APP_DATA_VERSION = '${extractSemver(latest)}' + + export type LatestAppDataDocVersion = ${latestExport}.AppDataRootSchema + export type AnyAppDataDocVersion = ${allVersions} + + export {${versions.map((version) => `\n ${versionNameToExport(version)}`)} + } + ` + // Writes exports to types/index.ts + await typesIndexFile.write(additionalTypesExport) + + // Writes exports to types/latest.ts + await latestIndexFile.write(`export * as latest from './${latest}'\n`) + } + } else { + console.error('No version schemas found!') + } + } catch (e) { + console.error('Error processing schemas:', e) } // Closes all files for (const file of generatedFiles) { await file.close() } -} -compile().then(() => console.log('Done')) + console.log('Compilation completed successfully!') +} function versionNameToExport(name: string): string { return name.replace(/\./g, '_') @@ -128,9 +208,44 @@ async function getLatestMetadataDocVersion( | 'signer' | 'widget' | 'partnerFee' - | 'replacedOrder' + | 'replacedOrder', ): Promise { const metadataPath = path.join(SCHEMAS_SRC_PATH, metadataDocName) - const versions = await fs.promises.readdir(metadataPath) - return semverSort.desc(versions)[0] + try { + const exists = await fs.promises + .access(metadataPath) + .then(() => true) + .catch(() => false) + if (!exists) { + console.warn(`Metadata directory ${metadataPath} does not exist`) + return '' + } + + const files = await fs.promises.readdir(metadataPath) + if (files.length === 0) { + console.warn(`No files found in ${metadataPath}`) + return '' + } + + const versionFiles = files.filter((file) => /^v\d+\.\d+\.\d+\.json$/.test(file)) + if (versionFiles.length === 0) { + console.warn(`No version files found in ${metadataPath}`) + return '' + } + + const versions = versionFiles.map((file) => file.split('.json')[0]) + + return semverSort.desc(versions.filter((v): v is string => v !== undefined))[0] || '' + } catch (e) { + console.warn(`Error getting latest metadata version for ${metadataDocName}:`, e) + return '' + } } + +// execution the compilation +compile() + .then(() => console.log('Done!')) + .catch((e) => { + console.error('Compilation failed with error:', e) + process.exit(1) + }) diff --git a/packages/app-data/src/workflows/publish.sh b/packages/app-data/src/workflows/publish.sh deleted file mode 100755 index 7bc1aa543..000000000 --- a/packages/app-data/src/workflows/publish.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash - -set -o nounset -set -o pipefail -set -o errexit - -fail_if_unset() { - local var_name="$1" - if [[ -z "${!var_name:-""}" ]]; then - printf '%s not set\n' "$var_name" >&2 - exit 1 - fi -} - -package_exists() { - npm view --json "$1" &>/dev/null -} - -fail_if_unset NODE_AUTH_TOKEN - -package_name="$(jq --raw-output .name ./package.json)" -version="$(jq --raw-output .version ./package.json)" - -if package_exists "$package_name" && grep --silent --line-regexp --fixed-strings -- "$version" \ - <(npm view --json "$package_name" | jq '.versions[] | .' --raw-output); then - echo "Version $version already published" - exit 1 -fi - -version_tag="v$version" -if ! git fetch --end-of-options origin "refs/tags/$version_tag" 2>/dev/null; then - echo "Tag $version_tag is not created. Create the Release first." - exit 1 -fi - -latest_tag="$(git describe --tags --abbrev=0)" -if ! [ "$version_tag" = "$latest_tag" ]; then - echo "Latest tag $latest_tag version doesn't match package.json version $version" - exit 1 -fi - -npm publish --access public - -echo "Package $package_name version $version successfully published." diff --git a/packages/app-data/tsconfig.json b/packages/app-data/tsconfig.json index 826a5b38a..b10afa0ea 100644 --- a/packages/app-data/tsconfig.json +++ b/packages/app-data/tsconfig.json @@ -1,15 +1,14 @@ { + "extends": "@repo/typescript-config/base.json", "compilerOptions": { + "outDir": "./dist", "moduleResolution": "node", "module": "ESNext", "target": "ESNext", - "strict": true, - "alwaysStrict": true, - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "noUnusedLocals": true, + "baseUrl": "src", "skipLibCheck": true, - "baseUrl": "src" - } + "types": ["jest"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] } diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json index ee44aeaea..c6e81f476 100644 --- a/packages/typescript-config/base.json +++ b/packages/typescript-config/base.json @@ -14,6 +14,8 @@ "resolveJsonModule": true, "skipLibCheck": false, "strict": true, - "target": "ES2022" + "target": "ES2022", + "forceConsistentCasingInFileNames": true, + "noUnusedLocals": true } } From 0257ac63094e5daac2e3c2041f8c85ee8bb38404 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Wed, 28 May 2025 18:34:33 -0300 Subject: [PATCH 18/33] chore: update pnpm-lock file --- packages/cow-sdk/package.json | 1 - pnpm-lock.yaml | 1330 ++++++++++++++++++++++++++++++++- 2 files changed, 1307 insertions(+), 24 deletions(-) diff --git a/packages/cow-sdk/package.json b/packages/cow-sdk/package.json index d95383f44..39399c996 100644 --- a/packages/cow-sdk/package.json +++ b/packages/cow-sdk/package.json @@ -25,7 +25,6 @@ "test:coverage": "jest --coverage --json --outputFile=jest.results.json && cat ./coverage/lcov.info | coveralls", "test:coverage:html": "jest --silent=false --coverage --coverageReporters html", "codegen": "pnpm run swagger:codegen && pnpm run typechain:codegen", - "prepare": "pnpm run build", "prepublishOnly": "pnpm test && pnpm run lint", "graphql:codegen": "graphql-codegen --config graphql-codegen.yml", "swagger:codegen": "openapi --input https://raw.githubusercontent.com/cowprotocol/services/v2.291.0/crates/orderbook/openapi.yml --output src/order-book/generated --exportServices false --exportCore false", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d5717cae7..69c02648a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,6 +36,100 @@ importers: specifier: ^8.32.1 version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + packages/app-data: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../common + ajv: + specifier: ^8.11.0 + version: 8.17.1 + cross-fetch: + specifier: ^3.1.5 + version: 3.2.0 + ipfs-only-hash: + specifier: ^4.0.0 + version: 4.0.0 + json-stringify-deterministic: + specifier: ^1.0.8 + version: 1.0.12 + multiformats: + specifier: ^9.6.4 + version: 9.9.0 + devDependencies: + '@babel/core': + specifier: 7.27.1 + version: 7.27.1 + '@babel/preset-env': + specifier: 7.27.2 + version: 7.27.2(@babel/core@7.27.1) + '@babel/preset-typescript': + specifier: 7.27.1 + version: 7.27.1(@babel/core@7.27.1) + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/jest': + specifier: ^29.4.0 + version: 29.5.14 + '@types/node': + specifier: ^20.17.31 + version: 20.17.51 + '@types/semver-sort': + specifier: ^0.0.1 + version: 0.0.1 + babel-jest: + specifier: 29.7.0 + version: 29.7.0(@babel/core@7.27.1) + jest: + specifier: ^29.4.2 + version: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + json-schema-ref-parser: + specifier: ^9.0.9 + version: 9.0.9 + json-schema-to-typescript: + specifier: ^10.1.5 + version: 10.1.5 + semver-sort: + specifier: ^1.0.0 + version: 1.0.0 + ts-jest: + specifier: ^29.0.0 + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3) + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + tsx: + specifier: ^4.19.4 + version: 4.19.4 + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/common: + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/node': + specifier: ^20.17.31 + version: 20.17.51 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + packages/cow-sdk: dependencies: '@cowprotocol/app-data': @@ -178,8 +272,88 @@ importers: specifier: ^8.32.1 version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + packages/providers/ether-v5-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + '@ethersproject/abstract-signer': + specifier: ^5.8.0 + version: 5.8.0 + '@typechain/ethers-v5': + specifier: ^11.0.0 + version: 11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0)(ethers@5.8.0)(typechain@8.3.2(typescript@5.8.3))(typescript@5.8.3) + ethers: + specifier: ^5.7.2 + version: 5.8.0 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/providers/ether-v6-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + ethers: + specifier: ^6.13.7 + version: 6.14.3 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/providers/viem-adapter: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../../common + viem: + specifier: ^2.28.4 + version: 2.30.1(typescript@5.8.3) + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../../typescript-config + '@types/node': + specifier: ^20.5.2 + version: 20.17.51 + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + + packages/typescript-config: {} + packages: + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@adraffy/ens-normalize@1.11.0': + resolution: {integrity: sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} @@ -188,6 +362,9 @@ packages: resolution: {integrity: sha512-60vepv88RwcJtSHrD6MjIL6Ta3SOYbgfnkHb+ppAVK+o9mXprRtulx7VlRl3lN3bbvysAfCS7WMVfhUYemB0IQ==} engines: {node: '>= 16'} + '@apidevtools/json-schema-ref-parser@9.0.9': + resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} + '@ardatan/relay-compiler@12.0.3': resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} hasBin: true @@ -885,138 +1062,288 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.19.12': resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} engines: {node: '>=12'} cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.19.12': resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.19.12': resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} engines: {node: '>=12'} cpu: [x64] os: [android] + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.19.12': resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.19.12': resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.19.12': resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.19.12': resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.19.12': resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.19.12': resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} engines: {node: '>=12'} cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.19.12': resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.19.12': resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.19.12': resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.19.12': resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.19.12': resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.19.12': resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} engines: {node: '>=12'} cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.19.12': resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} engines: {node: '>=12'} cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.19.12': resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.19.12': resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.19.12': resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} engines: {node: '>=12'} cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.19.12': resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.19.12': resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} engines: {node: '>=12'} cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.19.12': resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} engines: {node: '>=12'} cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.7.0': resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1039,10 +1366,18 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1407,10 +1742,19 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -1543,6 +1887,9 @@ packages: resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + '@noble/curves@1.4.2': resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} @@ -1550,6 +1897,14 @@ packages: resolution: {integrity: sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==} engines: {node: ^14.21.3 || >=16} + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + '@noble/hashes@1.4.0': resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} @@ -1830,6 +2185,9 @@ packages: '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -1851,18 +2209,30 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/lodash@4.17.17': + resolution: {integrity: sha512-RRVJ+J3J+WmyOTqnz3PiBLA501eKwXl2noseKOrNo/6+XEHjTAxO4xHvxQB6QuNm+s4WRbn6rSiap8+EA+ykFQ==} + '@types/long@4.0.2': resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@20.17.51': + resolution: {integrity: sha512-hccptBl7C8lHiKxTBsY6vYYmqpmw1E/aGR/8fmueE+B390L3pdMOpNSRvFO4ZnXzW5+p2HBXV0yNABd2vdk22Q==} + '@types/node@22.15.21': resolution: {integrity: sha512-EV/37Td6c+MgKAbkcLG6vqZ2zEYHD7bvSrzqqs2RIhbA6w3x+Dqz8MZM3sP6kGTeLrdoOgKZe+Xja7tUB2DNkQ==} + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1875,6 +2245,9 @@ packages: '@types/resolve@1.17.1': resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + '@types/semver-sort@0.0.1': + resolution: {integrity: sha512-abYNwum55FpJWDxcWjT1eNI3J5/KXS7cWY7KUgbr/l/vn/5vaB1ejUpipLPZba8BvdbJBAJCWIXfJYZvc4SwTA==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -1934,6 +2307,9 @@ packages: resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.3.0': + resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -1954,6 +2330,17 @@ packages: resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} engines: {node: '>=16.0.0'} + abitype@1.0.8: + resolution: {integrity: sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1971,6 +2358,9 @@ packages: aes-js@3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} @@ -2281,6 +2671,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -2323,6 +2717,9 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2406,6 +2803,10 @@ packages: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + cli-color@2.0.4: + resolution: {integrity: sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==} + engines: {node: '>=0.10'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -2620,6 +3021,10 @@ packages: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + dashdash@1.14.1: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} @@ -2749,6 +3154,10 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -2843,11 +3252,30 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + es6-weak-map@2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + esbuild@0.19.12: resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2873,6 +3301,10 @@ packages: '@typescript-eslint/eslint-plugin': optional: true + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2885,6 +3317,12 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2895,10 +3333,18 @@ packages: jiti: optional: true + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + espree@10.3.0: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2939,12 +3385,22 @@ packages: ethers@5.8.0: resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} + ethers@6.14.3: + resolution: {integrity: sha512-qq7ft/oCJohoTcsNPFaXSQUm457MA5iWqkf1Mb11ujONdg7jBI6sAOrHaTi3j0CBqIGFSCeR/RMc+qwRRub7IA==} + engines: {node: '>=14.0.0'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} @@ -2972,6 +3428,9 @@ packages: exponential-backoff@3.1.2: resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==} + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -3043,6 +3502,10 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3092,6 +3555,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3199,6 +3666,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stdin@8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -3207,6 +3678,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-value@2.0.6: resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} engines: {node: '>=0.10.0'} @@ -3229,6 +3703,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-promise@3.4.0: + resolution: {integrity: sha512-q08RJ6O+eJn+dVanerAndJwIcumgbDdYiUT7zFQl3Wm1xD6fBKtah7H8ZJChj4wP+8C+QfeVy8xautR7rdmKEw==} + engines: {node: '>=4'} + peerDependencies: + glob: '*' + glob2base@0.0.12: resolution: {integrity: sha512-ZyqlgowMbfj2NPjxaZZ/EtsXlOch28FRXgMd64vqZWk1bT9+wvSRLYD1om9M7QfQru51zJPAT17qXm4/zd+9QA==} engines: {node: '>= 0.10'} @@ -3254,6 +3734,10 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -3696,6 +4180,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -3716,6 +4204,9 @@ packages: resolution: {integrity: sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==} engines: {node: '>=0.10.0'} + is-promise@2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -3807,6 +4298,11 @@ packages: peerDependencies: ws: '*' + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -4042,6 +4538,16 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-ref-parser@9.0.9: + resolution: {integrity: sha512-qcP2lmGy+JUoQJ4DOQeLaZDqH9qSkeGCK3suKWxJXS82dg728Mn3j97azDMaOUmJAN4uCq91LdPx4K7E8F1a7Q==} + engines: {node: '>=10'} + deprecated: Please switch to @apidevtools/json-schema-ref-parser + + json-schema-to-typescript@10.1.5: + resolution: {integrity: sha512-X8bNNksfCQo6LhEuqNxmZr4eZpPjXZajmimciuk8eWXzZlif9Brq7WuMGD/SOhBKcRKP2SGVDNZbC28WQqx9Rg==} + engines: {node: '>=10.0.0'} + hasBin: true + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -4214,6 +4720,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} @@ -4264,6 +4773,10 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + memoizee@0.4.17: + resolution: {integrity: sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==} + engines: {node: '>=0.12'} + meow@9.0.0: resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} engines: {node: '>=10'} @@ -4426,6 +4939,9 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -4559,6 +5075,14 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} + ox@0.7.1: + resolution: {integrity: sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} @@ -5142,6 +5666,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve-url@0.2.1: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated @@ -5170,6 +5697,11 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -5268,7 +5800,15 @@ packages: scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} - semver@5.7.2: + semver-regex@3.1.4: + resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==} + engines: {node: '>=8'} + + semver-sort@1.0.0: + resolution: {integrity: sha512-JicVlQKz/C//4BiPmbHEDou6HihXxo5xqB/8Hm9FaLJ6HHkRRvYgCECq4u/z0XF8kyJQ/KAZt++A/kYz/oOSSg==} + engines: {node: '>=0.10.0'} + + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -5597,6 +6137,9 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -5611,6 +6154,10 @@ packages: resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} + timers-ext@0.1.8: + resolution: {integrity: sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==} + engines: {node: '>=0.12'} + tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -5676,6 +6223,30 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-jest@29.3.4: + resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + ts-json-schema-generator@2.4.0: resolution: {integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==} engines: {node: '>=18.0.0'} @@ -5711,6 +6282,9 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -5731,6 +6305,11 @@ packages: typescript: optional: true + tsx@4.19.4: + resolution: {integrity: sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==} + engines: {node: '>=18.0.0'} + hasBin: true + tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -5783,6 +6362,10 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -5795,6 +6378,13 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + typechain@8.3.2: resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} hasBin: true @@ -5865,6 +6455,9 @@ packages: resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==} engines: {node: '>=0.10.0'} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -5962,6 +6555,14 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} + viem@2.30.1: + resolution: {integrity: sha512-CkoS5Vv6kiRGmRF2xO2z275Gu90vTrKZHf/ckYXxP2J94UvCnFvUcbRdfit6uebj1I8nFwkGlkkOMuOZDHyO4w==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -6039,6 +6640,18 @@ packages: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + 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 + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -6110,6 +6723,10 @@ packages: snapshots: + '@adraffy/ens-normalize@1.10.1': {} + + '@adraffy/ens-normalize@1.11.0': {} + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.8 @@ -6121,6 +6738,13 @@ snapshots: '@types/json-schema': 7.0.15 js-yaml: 4.1.0 + '@apidevtools/json-schema-ref-parser@9.0.9': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + call-me-maybe: 1.0.2 + js-yaml: 4.1.0 + '@ardatan/relay-compiler@12.0.3(graphql@16.11.0)': dependencies: '@babel/generator': 7.27.1 @@ -6998,72 +7622,152 @@ snapshots: '@esbuild/aix-ppc64@0.19.12': optional: true + '@esbuild/aix-ppc64@0.25.5': + optional: true + '@esbuild/android-arm64@0.19.12': optional: true + '@esbuild/android-arm64@0.25.5': + optional: true + '@esbuild/android-arm@0.19.12': optional: true + '@esbuild/android-arm@0.25.5': + optional: true + '@esbuild/android-x64@0.19.12': optional: true + '@esbuild/android-x64@0.25.5': + optional: true + '@esbuild/darwin-arm64@0.19.12': optional: true + '@esbuild/darwin-arm64@0.25.5': + optional: true + '@esbuild/darwin-x64@0.19.12': optional: true + '@esbuild/darwin-x64@0.25.5': + optional: true + '@esbuild/freebsd-arm64@0.19.12': optional: true + '@esbuild/freebsd-arm64@0.25.5': + optional: true + '@esbuild/freebsd-x64@0.19.12': optional: true + '@esbuild/freebsd-x64@0.25.5': + optional: true + '@esbuild/linux-arm64@0.19.12': optional: true + '@esbuild/linux-arm64@0.25.5': + optional: true + '@esbuild/linux-arm@0.19.12': optional: true + '@esbuild/linux-arm@0.25.5': + optional: true + '@esbuild/linux-ia32@0.19.12': optional: true + '@esbuild/linux-ia32@0.25.5': + optional: true + '@esbuild/linux-loong64@0.19.12': optional: true + '@esbuild/linux-loong64@0.25.5': + optional: true + '@esbuild/linux-mips64el@0.19.12': optional: true + '@esbuild/linux-mips64el@0.25.5': + optional: true + '@esbuild/linux-ppc64@0.19.12': optional: true + '@esbuild/linux-ppc64@0.25.5': + optional: true + '@esbuild/linux-riscv64@0.19.12': optional: true + '@esbuild/linux-riscv64@0.25.5': + optional: true + '@esbuild/linux-s390x@0.19.12': optional: true + '@esbuild/linux-s390x@0.25.5': + optional: true + '@esbuild/linux-x64@0.19.12': optional: true + '@esbuild/linux-x64@0.25.5': + optional: true + + '@esbuild/netbsd-arm64@0.25.5': + optional: true + '@esbuild/netbsd-x64@0.19.12': optional: true + '@esbuild/netbsd-x64@0.25.5': + optional: true + + '@esbuild/openbsd-arm64@0.25.5': + optional: true + '@esbuild/openbsd-x64@0.19.12': optional: true + '@esbuild/openbsd-x64@0.25.5': + optional: true + '@esbuild/sunos-x64@0.19.12': optional: true + '@esbuild/sunos-x64@0.25.5': + optional: true + '@esbuild/win32-arm64@0.19.12': optional: true + '@esbuild/win32-arm64@0.25.5': + optional: true + '@esbuild/win32-ia32@0.19.12': optional: true + '@esbuild/win32-ia32@0.25.5': + optional: true + '@esbuild/win32-x64@0.19.12': optional: true + '@esbuild/win32-x64@0.25.5': + optional: true + + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -7085,6 +7789,20 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -7099,6 +7817,8 @@ snapshots: transitivePeerDependencies: - supports-color + '@eslint/js@8.57.1': {} + '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -7834,8 +8554,18 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -7862,11 +8592,46 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.51 + ansi-escapes: 4.3.2 chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-haste-map: 29.7.0 jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': dependencies: @@ -7875,14 +8640,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7907,7 +8672,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -7925,7 +8690,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -7947,7 +8712,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -8017,7 +8782,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -8077,6 +8842,10 @@ snapshots: '@noble/ciphers@1.3.0': {} + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 @@ -8085,6 +8854,12 @@ snapshots: dependencies: '@noble/hashes': 1.8.0 + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/hashes@1.3.2': {} + '@noble/hashes@1.4.0': {} '@noble/hashes@1.8.0': {} @@ -8262,7 +9037,7 @@ snapshots: '@scure/bip32@1.7.0': dependencies: - '@noble/curves': 1.9.0 + '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.5 @@ -8342,9 +9117,14 @@ snapshots: '@types/estree@1.0.7': {} + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.17.51 + '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/istanbul-lib-coverage@2.0.6': {} @@ -8365,16 +9145,28 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/lodash@4.17.17': {} + '@types/long@4.0.2': {} + '@types/minimatch@5.1.2': {} + '@types/minimist@1.2.5': {} '@types/ms@2.1.0': {} + '@types/node@20.17.51': + dependencies: + undici-types: 6.19.8 + '@types/node@22.15.21': dependencies: undici-types: 6.21.0 + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + '@types/normalize-package-data@2.4.4': {} '@types/parse-json@4.0.2': {} @@ -8383,13 +9175,15 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 + + '@types/semver-sort@0.0.1': {} '@types/stack-utils@2.0.3': {} '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 '@types/yargs-parser@21.0.3': {} @@ -8474,6 +9268,8 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 + '@ungap/structured-clone@1.3.0': {} + '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -8502,6 +9298,10 @@ snapshots: dependencies: tslib: 2.8.1 + abitype@1.0.8(typescript@5.8.3): + optionalDependencies: + typescript: 5.8.3 + acorn-jsx@5.3.2(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -8514,6 +9314,8 @@ snapshots: aes-js@3.0.0: {} + aes-js@4.0.0-beta.5: {} + agent-base@7.1.3: {} aggregate-error@3.1.0: @@ -8857,6 +9659,10 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -8911,6 +9717,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + call-me-maybe@1.0.2: {} + callsites@3.1.0: {} camel-case@4.1.2: @@ -9043,6 +9851,14 @@ snapshots: clean-stack@2.2.0: {} + cli-color@2.0.4: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + memoizee: 0.4.17 + timers-ext: 0.1.8 + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -9192,6 +10008,21 @@ snapshots: crc-32@1.2.2: {} + create-jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 @@ -9294,6 +10125,11 @@ snapshots: dependencies: css-tree: 1.1.3 + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + dashdash@1.14.1: dependencies: assert-plus: 1.0.0 @@ -9396,6 +10232,10 @@ snapshots: dependencies: path-type: 4.0.0 + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -9545,6 +10385,31 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + es6-weak-map@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esbuild@0.19.12: optionalDependencies: '@esbuild/aix-ppc64': 0.19.12 @@ -9571,6 +10436,34 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} @@ -9585,6 +10478,11 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -9594,6 +10492,49 @@ snapshots: eslint-visitor-keys@4.2.0: {} + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.3.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.1 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -9636,12 +10577,25 @@ snapshots: transitivePeerDependencies: - supports-color + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + espree@10.3.0: dependencies: acorn: 8.14.1 acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} esquery@1.6.0: @@ -9713,6 +10667,24 @@ snapshots: - bufferutil - utf-8-validate + ethers@6.14.3: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-stream@3.3.4: dependencies: duplexer: 0.1.2 @@ -9725,6 +10697,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.1: {} + execa@5.1.1: dependencies: cross-spawn: 7.0.6 @@ -9769,6 +10743,10 @@ snapshots: exponential-backoff@3.1.2: {} + ext@1.7.0: + dependencies: + type: 2.7.3 + extend-shallow@2.0.1: dependencies: is-extendable: 0.1.1 @@ -9859,6 +10837,10 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9915,6 +10897,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + flat-cache@3.2.0: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + rimraf: 3.0.2 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -10034,6 +11022,8 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stdin@8.0.0: {} + get-stream@6.0.1: {} get-symbol-description@1.1.0: @@ -10042,6 +11032,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + get-tsconfig@4.10.1: + dependencies: + resolve-pkg-maps: 1.0.0 + get-value@2.0.6: {} getpass@0.1.7: @@ -10065,6 +11059,11 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-promise@3.4.0(glob@7.2.3): + dependencies: + '@types/glob': 8.1.0 + glob: 7.2.3 + glob2base@0.0.12: dependencies: find-index: 0.1.1 @@ -10107,6 +11106,10 @@ snapshots: globals@11.12.0: {} + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + globals@14.0.0: {} globalthis@1.0.4: @@ -10579,6 +11582,8 @@ snapshots: is-number@7.0.0: {} + is-path-inside@3.0.3: {} + is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -10591,6 +11596,8 @@ snapshots: is-primitive@2.0.0: {} + is-promise@2.2.2: {} + is-reference@1.2.1: dependencies: '@types/estree': 1.0.7 @@ -10674,6 +11681,10 @@ snapshots: dependencies: ws: 8.18.2 + isows@1.0.7(ws@8.18.2): + dependencies: + ws: 8.18.2 + isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -10756,7 +11767,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 co: 4.6.0 dedent: 1.6.0(babel-plugin-macros@3.1.0) @@ -10776,6 +11787,25 @@ snapshots: - babel-plugin-macros - supports-color + jest-cli@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-cli@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -10795,6 +11825,68 @@ snapshots: - supports-color - ts-node + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.51 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.51 + ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-config@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.1 @@ -10850,7 +11942,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -10867,7 +11959,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.15.21 + '@types/node': 20.17.51 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -10906,7 +11998,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -10941,7 +12033,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -10969,7 +12061,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -11015,7 +12107,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11034,7 +12126,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.21 + '@types/node': 20.17.51 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -11043,17 +12135,29 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@29.7.0: dependencies: - '@types/node': 22.15.21 + '@types/node': 20.17.51 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 + jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -11097,6 +12201,28 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-schema-ref-parser@9.0.9: + dependencies: + '@apidevtools/json-schema-ref-parser': 9.0.9 + + json-schema-to-typescript@10.1.5: + dependencies: + '@types/json-schema': 7.0.15 + '@types/lodash': 4.17.17 + '@types/prettier': 2.7.3 + cli-color: 2.0.4 + get-stdin: 8.0.0 + glob: 7.2.3 + glob-promise: 3.4.0(glob@7.2.3) + is-glob: 4.0.3 + json-schema-ref-parser: 9.0.9 + json-stringify-safe: 5.0.1 + lodash: 4.17.21 + minimist: 1.2.8 + mkdirp: 1.0.4 + mz: 2.7.0 + prettier: 2.8.8 + json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -11245,6 +12371,10 @@ snapshots: dependencies: yallist: 4.0.0 + lru-queue@0.1.0: + dependencies: + es5-ext: 0.10.64 + magic-string@0.25.9: dependencies: sourcemap-codec: 1.4.8 @@ -11288,6 +12418,17 @@ snapshots: mdn-data@2.0.14: {} + memoizee@0.4.17: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.8 + meow@9.0.0: dependencies: '@types/minimist': 1.2.5 @@ -11524,6 +12665,8 @@ snapshots: neo-async@2.6.2: {} + next-tick@1.1.0: {} + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -11670,6 +12813,21 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 + ox@0.7.1(typescript@5.8.3): + dependencies: + '@adraffy/ens-normalize': 1.11.0 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - zod + p-finally@1.0.0: {} p-limit@2.3.0: @@ -11844,6 +13002,14 @@ snapshots: postcss: 8.5.3 ts-node: 10.9.2(@types/node@22.15.21)(typescript@5.8.3) + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + lilconfig: 3.1.3 + yaml: 2.8.0 + optionalDependencies: + postcss: 8.5.3 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + postcss-load-config@4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: lilconfig: 3.1.3 @@ -12063,7 +13229,7 @@ snapshots: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 22.15.21 + '@types/node': 20.17.51 long: 4.0.0 ps-tree@1.2.0: @@ -12265,6 +13431,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve-url@0.2.1: {} resolve.exports@2.0.3: {} @@ -12286,6 +13454,10 @@ snapshots: rfdc@1.4.1: {} + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 @@ -12422,6 +13594,13 @@ snapshots: scuid@1.1.0: {} + semver-regex@3.1.4: {} + + semver-sort@1.0.0: + dependencies: + semver: 5.7.2 + semver-regex: 3.1.4 + semver@5.7.2: {} semver@6.3.1: {} @@ -12818,6 +13997,8 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + text-table@0.2.0: {} + thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -12830,6 +14011,11 @@ snapshots: timeout-signal@2.0.0: {} + timers-ext@0.1.8: + dependencies: + es5-ext: 0.10.64 + next-tick: 1.1.0 + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -12897,6 +14083,27 @@ snapshots: ts-interface-checker@0.1.13: {} + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + esbuild: 0.19.12 + ts-json-schema-generator@2.4.0: dependencies: '@types/json-schema': 7.0.15 @@ -12914,6 +14121,24 @@ snapshots: dependencies: lodash: 4.17.21 + ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.17.51 + acorn: 8.14.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.8.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -12942,8 +14167,33 @@ snapshots: tslib@2.6.3: {} + tslib@2.7.0: {} + tslib@2.8.1: {} + tsup@7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3): + dependencies: + bundle-require: 4.2.1(esbuild@0.19.12) + cac: 6.7.14 + chokidar: 3.6.0 + debug: 4.4.1 + esbuild: 0.19.12 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + resolve-from: 5.0.0 + rollup: 4.41.1 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.3 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + - ts-node + tsup@7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))(typescript@5.8.3): dependencies: bundle-require: 4.2.1(esbuild@0.19.12) @@ -12967,6 +14217,13 @@ snapshots: - supports-color - ts-node + tsx@4.19.4: + dependencies: + esbuild: 0.25.5 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -13008,12 +14265,18 @@ snapshots: type-fest@0.18.1: {} + type-fest@0.20.2: {} + type-fest@0.21.3: {} type-fest@0.6.0: {} type-fest@0.8.1: {} + type-fest@4.41.0: {} + + type@2.7.3: {} + typechain@8.3.2(typescript@5.8.3): dependencies: '@types/prettier': 2.7.3 @@ -13103,6 +14366,8 @@ snapshots: unc-path-regex@0.1.2: {} + undici-types@6.19.8: {} + undici-types@6.21.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -13189,6 +14454,23 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 + viem@2.30.1(typescript@5.8.3): + dependencies: + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.0.8(typescript@5.8.3) + isows: 1.0.7(ws@8.18.2) + ox: 0.7.1(typescript@5.8.3) + ws: 8.18.2 + optionalDependencies: + typescript: 5.8.3 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + walker@1.0.8: dependencies: makeerror: 1.0.12 @@ -13295,6 +14577,8 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@8.17.1: {} + ws@8.18.0: {} ws@8.18.2: {} From 46decb72050c1b9481b24d9b10b6a4c4f2abe0c3 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Wed, 28 May 2025 18:46:45 -0300 Subject: [PATCH 19/33] chore: fix lint and remove cow-sdk from lint. --- eslint.config.js | 6 - package.json | 2 +- packages/app-data/src/utils/stringify.ts | 2 +- packages/common/package.json | 4 +- .../src/adapters/AbstractProviderAdapter.ts | 4 +- packages/cow-sdk/tsconfig.test.json | 10 - .../ether-v5-adapter/src/EthersV5Adapter.ts | 8 +- pnpm-lock.yaml | 200 +----------------- 8 files changed, 22 insertions(+), 214 deletions(-) delete mode 100644 packages/cow-sdk/tsconfig.test.json diff --git a/eslint.config.js b/eslint.config.js index 2b3f971b3..b0adcc84e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -50,11 +50,5 @@ export default [ }, { files: ['**/*.test.ts', '**/*.spec.ts', '**/__mock__/**/*.ts'], - languageOptions: { - parser: tseslint.parser, - parserOptions: { - project: './tsconfig.test.json', - }, - }, }, ] diff --git a/package.json b/package.json index 771f61cd5..9461c64fc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "build": "turbo run build", "dev": "turbo run dev", - "lint": "turbo run lint -- --fix", + "lint": "turbo run lint --filter=!@cowprotocol/cow-sdk -- --fix", "test": "turbo run test", "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, diff --git a/packages/app-data/src/utils/stringify.ts b/packages/app-data/src/utils/stringify.ts index 68f1825f7..322750cc7 100644 --- a/packages/app-data/src/utils/stringify.ts +++ b/packages/app-data/src/utils/stringify.ts @@ -1,4 +1,4 @@ -export async function stringifyDeterministic(obj: any): Promise { +export async function stringifyDeterministic(obj: Record): Promise { const { default: stringify } = await import('json-stringify-deterministic') return stringify(obj) } diff --git a/packages/common/package.json b/packages/common/package.json index a3aa435ad..bdb1fffa8 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -18,7 +18,9 @@ "devDependencies": { "@repo/typescript-config": "workspace:*", "@types/node": "^20.17.31", - "eslint": "^8.48.0", + "@typescript-eslint/eslint-plugin": "^8.32.1", + "@typescript-eslint/parser": "^8.32.1", + "eslint": "^9.27.0", "tsup": "^7.2.0", "typescript": "^5.2.2" } diff --git a/packages/common/src/adapters/AbstractProviderAdapter.ts b/packages/common/src/adapters/AbstractProviderAdapter.ts index a2d0cd0bb..00b38ccb8 100644 --- a/packages/common/src/adapters/AbstractProviderAdapter.ts +++ b/packages/common/src/adapters/AbstractProviderAdapter.ts @@ -1,11 +1,11 @@ -import type { AdapterTypes, AdapterUtils } from './types' +import type { AdapterUtils } from './types' /** * AbstractProviderAdapter defines the common interface that all provider-specific * implementations must follow. This ensures consistent interaction with different * Ethereum libraries throughout the SDK. */ -export abstract class AbstractProviderAdapter { +export abstract class AbstractProviderAdapter { public abstract utils: AdapterUtils // Core functionality diff --git a/packages/cow-sdk/tsconfig.test.json b/packages/cow-sdk/tsconfig.test.json deleted file mode 100644 index 9b09f0fcd..000000000 --- a/packages/cow-sdk/tsconfig.test.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "include": ["src/**/*"], - "exclude": [], - "compilerOptions": { - "types": ["jest", "node"], - "noImplicitAny": false, - "strictNullChecks": false - } -} diff --git a/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts index 6e488ac31..bb64f0bd5 100644 --- a/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts +++ b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts @@ -1,10 +1,10 @@ -import { BigNumberish, BytesLike, ethers } from 'ethers' -import type { TypedDataDomain, TypedDataField, TypedDataSigner } from '@ethersproject/abstract-signer' +import { BytesLike, ethers } from 'ethers' +import type { TypedDataSigner } from '@ethersproject/abstract-signer' import { AbstractProviderAdapter, AdapterTypes } from '@cowprotocol/sdk-common' import { EthersV5Utils } from './EthersV5Utils' -type Abi = ConstructorParameters[0] -type Interface = ethers.utils.Interface +// type Abi = ConstructorParameters[0] +// type Interface = ethers.utils.Interface export interface EthersV5Types extends AdapterTypes { Bytes: BytesLike diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 69c02648a..154f1cf2a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,10 +98,7 @@ importers: version: 1.0.0 ts-jest: specifier: ^29.0.0 - version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3) - ts-node: - specifier: ^10.9.2 - version: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3) tsup: specifier: ^7.2.0 version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) @@ -120,9 +117,15 @@ importers: '@types/node': specifier: ^20.17.31 version: 20.17.51 + '@typescript-eslint/eslint-plugin': + specifier: ^8.32.1 + version: 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/parser': + specifier: ^8.32.1 + version: 8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) eslint: - specifier: ^8.48.0 - version: 8.57.1 + specifier: ^9.27.0 + version: 9.27.0(jiti@2.4.2) tsup: specifier: ^7.2.0 version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) @@ -1366,18 +1369,10 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1742,19 +1737,10 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -2307,9 +2293,6 @@ packages: resolution: {integrity: sha512-ar0tjQfObzhSaW3C3QNmTc5ofj0hDoNQ5XWrCy6zDyabdr0TWhCkClp+rywGNj/odAFBVzzJrK4tEq5M4Hmu4w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -3154,10 +3137,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -3301,10 +3280,6 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3317,12 +3292,6 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3341,10 +3310,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3502,10 +3467,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3555,10 +3516,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3734,10 +3691,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -4180,10 +4133,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -5697,11 +5646,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -6137,9 +6081,6 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -6362,10 +6303,6 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -7763,11 +7700,6 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -7789,20 +7721,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -7817,8 +7735,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -8554,18 +8470,8 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -9268,8 +9174,6 @@ snapshots: '@typescript-eslint/types': 8.32.1 eslint-visitor-keys: 4.2.0 - '@ungap/structured-clone@1.3.0': {} - '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -10232,10 +10136,6 @@ snapshots: dependencies: path-type: 4.0.0 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -10478,11 +10378,6 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.32.1(@typescript-eslint/parser@8.32.1(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -10492,49 +10387,6 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -10590,12 +10442,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 - espree@9.6.1: - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.6.0: @@ -10837,10 +10683,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -10897,12 +10739,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -11106,10 +10942,6 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globalthis@1.0.4: @@ -11582,8 +11414,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -13454,10 +13284,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 @@ -13997,8 +13823,6 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -14083,7 +13907,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3): + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 @@ -14102,7 +13926,6 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.27.1) - esbuild: 0.19.12 ts-json-schema-generator@2.4.0: dependencies: @@ -14138,6 +13961,7 @@ snapshots: typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optional: true ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3): dependencies: @@ -14265,8 +14089,6 @@ snapshots: type-fest@0.18.1: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@0.6.0: {} From 8666af48c60cd1d6e945f8412b192029299f7c90 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Thu, 29 May 2025 10:22:39 -0300 Subject: [PATCH 20/33] chore: update sdk-config tsconfig --- package.json | 2 +- packages/config/package.json | 1 + packages/config/tsconfig.json | 8 ++------ pnpm-lock.yaml | 3 +++ 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 001031788..d2da3a8c4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "private": true, "type": "module", "scripts": { - "build": "turbo run build --filter='!@cowprotocol/cow-sdk' --filter='!@cowprotocol/app-data'", + "build": "turbo run build --filter='!@cowprotocol/cow-sdk'", "dev": "turbo run dev", "lint": "turbo run lint -- --fix", "test": "turbo run test", diff --git a/packages/config/package.json b/packages/config/package.json index 184cb6d45..c5004810a 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -16,6 +16,7 @@ "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" }, "devDependencies": { + "@repo/typescript-config": "workspace:*", "@types/node": "^20.17.31", "eslint": "^8.48.0", "tsup": "^7.2.0", diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index 73f2a72ec..04c584564 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -1,12 +1,8 @@ { - "extends": "../../packages/typescript-config/base.json", + "extends": "@repo/typescript-config/base.json", "compilerOptions": { "outDir": "./dist", - "moduleResolution": "node", - "module": "ESNext", - "target": "ESNext", - "baseUrl": "src", - "skipLibCheck": true + "baseUrl": "src" }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4037c7166..381969901 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,6 +130,9 @@ importers: specifier: ^2.1.0 version: 2.1.0 devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config '@types/node': specifier: ^20.17.31 version: 20.17.51 From 780a60f58bc67b27f161b0abab1f8ef81b2ea64b Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 11:11:09 -0300 Subject: [PATCH 21/33] feat: add contracts-ts package --- packages/contracts-ts/README.md | 1 + packages/contracts-ts/package.json | 40 ++ packages/contracts-ts/src/api.ts | 300 ++++++++++ packages/contracts-ts/src/deploy.ts | 92 +++ packages/contracts-ts/src/index.ts | 33 ++ packages/contracts-ts/src/interaction.ts | 51 ++ packages/contracts-ts/src/order.ts | 401 +++++++++++++ packages/contracts-ts/src/proxy.ts | 81 +++ packages/contracts-ts/src/reader.ts | 141 +++++ packages/contracts-ts/src/settlement.ts | 687 ++++++++++++++++++++++ packages/contracts-ts/src/sign.ts | 268 +++++++++ packages/contracts-ts/src/signers.ts | 269 +++++++++ packages/contracts-ts/src/swap.ts | 299 ++++++++++ packages/contracts-ts/src/types/ethers.ts | 48 ++ packages/contracts-ts/src/vault.ts | 39 ++ packages/contracts-ts/tsconfig.json | 9 + 16 files changed, 2759 insertions(+) create mode 100644 packages/contracts-ts/README.md create mode 100644 packages/contracts-ts/package.json create mode 100644 packages/contracts-ts/src/api.ts create mode 100644 packages/contracts-ts/src/deploy.ts create mode 100644 packages/contracts-ts/src/index.ts create mode 100644 packages/contracts-ts/src/interaction.ts create mode 100644 packages/contracts-ts/src/order.ts create mode 100644 packages/contracts-ts/src/proxy.ts create mode 100644 packages/contracts-ts/src/reader.ts create mode 100644 packages/contracts-ts/src/settlement.ts create mode 100644 packages/contracts-ts/src/sign.ts create mode 100644 packages/contracts-ts/src/signers.ts create mode 100644 packages/contracts-ts/src/swap.ts create mode 100644 packages/contracts-ts/src/types/ethers.ts create mode 100644 packages/contracts-ts/src/vault.ts create mode 100644 packages/contracts-ts/tsconfig.json diff --git a/packages/contracts-ts/README.md b/packages/contracts-ts/README.md new file mode 100644 index 000000000..a9c02fc25 --- /dev/null +++ b/packages/contracts-ts/README.md @@ -0,0 +1 @@ +# `contracts-ts` diff --git a/packages/contracts-ts/package.json b/packages/contracts-ts/package.json new file mode 100644 index 000000000..3f5e1d122 --- /dev/null +++ b/packages/contracts-ts/package.json @@ -0,0 +1,40 @@ +{ + "name": "@cowprotocol/sdk-contracts-ts", + "version": "0.1.0", + "description": "TypeScript contract bindings for CoW Protocol SDK", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "sideEffects": false, + "license": "MIT", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "dev": "tsup src/index.ts --format esm,cjs --watch --dts", + "lint": "eslint src/**/*.ts", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "test": "jest", + "test:watch": "jest --watch" + }, + "dependencies": { + "@cowprotocol/sdk-common": "workspace:*", + "@cowprotocol/sdk-config": "workspace:*" + }, + "devDependencies": { + "@cowprotocol/sdk-ethers-v5-adapter": "workspace:*", + "@cowprotocol/sdk-ethers-v6-adapter": "workspace:*", + "@cowprotocol/sdk-viem-adapter": "workspace:*", + "@types/jest": "^29.5.5", + "@types/node": "^20.17.31", + "eslint": "^8.48.0", + "ethers-v5": "npm:ethers@^5.7.2", + "ethers-v6": "npm:ethers@^6.13.7", + "jest": "^29.7.0", + "ts-jest": "^29.1.1", + "tsup": "^7.2.0", + "typescript": "^5.2.2", + "viem": "^2.28.4" + } +} diff --git a/packages/contracts-ts/src/api.ts b/packages/contracts-ts/src/api.ts new file mode 100644 index 000000000..86098e0c9 --- /dev/null +++ b/packages/contracts-ts/src/api.ts @@ -0,0 +1,300 @@ +import { BigNumber, BigNumberish, constants } from "ethers"; +import fetch, { RequestInit } from "node-fetch"; + +import { + normalizeOrder, + Order, + OrderKind, + Timestamp, + HashLike, + OrderBalance, +} from "./order"; +import { encodeSignatureData } from "./settlement"; +import { Signature, SigningScheme } from "./sign"; + +export enum Environment { + Dev, + Prod, +} + +export const LIMIT_CONCURRENT_REQUESTS = 5; + +export function apiUrl(environment: Environment, network: string): string { + switch (environment) { + case Environment.Dev: + return `https://barn.api.cow.fi/${network}`; + case Environment.Prod: + return `https://api.cow.fi/${network}`; + default: + throw new Error("Invalid environment"); + } +} + +export interface ApiCall { + baseUrl: string; +} + +export interface EstimateTradeAmountQuery { + sellToken: string; + buyToken: string; + kind: OrderKind; + amount: BigNumberish; +} +export interface PlaceOrderQuery { + order: Order; + signature: Signature; + from?: string; +} +export interface GetExecutedSellAmountQuery { + uid: string; +} + +export type SellAmountBeforeFee = { + kind: OrderKind.SELL; + sellAmountBeforeFee: BigNumberish; +}; + +export type SellAmountAfterFee = { + kind: OrderKind.SELL; + sellAmountAfterFee: BigNumberish; +}; + +export type BuyAmountAfterFee = { + kind: OrderKind.BUY; + buyAmountAfterFee: BigNumberish; +}; + +export type QuoteQuery = CommonQuoteQuery & + (SellAmountBeforeFee | SellAmountAfterFee | BuyAmountAfterFee); + +export interface CommonQuoteQuery { + sellToken: string; + buyToken: string; + receiver?: string; + validTo?: Timestamp; + appData?: HashLike; + partiallyFillable?: boolean; + sellTokenBalance?: OrderBalance; + buyTokenBalance?: OrderBalance; + from: string; + priceQuality?: QuotePriceQuality; +} + +export enum QuotePriceQuality { + FAST = "fast", + OPTIMAL = "optimal", +} + +export interface OrderDetailResponse { + // Other fields are omitted until needed + executedSellAmount: string; +} +export interface GetQuoteResponse { + quote: Order; + from: string; + expiration: Timestamp; + id?: number; +} + +export interface ApiError { + errorType: string; + description: string; +} +export interface CallError extends Error { + apiError?: ApiError; +} + +export enum GetQuoteErrorType { + SellAmountDoesNotCoverFee = "SellAmountDoesNotCoverFee", + NoLiquidity = "NoLiquidity", + // other errors are added when necessary +} + +function apiKind(kind: OrderKind): string { + switch (kind) { + case OrderKind.SELL: + return "sell"; + case OrderKind.BUY: + return "buy"; + default: + throw new Error(`Unsupported kind ${kind}`); + } +} + +function apiSigningScheme(scheme: SigningScheme): string { + switch (scheme) { + case SigningScheme.EIP712: + return "eip712"; + case SigningScheme.ETHSIGN: + return "ethsign"; + case SigningScheme.EIP1271: + return "eip1271"; + case SigningScheme.PRESIGN: + return "presign"; + default: + throw new Error(`Unsupported signing scheme ${scheme}`); + } +} + +async function call( + route: string, + baseUrl: string, + init?: RequestInit, +): Promise { + const url = `${baseUrl}/api/v1/${route}`; + const response = await fetch(url, init); + const body = await response.text(); + if (!response.ok) { + const error: CallError = new Error( + `Calling "${url} ${JSON.stringify(init)} failed with ${ + response.status + }: ${body}`, + ); + try { + error.apiError = JSON.parse(body); + } catch { + // no api error + } + throw error; + } + return JSON.parse(body); +} + +async function estimateTradeAmount({ + sellToken, + buyToken, + kind, + amount, + baseUrl, +}: EstimateTradeAmountQuery & ApiCall): Promise { + const side: BuyAmountAfterFee | SellAmountAfterFee = + kind == OrderKind.SELL + ? { + kind: OrderKind.SELL, + sellAmountAfterFee: amount, + } + : { + kind: OrderKind.BUY, + buyAmountAfterFee: amount, + }; + const { quote } = await getQuote( + { baseUrl }, + { + from: constants.AddressZero, + sellToken, + buyToken, + priceQuality: QuotePriceQuality.FAST, + ...side, + }, + ); + // The services return the quote token used for the price. The quote token + // is checked to make sure that the returned price meets our expectations. + if (quote.buyToken.toLowerCase() !== buyToken.toLowerCase()) { + throw new Error( + `Price returned for sell token ${sellToken} uses an incorrect quote token (${quote.buyToken.toLowerCase()} instead of ${buyToken.toLowerCase()})`, + ); + } + const estimatedAmount = + kind == OrderKind.SELL ? quote.buyAmount : quote.sellAmount; + return BigNumber.from(estimatedAmount); +} + +async function placeOrder({ + order, + signature, + baseUrl, + from, +}: PlaceOrderQuery & ApiCall): Promise { + const normalizedOrder = normalizeOrder(order); + return await call("orders", baseUrl, { + method: "post", + body: JSON.stringify({ + sellToken: normalizedOrder.sellToken, + buyToken: normalizedOrder.buyToken, + sellAmount: BigNumber.from(normalizedOrder.sellAmount).toString(), + buyAmount: BigNumber.from(normalizedOrder.buyAmount).toString(), + validTo: normalizedOrder.validTo, + appData: normalizedOrder.appData, + feeAmount: BigNumber.from(normalizedOrder.feeAmount).toString(), + kind: apiKind(order.kind), + partiallyFillable: normalizedOrder.partiallyFillable, + signature: encodeSignatureData(signature), + signingScheme: apiSigningScheme(signature.scheme), + receiver: normalizedOrder.receiver, + from, + }), + headers: { "Content-Type": "application/json" }, + }); +} + +async function getExecutedSellAmount({ + uid, + baseUrl, +}: GetExecutedSellAmountQuery & ApiCall): Promise { + const response: OrderDetailResponse = await call(`orders/${uid}`, baseUrl); + return BigNumber.from(response.executedSellAmount); +} + +async function getQuote( + { baseUrl }: ApiCall, + quote: QuoteQuery, +): Promise { + // Convert BigNumber into JSON strings (native serialisation is a hex object) + if ((quote).sellAmountBeforeFee) { + (quote).sellAmountBeforeFee = (( + quote + )).sellAmountBeforeFee.toString(); + } + if ((quote).sellAmountAfterFee) { + (quote).sellAmountAfterFee = (( + quote + )).sellAmountAfterFee.toString(); + } + if ((quote).buyAmountAfterFee) { + (quote).buyAmountAfterFee = (( + quote + )).buyAmountAfterFee.toString(); + } + return call("quote", baseUrl, { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(quote), + }); +} + +export class Api { + network: string; + baseUrl: string; + + constructor(network: string, baseUrlOrEnv: string | Environment) { + this.network = network; + let baseUrl; + if (typeof baseUrlOrEnv === "string") { + baseUrl = baseUrlOrEnv; + } else { + baseUrl = apiUrl(baseUrlOrEnv, network); + } + this.baseUrl = baseUrl; + } + + private apiCallParams() { + return { network: this.network, baseUrl: this.baseUrl }; + } + + async estimateTradeAmount( + query: EstimateTradeAmountQuery, + ): Promise { + return estimateTradeAmount({ ...this.apiCallParams(), ...query }); + } + async placeOrder(query: PlaceOrderQuery): Promise { + return placeOrder({ ...this.apiCallParams(), ...query }); + } + async getExecutedSellAmount( + query: GetExecutedSellAmountQuery, + ): Promise { + return getExecutedSellAmount({ ...this.apiCallParams(), ...query }); + } + async getQuote(query: QuoteQuery): Promise { + return getQuote(this.apiCallParams(), query); + } +} diff --git a/packages/contracts-ts/src/deploy.ts b/packages/contracts-ts/src/deploy.ts new file mode 100644 index 000000000..c9f932407 --- /dev/null +++ b/packages/contracts-ts/src/deploy.ts @@ -0,0 +1,92 @@ +import { utils } from "ethers"; + +/** + * The salt used when deterministically deploying smart contracts. + */ +export const SALT = utils.formatBytes32String("Mattresses in Berlin!"); + +/** + * The contract used to deploy contracts deterministically with CREATE2. + * The address is chosen by the hardhat-deploy library. + * It is the same in any EVM-based network. + * + * https://github.com/Arachnid/deterministic-deployment-proxy + */ +export const DEPLOYER_CONTRACT = "0x4e59b44847b379578588920ca78fbf26c0b4956c"; + +/** + * Dictionary containing all deployed contract names. + */ +export const CONTRACT_NAMES = { + authenticator: "GPv2AllowListAuthentication", + settlement: "GPv2Settlement", + tradeSimulator: "GPv2TradeSimulator", +} as const; + +/** + * The name of a deployed contract. + */ +export type ContractName = (typeof CONTRACT_NAMES)[keyof typeof CONTRACT_NAMES]; + +/** + * The deployment args for a contract. + */ +export type DeploymentArguments = + T extends typeof CONTRACT_NAMES.authenticator + ? never + : T extends typeof CONTRACT_NAMES.settlement + ? [string, string] + : T extends typeof CONTRACT_NAMES.tradeSimulator + ? [] + : unknown[]; + +/** + * Allowed ABI definition types by Ethers.js. + */ +export type Abi = ConstructorParameters[0]; + +/** + * Artifact information important for computing deterministic deployments. + */ +export interface ArtifactDeployment { + abi: Abi; + bytecode: string; +} + +/** + * An artifact with a contract name matching one of the deterministically + * deployed contracts. + */ +export interface NamedArtifactDeployment + extends ArtifactDeployment { + contractName: C; +} + +type MaybeNamedArtifactArtifactDeployment = C extends ContractName + ? NamedArtifactDeployment + : ArtifactDeployment; + +/** + * Computes the deterministic address at which the contract will be deployed. + * This address does not depend on which network the contract is deployed to. + * + * @param contractName Name of the contract for which to find the address. + * @param deploymentArguments Extra arguments that are necessary to deploy. + * @returns The address that is expected to store the deployed code. + */ +export function deterministicDeploymentAddress( + { abi, bytecode }: MaybeNamedArtifactArtifactDeployment, + deploymentArguments: DeploymentArguments, +): string { + const contractInterface = new utils.Interface(abi); + const deployData = utils.hexConcat([ + bytecode, + contractInterface.encodeDeploy(deploymentArguments), + ]); + + return utils.getCreate2Address( + DEPLOYER_CONTRACT, + SALT, + utils.keccak256(deployData), + ); +} diff --git a/packages/contracts-ts/src/index.ts b/packages/contracts-ts/src/index.ts new file mode 100644 index 000000000..8a4c7795b --- /dev/null +++ b/packages/contracts-ts/src/index.ts @@ -0,0 +1,33 @@ +import { TypedDataDomain } from "./types/ethers"; + +/** + * Return the Gnosis Protocol v2 domain used for signing. + * @param chainId The EIP-155 chain ID. + * @param verifyingContract The address of the contract that will verify the + * signature. + * @return An EIP-712 compatible typed domain data. + */ +export function domain( + chainId: number, + verifyingContract: string, +): TypedDataDomain { + return { + name: "Gnosis Protocol", + version: "v2", + chainId, + verifyingContract, + }; +} + +export * from "./api"; +export * from "./deploy"; +export * from "./interaction"; +export * from "./order"; +export * from "./proxy"; +export * from "./reader"; +export * from "./settlement"; +export * from "./sign"; +export * from "./signers"; +export * from "./swap"; +export * from "./vault"; +export * from "./types/ethers"; diff --git a/packages/contracts-ts/src/interaction.ts b/packages/contracts-ts/src/interaction.ts new file mode 100644 index 000000000..d352c5b4c --- /dev/null +++ b/packages/contracts-ts/src/interaction.ts @@ -0,0 +1,51 @@ +import type { BigNumberish, BytesLike } from "ethers"; + +/** + * Gnosis Protocol v2 interaction data. + */ +export interface Interaction { + /** + * Address of the smart contract to be called in this interaction. + */ + target: string; + /** + * Call value in wei for the interaction, allowing Ether to be sent. + */ + value: BigNumberish; + /** + * Call data used in the interaction with a smart contract. + */ + callData: BytesLike; +} + +export type InteractionLike = Pick & + Partial; + +/** + * Normalizes interaction data so that it is ready to be be ABI encoded. + * + * @param interaction The interaction to normalize. + * @return The normalized interaction. + */ +export function normalizeInteraction( + interaction: InteractionLike, +): Interaction { + return { + value: 0, + callData: "0x", + ...interaction, + }; +} + +/** + * Normalizes data for many interactions so that they can be ABI encoded. This + * calls [`normalizeInteraction`] for each interaction. + * + * @param interactions The interactions to normalize. + * @return The normalized interactions. + */ +export function normalizeInteractions( + interactions: InteractionLike[], +): Interaction[] { + return interactions.map(normalizeInteraction); +} diff --git a/packages/contracts-ts/src/order.ts b/packages/contracts-ts/src/order.ts new file mode 100644 index 000000000..6530570be --- /dev/null +++ b/packages/contracts-ts/src/order.ts @@ -0,0 +1,401 @@ +import { BigNumberish, BytesLike, ethers } from "ethers"; + +import { TypedDataDomain, TypedDataTypes } from "./types/ethers"; + +/** + * Gnosis Protocol v2 order data. + */ +export interface Order { + /** + * Sell token address. + */ + sellToken: string; + /** + * Buy token address. + */ + buyToken: string; + /** + * An optional address to receive the proceeds of the trade instead of the + * owner (i.e. the order signer). + */ + receiver?: string; + /** + * The order sell amount. + * + * For fill or kill sell orders, this amount represents the exact sell amount + * that will be executed in the trade. For fill or kill buy orders, this + * amount represents the maximum sell amount that can be executed. For partial + * fill orders, this represents a component of the limit price fraction. + */ + sellAmount: BigNumberish; + /** + * The order buy amount. + * + * For fill or kill sell orders, this amount represents the minimum buy amount + * that can be executed in the trade. For fill or kill buy orders, this amount + * represents the exact buy amount that will be executed. For partial fill + * orders, this represents a component of the limit price fraction. + */ + buyAmount: BigNumberish; + /** + * The timestamp this order is valid until + */ + validTo: Timestamp; + /** + * Arbitrary application specific data that can be added to an order. This can + * also be used to ensure uniqueness between two orders with otherwise the + * exact same parameters. + */ + appData: HashLike; + /** + * Fee to give to the protocol. + */ + feeAmount: BigNumberish; + /** + * The order kind. + */ + kind: OrderKind; + /** + * Specifies whether or not the order is partially fillable. + */ + partiallyFillable: boolean; + /** + * Specifies how the sell token balance will be withdrawn. It can either be + * taken using ERC20 token allowances made directly to the Vault relayer + * (default) or using Balancer Vault internal or external balances. + */ + sellTokenBalance?: OrderBalance; + /** + * Specifies how the buy token balance will be paid. It can either be paid + * directly in ERC20 tokens (default) in Balancer Vault internal balances. + */ + buyTokenBalance?: OrderBalance; +} + +/** + * Gnosis Protocol v2 order cancellation data. + */ +export interface OrderCancellations { + /** + * The unique identifier of the order to be cancelled. + */ + orderUids: BytesLike[]; +} + +/** + * Marker address to indicate that an order is buying Ether. + * + * Note that this address is only has special meaning in the `buyToken` and will + * be treated as a ERC20 token address in the `sellToken` position, causing the + * settlement to revert. + */ +export const BUY_ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; + +/** + * Gnosis Protocol v2 order flags. + */ +export type OrderFlags = Pick< + Order, + "kind" | "partiallyFillable" | "sellTokenBalance" | "buyTokenBalance" +>; + +/** + * A timestamp value. + */ +export type Timestamp = number | Date; + +/** + * A hash-like app data value. + */ +export type HashLike = BytesLike | number; + +/** + * Order kind. + */ +export enum OrderKind { + /** + * A sell order. + */ + SELL = "sell", + /** + * A buy order. + */ + BUY = "buy", +} + +/** + * Order balance configuration. + */ +export enum OrderBalance { + /** + * Use ERC20 token balances. + */ + ERC20 = "erc20", + /** + * Use Balancer Vault external balances. + * + * This can only be specified specified for the sell balance and allows orders + * to re-use Vault ERC20 allowances. When specified for the buy balance, it + * will be treated as {@link OrderBalance.ERC20}. + */ + EXTERNAL = "external", + /** + * Use Balancer Vault internal balances. + */ + INTERNAL = "internal", +} + +/** + * The EIP-712 type fields definition for a Gnosis Protocol v2 order. + */ +export const ORDER_TYPE_FIELDS = [ + { name: "sellToken", type: "address" }, + { name: "buyToken", type: "address" }, + { name: "receiver", type: "address" }, + { name: "sellAmount", type: "uint256" }, + { name: "buyAmount", type: "uint256" }, + { name: "validTo", type: "uint32" }, + { name: "appData", type: "bytes32" }, + { name: "feeAmount", type: "uint256" }, + { name: "kind", type: "string" }, + { name: "partiallyFillable", type: "bool" }, + { name: "sellTokenBalance", type: "string" }, + { name: "buyTokenBalance", type: "string" }, +]; + +/** + * The EIP-712 type fields definition for a Gnosis Protocol v2 order. + */ +export const CANCELLATIONS_TYPE_FIELDS = [ + { name: "orderUids", type: "bytes[]" }, +]; + +/** + * The EIP-712 type hash for a Gnosis Protocol v2 order. + */ +export const ORDER_TYPE_HASH = ethers.utils.id( + `Order(${ORDER_TYPE_FIELDS.map(({ name, type }) => `${type} ${name}`).join( + ",", + )})`, +); + +/** + * Normalizes a timestamp value to a Unix timestamp. + * @param time The timestamp value to normalize. + * @return Unix timestamp or number of seconds since the Unix Epoch. + */ +export function timestamp(t: Timestamp): number { + return typeof t === "number" ? t : ~~(t.getTime() / 1000); +} + +/** + * Normalizes an app data value to a 32-byte hash. + * @param hashLike A hash-like value to normalize. + * @returns A 32-byte hash encoded as a hex-string. + */ +export function hashify(h: HashLike): string { + return typeof h === "number" + ? `0x${h.toString(16).padStart(64, "0")}` + : ethers.utils.hexZeroPad(h, 32); +} + +/** + * Normalizes the balance configuration for a buy token. Specifically, this + * function ensures that {@link OrderBalance.EXTERNAL} gets normalized to + * {@link OrderBalance.ERC20}. + * + * @param balance The balance configuration. + * @returns The normalized balance configuration. + */ +export function normalizeBuyTokenBalance( + balance: OrderBalance | undefined, +): OrderBalance.ERC20 | OrderBalance.INTERNAL { + switch (balance) { + case undefined: + case OrderBalance.ERC20: + case OrderBalance.EXTERNAL: + return OrderBalance.ERC20; + case OrderBalance.INTERNAL: + return OrderBalance.INTERNAL; + default: + throw new Error(`invalid order balance ${balance}`); + } +} + +/** + * Normalized representation of an {@link Order} for EIP-712 operations. + */ +export type NormalizedOrder = Omit< + Order, + "validTo" | "appData" | "kind" | "sellTokenBalance" | "buyTokenBalance" +> & { + receiver: string; + validTo: number; + appData: string; + kind: "sell" | "buy"; + sellTokenBalance: "erc20" | "external" | "internal"; + buyTokenBalance: "erc20" | "internal"; +}; + +/** + * Normalizes an order for hashing and signing, so that it can be used with + * Ethers.js for EIP-712 operations. + * @param hashLike A hash-like value to normalize. + * @returns A 32-byte hash encoded as a hex-string. + */ +export function normalizeOrder(order: Order): NormalizedOrder { + if (order.receiver === ethers.constants.AddressZero) { + throw new Error("receiver cannot be address(0)"); + } + + const normalizedOrder = { + ...order, + sellTokenBalance: order.sellTokenBalance ?? OrderBalance.ERC20, + receiver: order.receiver ?? ethers.constants.AddressZero, + validTo: timestamp(order.validTo), + appData: hashify(order.appData), + buyTokenBalance: normalizeBuyTokenBalance(order.buyTokenBalance), + }; + return normalizedOrder; +} + +/** + * Compute the 32-byte signing hash for the specified order. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param types The order to compute the digest for. + * @return Hex-encoded 32-byte order digest. + */ +export function hashTypedData( + domain: TypedDataDomain, + types: TypedDataTypes, + data: Record, +): string { + return ethers.utils._TypedDataEncoder.hash(domain, types, data); +} + +/** + * Compute the 32-byte signing hash for the specified order. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param order The order to compute the digest for. + * @return Hex-encoded 32-byte order digest. + */ +export function hashOrder(domain: TypedDataDomain, order: Order): string { + return hashTypedData( + domain, + { Order: ORDER_TYPE_FIELDS }, + normalizeOrder(order), + ); +} + +/** + * Compute the 32-byte signing hash for the specified cancellation. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param orderUid The unique identifier of the order to cancel. + * @return Hex-encoded 32-byte order digest. + */ +export function hashOrderCancellation( + domain: TypedDataDomain, + orderUid: BytesLike, +): string { + return hashOrderCancellations(domain, [orderUid]); +} + +/** + * Compute the 32-byte signing hash for the specified order cancellations. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param orderUids The unique identifiers of the orders to cancel. + * @return Hex-encoded 32-byte order digest. + */ +export function hashOrderCancellations( + domain: TypedDataDomain, + orderUids: BytesLike[], +): string { + return hashTypedData( + domain, + { OrderCancellations: CANCELLATIONS_TYPE_FIELDS }, + { orderUids }, + ); +} + +/** + * The byte length of an order UID. + */ +export const ORDER_UID_LENGTH = 56; + +/** + * Order unique identifier parameters. + */ +export interface OrderUidParams { + /** + * The EIP-712 order struct hash. + */ + orderDigest: string; + /** + * The owner of the order. + */ + owner: string; + /** + * The timestamp this order is valid until. + */ + validTo: number | Date; +} + +/** + * Computes the order UID for an order and the given owner. + */ +export function computeOrderUid( + domain: TypedDataDomain, + order: Order, + owner: string, +): string { + return packOrderUidParams({ + orderDigest: hashOrder(domain, order), + owner, + validTo: order.validTo, + }); +} + +/** + * Compute the unique identifier describing a user order in the settlement + * contract. + * + * @param OrderUidParams The parameters used for computing the order's unique + * identifier. + * @returns A string that unequivocally identifies the order of the user. + */ +export function packOrderUidParams({ + orderDigest, + owner, + validTo, +}: OrderUidParams): string { + return ethers.utils.solidityPack( + ["bytes32", "address", "uint32"], + [orderDigest, owner, timestamp(validTo)], + ); +} + +/** + * Extracts the order unique identifier parameters from the specified bytes. + * + * @param orderUid The order UID encoded as a hexadecimal string. + * @returns The extracted order UID parameters. + */ +export function extractOrderUidParams(orderUid: string): OrderUidParams { + const bytes = ethers.utils.arrayify(orderUid); + if (bytes.length != ORDER_UID_LENGTH) { + throw new Error("invalid order UID length"); + } + + const view = new DataView(bytes.buffer); + return { + orderDigest: ethers.utils.hexlify(bytes.subarray(0, 32)), + owner: ethers.utils.getAddress( + ethers.utils.hexlify(bytes.subarray(32, 52)), + ), + validTo: view.getUint32(52), + }; +} diff --git a/packages/contracts-ts/src/proxy.ts b/packages/contracts-ts/src/proxy.ts new file mode 100644 index 000000000..55c1875e3 --- /dev/null +++ b/packages/contracts-ts/src/proxy.ts @@ -0,0 +1,81 @@ +import { BigNumber, BytesLike, Contract, ethers } from "ethers"; + +/** + * Compute an EIP-1967 slot for the specified name. The proxy contract used by + * `hardhat-deploy` implements EIP-1967 (Standard Proxy Storage Slot). + * + * . + */ +function slot(name: string): BytesLike { + return ethers.utils.defaultAbiCoder.encode( + ["bytes32"], + [BigNumber.from(ethers.utils.id(name)).sub(1)], + ); +} + +const IMPLEMENTATION_STORAGE_SLOT = slot("eip1967.proxy.implementation"); +const OWNER_STORAGE_SLOT = slot("eip1967.proxy.admin"); + +/** + * Returns the address of the implementation of an EIP-1967-compatible proxy + * from its address. + * + * @param proxy Address of the proxy contract. + * @returns The address of the contract storing the proxy implementation. + */ +export async function implementationAddress( + provider: ethers.providers.Provider, + proxy: string, +): Promise { + const [implementation] = ethers.utils.defaultAbiCoder.decode( + ["address"], + await provider.getStorageAt(proxy, IMPLEMENTATION_STORAGE_SLOT), + ); + return implementation; +} + +/** + * Returns the address of the implementation of an EIP-1967-compatible proxy + * from its address. + * + * @param proxy Address of the proxy contract. + * @returns The address of the administrator of the proxy. + */ +export async function ownerAddress( + provider: ethers.providers.Provider, + proxy: string, +): Promise { + const [owner] = ethers.utils.defaultAbiCoder.decode( + ["address"], + await provider.getStorageAt(proxy, OWNER_STORAGE_SLOT), + ); + return owner; +} + +/** + * EIP-173 proxy ABI in "human-readable ABI" format. The proxy used by the + * deployment plugin implements this interface, and copying it here avoids + * pulling in `hardhat` as a dependency for just this ABI. + * + * + */ +export const EIP173_PROXY_ABI = [ + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "function owner() view external returns(address)", + "function transferOwnership(address newOwner) external", + "function supportsInterface(bytes4 interfaceID) external view returns (bool)", +]; + +/** + * Returns the proxy interface for the specified address. + * + * @param contract The proxy contract to return a proxy interface for. + * @returns A Ethers.js contract instance for interacting with the proxy. + */ +export function proxyInterface(contract: Contract): Contract { + return new Contract( + contract.address, + EIP173_PROXY_ABI, + contract.signer ?? contract.provider, + ); +} diff --git a/packages/contracts-ts/src/reader.ts b/packages/contracts-ts/src/reader.ts new file mode 100644 index 000000000..6885bd5f8 --- /dev/null +++ b/packages/contracts-ts/src/reader.ts @@ -0,0 +1,141 @@ +import { BigNumber, BytesLike, Contract, ethers } from "ethers"; + +import { InteractionLike, normalizeInteractions } from "./interaction"; +import { Order, OrderBalance } from "./order"; +import { InteractionStage } from "./settlement"; + +/** + * A generic method used to obfuscate the complexity of reading storage + * of any StorageAccessible contract. That is, this method does the work of + * 1. Encoding the function call on the reader + * 2. Simulates delegatecall of storage read with encoded calldata + * 3. Decodes the returned bytes from the storage read into expected return value. + */ +async function readStorage( + base: Contract, + reader: Contract, + method: string, + parameters: unknown[], +) { + const encodedCall = reader.interface.encodeFunctionData(method, parameters); + const resultBytes = await base.callStatic.simulateDelegatecall( + reader.address, + encodedCall, + ); + return reader.interface.decodeFunctionResult(method, resultBytes)[0]; +} + +/** + * A class for attaching the storage reader contract to a solver allow list for + * providing additional storage reading methods. + */ +export class AllowListReader { + constructor( + public readonly allowList: Contract, + public readonly reader: Contract, + ) {} + + /** + * Returns true if all the specified addresses are allowed solvers. + */ + public areSolvers(solvers: BytesLike[]): Promise { + return readStorage(this.allowList, this.reader, "areSolvers", [solvers]); + } +} + +/** + * A class for attaching the storage reader contract to the GPv2Settlement contract + * for providing additional storage reading methods. + */ +export class SettlementReader { + constructor( + public readonly settlement: Contract, + public readonly reader: Contract, + ) {} + + /** + * Read and return filled amounts for a list of orders + */ + public filledAmountsForOrders(orderUids: BytesLike[]): Promise { + return readStorage(this.settlement, this.reader, "filledAmountsForOrders", [ + orderUids, + ]); + } +} + +/** + * A simulated trade. + */ +export type TradeSimulation = Pick< + Order, + | "sellToken" + | "buyToken" + | "receiver" + | "sellAmount" + | "buyAmount" + | "sellTokenBalance" + | "buyTokenBalance" +> & { + /** + * The address of the owner of the trade. For an actual settlement, this would + * usually this would be determinied by recovering an order signature. + */ + owner: string; +}; + +/** + * Account balance changes in a trade simulation + */ +export interface TradeSimulationBalanceDelta { + sellTokenDelta: BigNumber; + buyTokenDelta: BigNumber; +} + +/** + * The result of a trade simulation. + */ +export interface TradeSimulationResult { + gasUsed: BigNumber; + executedBuyAmount: BigNumber; + contractBalance: TradeSimulationBalanceDelta; + ownerBalance: TradeSimulationBalanceDelta; +} + +/** + * Trade simulation storage reader contract allowing the simulation of trades. + */ +export class TradeSimulator { + constructor( + public readonly settlement: Contract, + public readonly simulator: Contract, + ) {} + + /** + * Simulates the single order settlement for an executed trade and a set of + * interactions. + */ + public simulateTrade( + trade: TradeSimulation, + interactions: Partial>, + ): Promise { + const normalizedTrade = { + ...trade, + receiver: trade.receiver ?? ethers.constants.AddressZero, + sellTokenBalance: ethers.utils.id( + trade.sellTokenBalance ?? OrderBalance.ERC20, + ), + buyTokenBalance: ethers.utils.id( + trade.buyTokenBalance ?? OrderBalance.ERC20, + ), + }; + const normalizedInteractions = [ + normalizeInteractions(interactions[InteractionStage.PRE] ?? []), + normalizeInteractions(interactions[InteractionStage.INTRA] ?? []), + normalizeInteractions(interactions[InteractionStage.POST] ?? []), + ]; + return readStorage(this.settlement, this.simulator, "simulateTrade", [ + normalizedTrade, + normalizedInteractions, + ]); + } +} diff --git a/packages/contracts-ts/src/settlement.ts b/packages/contracts-ts/src/settlement.ts new file mode 100644 index 000000000..ffc06541a --- /dev/null +++ b/packages/contracts-ts/src/settlement.ts @@ -0,0 +1,687 @@ +import { BigNumberish, BytesLike, Signer, ethers, BigNumber } from "ethers"; + +import { + Interaction, + InteractionLike, + normalizeInteraction, +} from "./interaction"; +import { + NormalizedOrder, + ORDER_TYPE_FIELDS, + ORDER_UID_LENGTH, + Order, + OrderBalance, + OrderFlags, + OrderKind, + hashTypedData, + normalizeBuyTokenBalance, + normalizeOrder, +} from "./order"; +import { + EcdsaSigningScheme, + Signature, + SigningScheme, + encodeEip1271SignatureData, + signOrder, + decodeEip1271SignatureData, +} from "./sign"; +import { TypedDataDomain } from "./types/ethers"; + +/** + * The stage an interaction should be executed in. + */ +export enum InteractionStage { + /** + * A pre-settlement intraction. + * + * The interaction will be executed before any trading occurs. This can be + * used, for example, to perform as EIP-2612 `permit` call for a user trading + * in the current settlement. + */ + PRE = 0, + /** + * An intra-settlement interaction. + * + * The interaction will be executed after all trade sell amounts are + * transferred into the settlement contract, but before the buy amounts are + * transferred out to the traders. This can be used, for example, to interact + * with on-chain AMMs. + */ + INTRA = 1, + /** + * A post-settlement interaction. + * + * The interaction will be executed after all trading has completed. + */ + POST = 2, +} + +/** + * Gnosis Protocol v2 trade flags. + */ +export interface TradeFlags extends OrderFlags { + /** + * The signing scheme used to encode the signature. + */ + signingScheme: SigningScheme; +} + +/** + * Trade parameters used in a settlement. + */ +export type Trade = TradeExecution & + Omit< + NormalizedOrder, + | "sellToken" + | "buyToken" + | "kind" + | "partiallyFillable" + | "sellTokenBalance" + | "buyTokenBalance" + > & { + /** + * The index of the sell token in the settlement. + */ + sellTokenIndex: BigNumberish; + /** + * The index of the buy token in the settlement. + */ + buyTokenIndex: BigNumberish; + /** + * Encoded order flags. + */ + flags: BigNumberish; + /** + * Signature data. + */ + signature: BytesLike; + }; + +/** + * Details representing how an order was executed. + */ +export interface TradeExecution { + /** + * The executed trade amount. + * + * How this amount is used by the settlement contract depends on the order + * flags: + * - Partially fillable sell orders: the amount of sell tokens to trade. + * - Partially fillable buy orders: the amount of buy tokens to trade. + * - Fill-or-kill orders: this value is ignored. + */ + executedAmount: BigNumberish; +} + +/** + * Order refund data. + * + * Note: after the London hardfork (specifically the introduction of EIP-3529) + * order refunds have become meaningless as the refunded amount is less than the + * gas cost of triggering the refund. The logic surrounding this feature is kept + * in order to keep full test coverage and in case the value of a refund will be + * increased again in the future. However, order refunds should not be used in + * an actual settlement. + */ +export interface OrderRefunds { + /** Refund storage used for order filled amount */ + filledAmounts: BytesLike[]; + /** Refund storage used for order pre-signature */ + preSignatures: BytesLike[]; +} + +/** + * Table mapping token addresses to their respective clearing prices. + */ +export type Prices = Record; + +/** + * Encoded settlement parameters. + */ +export type EncodedSettlement = [ + /** Tokens. */ + string[], + /** Clearing prices. */ + BigNumberish[], + /** Encoded trades. */ + Trade[], + /** Encoded interactions. */ + [Interaction[], Interaction[], Interaction[]], +]; + +/** + * An object listing all flag options in order along with their bit offset. + */ +export const FLAG_MASKS = { + kind: { + offset: 0, + options: [OrderKind.SELL, OrderKind.BUY], + }, + partiallyFillable: { + offset: 1, + options: [false, true], + }, + sellTokenBalance: { + offset: 2, + options: [ + OrderBalance.ERC20, + undefined, // unused + OrderBalance.EXTERNAL, + OrderBalance.INTERNAL, + ], + }, + buyTokenBalance: { + offset: 4, + options: [OrderBalance.ERC20, OrderBalance.INTERNAL], + }, + signingScheme: { + offset: 5, + options: [ + SigningScheme.EIP712, + SigningScheme.ETHSIGN, + SigningScheme.EIP1271, + SigningScheme.PRESIGN, + ], + }, +} as const; + +export type FlagKey = keyof typeof FLAG_MASKS; +export type FlagOptions = (typeof FLAG_MASKS)[K]["options"]; +export type FlagValue = Exclude< + FlagOptions[number], + undefined +>; + +function encodeFlag(key: K, flag: FlagValue): number { + const index = FLAG_MASKS[key].options.findIndex( + (search: unknown) => search === flag, + ); + if (index === undefined) { + throw new Error(`Bad key/value pair to encode: ${key}/${flag}`); + } + return index << FLAG_MASKS[key].offset; +} + +// Counts the smallest mask needed to store the input options in the masked +// bitfield. +function mask(options: readonly unknown[]): number { + const num = options.length; + const bitCount = 32 - Math.clz32(num - 1); + return (1 << bitCount) - 1; +} + +function decodeFlag( + key: K, + flag: BigNumberish, +): FlagValue { + const { offset, options } = FLAG_MASKS[key]; + const numberFlags = BigNumber.from(flag).toNumber(); + const index = (numberFlags >> offset) & mask(options); + // This type casting should not be needed + const decoded = options[index] as FlagValue; + if (decoded === undefined || index < 0) { + throw new Error( + `Invalid input flag for ${key}: 0b${numberFlags.toString(2)}`, + ); + } + return decoded; +} + +/** + * Encodes signing scheme as a bitfield. + * + * @param scheme The signing scheme to encode. + * @return The bitfield result. + */ +export function encodeSigningScheme(scheme: SigningScheme): number { + return encodeFlag("signingScheme", scheme); +} + +/** + * Decodes signing scheme from a bitfield. + * + * @param flag The encoded order flag. + * @return The decoded signing scheme. + */ +export function decodeSigningScheme(flags: BigNumberish): SigningScheme { + return decodeFlag("signingScheme", flags); +} + +/** + * Encodes order flags as a bitfield. + * + * @param flags The order flags to encode. + * @return The bitfield result. + */ +export function encodeOrderFlags(flags: OrderFlags): number { + return ( + encodeFlag("kind", flags.kind) | + encodeFlag("partiallyFillable", flags.partiallyFillable) | + encodeFlag( + "sellTokenBalance", + flags.sellTokenBalance ?? OrderBalance.ERC20, + ) | + encodeFlag( + "buyTokenBalance", + normalizeBuyTokenBalance(flags.buyTokenBalance), + ) + ); +} + +/** + * Decode order flags from a bitfield. + * + * @param flags The order flags encoded as a bitfield. + * @return The decoded order flags. + */ +export function decodeOrderFlags(flags: BigNumberish): OrderFlags { + return { + kind: decodeFlag("kind", flags), + partiallyFillable: decodeFlag("partiallyFillable", flags), + sellTokenBalance: decodeFlag("sellTokenBalance", flags), + buyTokenBalance: decodeFlag("buyTokenBalance", flags), + }; +} + +/** + * Encodes trade flags as a bitfield. + * + * @param flags The trade flags to encode. + * @return The bitfield result. + */ +export function encodeTradeFlags(flags: TradeFlags): number { + return encodeOrderFlags(flags) | encodeSigningScheme(flags.signingScheme); +} + +/** + * Decode trade flags from a bitfield. + * + * @param flags The trade flags encoded as a bitfield. + * @return The bitfield result. + */ +export function decodeTradeFlags(flags: BigNumberish): TradeFlags { + return { + ...decodeOrderFlags(flags), + signingScheme: decodeSigningScheme(flags), + }; +} + +export function encodeSignatureData(sig: Signature): string { + switch (sig.scheme) { + case SigningScheme.EIP712: + case SigningScheme.ETHSIGN: + return ethers.utils.joinSignature(sig.data); + case SigningScheme.EIP1271: + return encodeEip1271SignatureData(sig.data); + case SigningScheme.PRESIGN: + return ethers.utils.getAddress(sig.data); + default: + throw new Error("unsupported signing scheme"); + } +} + +export function decodeSignatureOwner( + domain: TypedDataDomain, + order: Order, + scheme: SigningScheme, + sig: BytesLike, +): string { + switch (scheme) { + case SigningScheme.EIP712: + return ethers.utils.verifyTypedData( + domain, + { Order: ORDER_TYPE_FIELDS }, + normalizeOrder(order), + sig, + ); + case SigningScheme.ETHSIGN: + return ethers.utils.verifyMessage( + ethers.utils.arrayify( + hashTypedData( + domain, + { Order: ORDER_TYPE_FIELDS }, + normalizeOrder(order), + ), + ), + sig, + ); + case SigningScheme.EIP1271: + return decodeEip1271SignatureData(sig).verifier; + case SigningScheme.PRESIGN: + return ethers.utils.getAddress(ethers.utils.hexlify(sig)); + default: + throw new Error("unsupported signing scheme"); + } +} + +/** + * Encodes a trade to be used with the settlement contract. + */ +export function encodeTrade( + tokens: TokenRegistry, + order: Order, + signature: Signature, + { executedAmount }: TradeExecution, +): Trade { + const tradeFlags = { + ...order, + signingScheme: signature.scheme, + }; + const o = normalizeOrder(order); + + return { + sellTokenIndex: tokens.index(o.sellToken), + buyTokenIndex: tokens.index(o.buyToken), + receiver: o.receiver, + sellAmount: o.sellAmount, + buyAmount: o.buyAmount, + validTo: o.validTo, + appData: o.appData, + feeAmount: o.feeAmount, + flags: encodeTradeFlags(tradeFlags), + executedAmount, + signature: encodeSignatureData(signature), + }; +} + +/** + * A class used for tracking tokens when encoding settlements. + * + * This is used as settlement trades reference tokens by index instead of + * directly by address for multiple reasons: + * - Reduce encoding size of orders to save on `calldata` gas. + * - Direct access to a token's clearing price on settlement instead of + * requiring a search. + */ +export class TokenRegistry { + private readonly _tokens: string[] = []; + private readonly _tokenMap: Record = {}; + + /** + * Gets the array of token addresses currently stored in the registry. + */ + public get addresses(): string[] { + // NOTE: Make sure to slice the original array, so it cannot be modified + // outside of this class. + return this._tokens.slice(); + } + + /** + * Retrieves the token index for the specified token address. If the token is + * not in the registry, it will be added. + * + * @param token The token address to add to the registry. + * @return The token index. + */ + public index(token: string): number { + // NOTE: Verify and normalize the address into a case-checksummed address. + // Not only does this ensure validity of the addresses early on, it also + // makes it so `0xff...f` and `0xFF..F` map to the same ID. + const tokenAddress = ethers.utils.getAddress(token); + + let tokenIndex = this._tokenMap[tokenAddress]; + if (tokenIndex === undefined) { + tokenIndex = this._tokens.length; + this._tokens.push(tokenAddress); + this._tokenMap[tokenAddress] = tokenIndex; + } + + return tokenIndex; + } +} + +/** + * A class for building calldata for a settlement. + * + * The encoder ensures that token addresses are kept track of and performs + * necessary computation in order to map each token addresses to IDs to + * properly encode order parameters for trades. + */ +export class SettlementEncoder { + private readonly _tokens = new TokenRegistry(); + private readonly _trades: Trade[] = []; + private readonly _interactions: Record = { + [InteractionStage.PRE]: [], + [InteractionStage.INTRA]: [], + [InteractionStage.POST]: [], + }; + private readonly _orderRefunds: OrderRefunds = { + filledAmounts: [], + preSignatures: [], + }; + + /** + * Creates a new settlement encoder instance. + * @param domain Domain used for signing orders. See {@link signOrder} for + * more details. + */ + public constructor(public readonly domain: TypedDataDomain) {} + + /** + * Gets the array of token addresses used by the currently encoded orders. + */ + public get tokens(): string[] { + // NOTE: Make sure to slice the original array, so it cannot be modified + // outside of this class. + return this._tokens.addresses; + } + + /** + * Gets the encoded trades. + */ + public get trades(): Trade[] { + return this._trades.slice(); + } + + /** + * Gets all encoded interactions for all stages. + * + * Note that order refund interactions are included as post-interactions. + */ + public get interactions(): [Interaction[], Interaction[], Interaction[]] { + return [ + this._interactions[InteractionStage.PRE].slice(), + this._interactions[InteractionStage.INTRA].slice(), + [ + ...this._interactions[InteractionStage.POST], + ...this.encodedOrderRefunds, + ], + ]; + } + + /** + * Gets the order refunds encoded as interactions. + */ + public get encodedOrderRefunds(): Interaction[] { + const { filledAmounts, preSignatures } = this._orderRefunds; + if (filledAmounts.length + preSignatures.length === 0) { + return []; + } + + const settlement = this.domain.verifyingContract; + if (settlement === undefined) { + throw new Error("domain missing settlement contract address"); + } + + // NOTE: Avoid importing the full GPv2Settlement contract artifact just for + // a tiny snippet of the ABI. Unit and integration tests will catch any + // issues that may arise from this definition becoming out of date. + const iface = new ethers.utils.Interface([ + "function freeFilledAmountStorage(bytes[] orderUids)", + "function freePreSignatureStorage(bytes[] orderUids)", + ]); + + const interactions = []; + for (const [functionName, orderUids] of [ + ["freeFilledAmountStorage", filledAmounts] as const, + ["freePreSignatureStorage", preSignatures] as const, + ].filter(([, orderUids]) => orderUids.length > 0)) { + interactions.push( + normalizeInteraction({ + target: settlement, + callData: iface.encodeFunctionData(functionName, [orderUids]), + }), + ); + } + + return interactions; + } + + /** + * Returns a clearing price vector for the current settlement tokens from the + * provided price map. + * + * @param prices The price map from token address to price. + * @return The price vector. + */ + public clearingPrices(prices: Prices): BigNumberish[] { + return this.tokens.map((token) => { + const price = prices[token]; + if (price === undefined) { + throw new Error(`missing price for token ${token}`); + } + return price; + }); + } + + /** + * Encodes a trade from a signed order and executed amount, appending it to + * the `calldata` bytes that are being built. + * + * Additionally, if the order references new tokens that the encoder has not + * yet seen, they are added to the tokens array. + * + * @param order The order of the trade to encode. + * @param signature The signature for the order data. + * @param tradeExecution The execution details for the trade. + */ + public encodeTrade( + order: Order, + signature: Signature, + { executedAmount }: Partial = {}, + ): void { + if (order.partiallyFillable && executedAmount === undefined) { + throw new Error("missing executed amount for partially fillable trade"); + } + + this._trades.push( + encodeTrade(this._tokens, order, signature, { + executedAmount: executedAmount ?? 0, + }), + ); + } + + /** + * Signs an order and encodes a trade with that order. + * + * @param order The order to sign for the trade. + * @param owner The externally owned account that should sign the order. + * @param scheme The signing scheme to use. See {@link SigningScheme} for more + * details. + * @param tradeExecution The execution details for the trade. + */ + public async signEncodeTrade( + order: Order, + owner: Signer, + scheme: EcdsaSigningScheme, + tradeExecution?: Partial, + ): Promise { + const signature = await signOrder(this.domain, order, owner, scheme); + this.encodeTrade(order, signature, tradeExecution); + } + + /** + * Encodes the input interaction in the packed format accepted by the smart + * contract and adds it to the interactions encoded so far. + * + * @param stage The stage the interaction should be executed. + * @param interaction The interaction to encode. + */ + public encodeInteraction( + interaction: InteractionLike, + stage: InteractionStage = InteractionStage.INTRA, + ): void { + this._interactions[stage].push(normalizeInteraction(interaction)); + } + + /** + * Encodes order UIDs for gas refunds. + * + * @param settlement The address of the settlement contract. + * @param orderRefunds The order refunds to encode. + */ + public encodeOrderRefunds(orderRefunds: Partial): void { + if (this.domain.verifyingContract === undefined) { + throw new Error("domain missing settlement contract address"); + } + + const filledAmounts = orderRefunds.filledAmounts ?? []; + const preSignatures = orderRefunds.preSignatures ?? []; + + if ( + ![...filledAmounts, ...preSignatures].every((orderUid) => + ethers.utils.isHexString(orderUid, ORDER_UID_LENGTH), + ) + ) { + throw new Error("one or more invalid order UIDs"); + } + + this._orderRefunds.filledAmounts.push(...filledAmounts); + this._orderRefunds.preSignatures.push(...preSignatures); + } + + /** + * Returns the encoded settlement parameters. + */ + public encodedSettlement(prices: Prices): EncodedSettlement { + return [ + this.tokens, + this.clearingPrices(prices), + this.trades, + this.interactions, + ]; + } + + /** + * Returns an encoded settlement that exclusively performs setup interactions. + * This method can be used, for example, to set the settlement contract's + * allowances to other protocols it may interact with. + * + * @param interactions The list of setup interactions to encode. + */ + public static encodedSetup( + ...interactions: InteractionLike[] + ): EncodedSettlement { + const encoder = new SettlementEncoder({ name: "unused" }); + for (const interaction of interactions) { + encoder.encodeInteraction(interaction); + } + return encoder.encodedSettlement({}); + } +} + +/** + * Decodes an order from a settlement trade. + * + * @param trade The trade to decode into an order. + * @param tokens The list of token addresses as they appear in the settlement. + * @returns The decoded order. + */ +export function decodeOrder(trade: Trade, tokens: string[]): Order { + const sellTokenIndex = BigNumber.from(trade.sellTokenIndex).toNumber(); + const buyTokenIndex = BigNumber.from(trade.buyTokenIndex).toNumber(); + if (Math.max(sellTokenIndex, buyTokenIndex) >= tokens.length) { + throw new Error("Invalid trade"); + } + return { + sellToken: tokens[sellTokenIndex], + buyToken: tokens[buyTokenIndex], + receiver: trade.receiver, + sellAmount: trade.sellAmount, + buyAmount: trade.buyAmount, + validTo: BigNumber.from(trade.validTo).toNumber(), + appData: trade.appData, + feeAmount: trade.feeAmount, + ...decodeOrderFlags(trade.flags), + }; +} diff --git a/packages/contracts-ts/src/sign.ts b/packages/contracts-ts/src/sign.ts new file mode 100644 index 000000000..ae8630929 --- /dev/null +++ b/packages/contracts-ts/src/sign.ts @@ -0,0 +1,268 @@ +import { BytesLike, ethers, Signer } from "ethers"; + +import { + ORDER_TYPE_FIELDS, + CANCELLATIONS_TYPE_FIELDS, + Order, + normalizeOrder, + hashTypedData, +} from "./order"; +import { + TypedDataTypes, + SignatureLike, + isTypedDataSigner, + TypedDataDomain, +} from "./types/ethers"; + +/** + * Value returned by a call to `isValidSignature` if the signature was verified + * successfully. The value is defined in the EIP-1271 standard as: + * bytes4(keccak256("isValidSignature(bytes32,bytes)")) + */ +export const EIP1271_MAGICVALUE = ethers.utils.hexDataSlice( + ethers.utils.id("isValidSignature(bytes32,bytes)"), + 0, + 4, +); + +/** + * Marker value indicating a presignature is set. + */ +export const PRE_SIGNED = ethers.utils.id("GPv2Signing.Scheme.PreSign"); + +/** + * The signing scheme used to sign the order. + */ +export enum SigningScheme { + /** + * The EIP-712 typed data signing scheme. This is the preferred scheme as it + * provides more infomation to wallets performing the signature on the data + * being signed. + * + * + */ + EIP712 = 0b00, + /** + * Message signed using eth_sign RPC call. + */ + ETHSIGN = 0b01, + /** + * Smart contract signatures as defined in EIP-1271. + * + * + */ + EIP1271 = 0b10, + /** + * Pre-signed order. + */ + PRESIGN = 0b11, +} + +export type EcdsaSigningScheme = SigningScheme.EIP712 | SigningScheme.ETHSIGN; + +/** + * The signature of an order. + */ +export type Signature = EcdsaSignature | Eip1271Signature | PreSignSignature; + +/** + * ECDSA signature of an order. + */ +export interface EcdsaSignature { + /** + * The signing scheme used in the signature. + */ + scheme: EcdsaSigningScheme; + /** + * The ECDSA signature. + */ + data: SignatureLike; +} + +/** + * EIP-1271 signature data. + */ +export interface Eip1271SignatureData { + /** + * The verifying contract address. + */ + verifier: string; + /** + * The arbitrary signature data used for verification. + */ + signature: BytesLike; +} + +/** + * EIP-1271 signature of an order. + */ +export interface Eip1271Signature { + /** + * The signing scheme used in the signature. + */ + scheme: SigningScheme.EIP1271; + /** + * The signature data. + */ + data: Eip1271SignatureData; +} + +/** + * Signature data for a pre-signed order. + */ +export interface PreSignSignature { + /** + * The signing scheme used in the signature. + */ + scheme: SigningScheme.PRESIGN; + /** + * The address of the signer. + */ + data: string; +} + +async function ecdsaSignTypedData( + scheme: EcdsaSigningScheme, + owner: Signer, + domain: TypedDataDomain, + types: TypedDataTypes, + data: Record, +): Promise { + let signature: string | null = null; + + switch (scheme) { + case SigningScheme.EIP712: + if (!isTypedDataSigner(owner)) { + throw new Error("signer does not support signing typed data"); + } + signature = await owner._signTypedData(domain, types, data); + break; + case SigningScheme.ETHSIGN: + signature = await owner.signMessage( + ethers.utils.arrayify(hashTypedData(domain, types, data)), + ); + break; + default: + throw new Error("invalid signing scheme"); + } + + // Passing the signature through split/join to normalize the `v` byte. + // Some wallets do not pad it with `27`, which causes a signature failure + // `splitSignature` pads it if needed, and `joinSignature` simply puts it back together + return ethers.utils.joinSignature(ethers.utils.splitSignature(signature)); +} + +/** + * Returns the signature for the specified order with the signing scheme encoded + * into the signature. + * + * @param domain The domain to sign the order for. This is used by the smart + * contract to ensure orders can't be replayed across different applications, + * but also different deployments (as the contract chain ID and address are + * mixed into to the domain value). + * @param order The order to sign. + * @param owner The owner for the order used to sign. + * @param scheme The signing scheme to use. See {@link SigningScheme} for more + * details. + * @return Encoded signature including signing scheme for the order. + */ +export async function signOrder( + domain: TypedDataDomain, + order: Order, + owner: Signer, + scheme: EcdsaSigningScheme, +): Promise { + return { + scheme, + data: await ecdsaSignTypedData( + scheme, + owner, + domain, + { Order: ORDER_TYPE_FIELDS }, + normalizeOrder(order), + ), + }; +} + +/** + * Returns the signature for cancelling a single order with the specified + * signing scheme. + * + * @param domain The domain to sign the cancellation. + * @param orderUid The unique identifier of the order being cancelled. + * @param owner The owner for the order used to sign. + * @param scheme The signing scheme to use. See {@link SigningScheme} for more + * details. + * @return Encoded signature including signing scheme for the cancellation. + */ +export async function signOrderCancellation( + domain: TypedDataDomain, + orderUid: BytesLike, + owner: Signer, + scheme: EcdsaSigningScheme, +): Promise { + return signOrderCancellations(domain, [orderUid], owner, scheme); +} + +/** + * Returns the signature for cancelling multiple orders by UID with the + * specified signing scheme. + * + * @param domain The domain to sign the cancellation. + * @param orderUids The unique identifiers of the orders to cancel. + * @param owner The owner for the order used to sign. + * @param scheme The signing scheme to use. See {@link SigningScheme} for more + * details. + * @return Encoded signature including signing scheme for the cancellation. + */ +export async function signOrderCancellations( + domain: TypedDataDomain, + orderUids: BytesLike[], + owner: Signer, + scheme: EcdsaSigningScheme, +): Promise { + return { + scheme, + data: await ecdsaSignTypedData( + scheme, + owner, + domain, + { OrderCancellations: CANCELLATIONS_TYPE_FIELDS }, + { orderUids }, + ), + }; +} + +/** + * Encodes the necessary data required for the Gnosis Protocol contracts to + * verify an EIP-1271 signature. + * + * @param signature The EIP-1271 signature data to encode. + */ +export function encodeEip1271SignatureData({ + verifier, + signature, +}: Eip1271SignatureData): string { + return ethers.utils.solidityPack(["address", "bytes"], [verifier, signature]); +} + +/** + * Decodes a GPv2 EIP-1271-type signature into the actual EIP-1271 signature + * and the verifier contract. + * + * @param signature The EIP-1271 signature data to decode. + * @returns decodedSignature The decoded signature object, composed of an + * EIP-1271 signature and a verifier. + */ +export function decodeEip1271SignatureData( + signature: BytesLike, +): Eip1271SignatureData { + const arrayifiedSignature = ethers.utils.arrayify(signature); + const verifier = ethers.utils.getAddress( + ethers.utils.hexlify(arrayifiedSignature.slice(0, 20)), + ); + return { + verifier, + signature: arrayifiedSignature.slice(20), + }; +} diff --git a/packages/contracts-ts/src/signers.ts b/packages/contracts-ts/src/signers.ts new file mode 100644 index 000000000..46f6d9790 --- /dev/null +++ b/packages/contracts-ts/src/signers.ts @@ -0,0 +1,269 @@ +import { _TypedDataEncoder } from "@ethersproject/hash"; +import type { JsonRpcProvider } from "@ethersproject/providers"; +import { ethers, Signer } from "ethers"; + +import { + isJsonRpcProvider, + TypedDataDomain, + TypedDataSigner, + TypedDataTypes, +} from "./types/ethers"; + +/** + * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData`. It allows to specify the version of + * EIP-712 used. + * + * Takes a Signer instance on creation. + * All other Signer methods are proxied to initial instance. + */ +export class TypedDataVersionedSigner implements TypedDataSigner { + signer: Signer; + provider: JsonRpcProvider; + _isSigner = true; + _signMethod: string; + + constructor(signer: Signer, version?: "v3" | "v4") { + this.signer = signer; + const versionSufix = version ? "_" + version : ""; + this._signMethod = "eth_signTypedData" + versionSufix; + + if (!signer.provider) { + throw new Error("Signer does not have a provider set"); + } + if (!isJsonRpcProvider(signer.provider)) { + throw new Error("Provider must be of type JsonRpcProvider"); + } + + this.provider = signer.provider; + } + + async _signTypedData( + domain: TypedDataDomain, + types: TypedDataTypes, + data: Record, + ): Promise { + const populated = await _TypedDataEncoder.resolveNames( + domain, + types, + data, + (name: string) => this.resolveName(name), + ); + + const payload = _TypedDataEncoder.getPayload( + populated.domain, + types, + populated.value, + ); + const msg = JSON.stringify(payload); + + const address = await this.getAddress(); + + // Actual signing + return this.provider.send(this._signMethod, [address.toLowerCase(), msg]); + } + + // --- start boilerplate proxy methods --- + + getAddress(): Promise { + return this.signer.getAddress(); + } + signMessage(message: string | ethers.utils.Bytes): Promise { + return this.signer.signMessage(message); + } + signTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.signTransaction(transaction); + } + connect(provider: ethers.providers.Provider): ethers.Signer { + return this.signer.connect(provider); + } + getBalance(blockTag?: ethers.providers.BlockTag): Promise { + return this.signer.getBalance(blockTag); + } + getTransactionCount(blockTag?: ethers.providers.BlockTag): Promise { + return this.signer.getTransactionCount(blockTag); + } + estimateGas( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.estimateGas(transaction); + } + call( + transaction: ethers.utils.Deferrable, + blockTag?: ethers.providers.BlockTag, + ): Promise { + return this.signer.call(transaction, blockTag); + } + sendTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.sendTransaction(transaction); + } + getChainId(): Promise { + return this.signer.getChainId(); + } + getGasPrice(): Promise { + return this.signer.getGasPrice(); + } + getFeeData(): Promise { + return this.signer.getFeeData(); + } + resolveName(name: string): Promise { + return this.signer.resolveName(name); + } + checkTransaction( + transaction: ethers.utils.Deferrable, + ): ethers.utils.Deferrable { + return this.signer.checkTransaction(transaction); + } + populateTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.populateTransaction(transaction); + } + _checkProvider(operation?: string): void { + return this.signer._checkProvider(operation); + } + + // --- end boilerplate proxy methods --- +} + +/** + * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData` using + * `eth_signTypedData_v3` instead of `eth_signTypedData_v4`. + * + * Takes a Signer instance on creation. + * All other Signer methods are proxied to initial instance. + */ +export class TypedDataV3Signer extends TypedDataVersionedSigner { + constructor(signer: Signer) { + super(signer, "v3"); + } +} + +/** + * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData` using + * `eth_signTypedData_v4` as usual. + * The difference here is that the domain `chainId` is transformed to a `number`. + * That's done to circumvent a bug introduced in the latest Metamask version (9.6.0) + * that no longer accepts a string for domain `chainId`. + * See for more details https://github.com/MetaMask/metamask-extension/issues/11308. + * + * Takes a Signer instance on creation. + * All other Signer methods are proxied to initial instance. + */ +export class IntChainIdTypedDataV4Signer implements TypedDataSigner { + signer: Signer; + provider: JsonRpcProvider; + _isSigner = true; + + constructor(signer: Signer) { + this.signer = signer; + + if (!signer.provider) { + throw new Error("Signer does not have a provider set"); + } + if (!isJsonRpcProvider(signer.provider)) { + throw new Error("Provider must be of type JsonRpcProvider"); + } + + this.provider = signer.provider; + } + + async _signTypedData( + domain: TypedDataDomain, + types: TypedDataTypes, + data: Record, + ): Promise { + const populated = await _TypedDataEncoder.resolveNames( + domain, + types, + data, + (name: string) => this.resolveName(name), + ); + + const payload = _TypedDataEncoder.getPayload( + populated.domain, + types, + populated.value, + ); + // Making `chainId` an int since Latest Metamask version (9.6.0) breaks otherwise + payload.domain.chainId = parseInt(payload.domain.chainId, 10); + const msg = JSON.stringify(payload); + + const address = await this.getAddress(); + + // Actual signing + return (await this.provider.send("eth_signTypedData_v4", [ + address.toLowerCase(), + msg, + ])) as string; + } + + // --- start boilerplate proxy methods --- + + getAddress(): Promise { + return this.signer.getAddress(); + } + signMessage(message: string | ethers.utils.Bytes): Promise { + return this.signer.signMessage(message); + } + signTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.signTransaction(transaction); + } + connect(provider: ethers.providers.Provider): ethers.Signer { + return this.signer.connect(provider); + } + getBalance(blockTag?: ethers.providers.BlockTag): Promise { + return this.signer.getBalance(blockTag); + } + getTransactionCount(blockTag?: ethers.providers.BlockTag): Promise { + return this.signer.getTransactionCount(blockTag); + } + estimateGas( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.estimateGas(transaction); + } + call( + transaction: ethers.utils.Deferrable, + blockTag?: ethers.providers.BlockTag, + ): Promise { + return this.signer.call(transaction, blockTag); + } + sendTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.sendTransaction(transaction); + } + getChainId(): Promise { + return this.signer.getChainId(); + } + getGasPrice(): Promise { + return this.signer.getGasPrice(); + } + getFeeData(): Promise { + return this.signer.getFeeData(); + } + resolveName(name: string): Promise { + return this.signer.resolveName(name); + } + checkTransaction( + transaction: ethers.utils.Deferrable, + ): ethers.utils.Deferrable { + return this.signer.checkTransaction(transaction); + } + populateTransaction( + transaction: ethers.utils.Deferrable, + ): Promise { + return this.signer.populateTransaction(transaction); + } + _checkProvider(operation?: string): void { + return this.signer._checkProvider(operation); + } + + // --- end boilerplate proxy methods --- +} diff --git a/packages/contracts-ts/src/swap.ts b/packages/contracts-ts/src/swap.ts new file mode 100644 index 000000000..98460846a --- /dev/null +++ b/packages/contracts-ts/src/swap.ts @@ -0,0 +1,299 @@ +import { BigNumberish, BytesLike, Signer } from "ethers"; + +import { Order, OrderKind } from "./order"; +import { TokenRegistry, Trade, encodeTrade } from "./settlement"; +import { EcdsaSigningScheme, Signature, signOrder } from "./sign"; +import { TypedDataDomain } from "./types/ethers"; + +/** + * A Balancer swap used for settling a single order against Balancer pools. + */ +export interface Swap { + /** + * The ID of the pool for the swap. + */ + poolId: BytesLike; + /** + * The swap input token address. + */ + assetIn: string; + /** + * The swap output token address. + */ + assetOut: string; + /** + * The amount to swap. This will ether be a fixed input amount when swapping + * a sell order, or a fixed output amount when swapping a buy order. + */ + amount: BigNumberish; + /** + * Optional additional pool user data required for the swap. + * + * This additional user data is pool implementation specific, and allows pools + * to extend the Vault pool interface. + */ + userData?: BytesLike; +} + +/** + * An encoded Balancer swap request that can be used as input to the settlement + * contract. + */ +export interface BatchSwapStep { + /** + * The ID of the pool for the swap. + */ + poolId: BytesLike; + /** + * The index of the input token. + * + * Settlement swap calls encode tokens as an array, this number represents an + * index into that array. + */ + assetInIndex: number; + /** + * The index of the output token. + */ + assetOutIndex: number; + /** + * The amount to swap. + */ + amount: BigNumberish; + /** + * Additional pool user data required for the swap. + */ + userData: BytesLike; +} + +/** + * Swap execution parameters. + */ +export interface SwapExecution { + /** + * The limit amount for the swap. + * + * This allows settlement submission to define a tighter slippage than what + * was specified by the order in order to reduce MEV opportunity. + */ + limitAmount: BigNumberish; +} + +/** + * Encoded swap parameters. + */ +export type EncodedSwap = [ + /** Swap requests. */ + BatchSwapStep[], + /** Tokens. */ + string[], + /** Encoded trade. */ + Trade, +]; + +/** + * Encodes a swap as a {@link BatchSwapStep} to be used with the settlement + * contract. + */ +export function encodeSwapStep( + tokens: TokenRegistry, + swap: Swap, +): BatchSwapStep { + return { + poolId: swap.poolId, + assetInIndex: tokens.index(swap.assetIn), + assetOutIndex: tokens.index(swap.assetOut), + amount: swap.amount, + userData: swap.userData || "0x", + }; +} + +/** + * A class for building calldata for a swap. + * + * The encoder ensures that token addresses are kept track of and performs + * necessary computation in order to map each token addresses to IDs to + * properly encode swap requests and the trade. + */ +export class SwapEncoder { + private readonly _tokens = new TokenRegistry(); + private readonly _swaps: BatchSwapStep[] = []; + private _trade: Trade | undefined = undefined; + + /** + * Creates a new settlement encoder instance. + * + * @param domain Domain used for signing orders. See {@link signOrder} for + * more details. + */ + public constructor(public readonly domain: TypedDataDomain) {} + + /** + * Gets the array of token addresses used by the currently encoded swaps. + */ + public get tokens(): string[] { + // NOTE: Make sure to slice the original array, so it cannot be modified + // outside of this class. + return this._tokens.addresses; + } + + /** + * Gets the encoded swaps. + */ + public get swaps(): BatchSwapStep[] { + return this._swaps.slice(); + } + + /** + * Gets the encoded trade. + */ + public get trade(): Trade { + if (this._trade === undefined) { + throw new Error("trade not encoded"); + } + return this._trade; + } + + /** + * Encodes the swap as a swap request and appends it to the swaps encoded so + * far. + * + * @param swap The Balancer swap to encode. + */ + public encodeSwapStep(...swaps: Swap[]): void { + this._swaps.push( + ...swaps.map((swap) => encodeSwapStep(this._tokens, swap)), + ); + } + + /** + * Encodes a trade from a signed order. + * + * Additionally, if the order references new tokens that the encoder has not + * yet seen, they are added to the tokens array. + * + * @param order The order of the trade to encode. + * @param signature The signature for the order data. + */ + public encodeTrade( + order: Order, + signature: Signature, + swapExecution?: Partial, + ): void { + const { limitAmount } = { + limitAmount: + order.kind == OrderKind.SELL ? order.buyAmount : order.sellAmount, + ...swapExecution, + }; + + this._trade = encodeTrade(this._tokens, order, signature, { + executedAmount: limitAmount, + }); + } + + /** + * Signs an order and encodes a trade with that order. + * + * @param order The order to sign for the trade. + * @param owner The externally owned account that should sign the order. + * @param scheme The signing scheme to use. See {@link SigningScheme} for more + * details. + */ + public async signEncodeTrade( + order: Order, + owner: Signer, + scheme: EcdsaSigningScheme, + swapExecution?: Partial, + ): Promise { + const signature = await signOrder(this.domain, order, owner, scheme); + this.encodeTrade(order, signature, swapExecution); + } + + /** + * Returns the encoded swap parameters for the current state of the encoder. + * + * This method with raise an exception if a trade has not been encoded. + */ + public encodedSwap(): EncodedSwap { + return [this.swaps, this.tokens, this.trade]; + } + + public static encodeSwap( + swaps: Swap[], + order: Order, + signature: Signature, + ): EncodedSwap; + public static encodeSwap( + swaps: Swap[], + order: Order, + signature: Signature, + swapExecution: Partial | undefined, + ): EncodedSwap; + + public static encodeSwap( + domain: TypedDataDomain, + swaps: Swap[], + order: Order, + owner: Signer, + scheme: EcdsaSigningScheme, + ): Promise; + public static encodeSwap( + domain: TypedDataDomain, + swaps: Swap[], + order: Order, + owner: Signer, + scheme: EcdsaSigningScheme, + swapExecution: Partial | undefined, + ): Promise; + + /** + * Utility method for encoding a direct swap between an order and Balancer + * pools. + * + * This method functions identically to using a {@link SwapEncoder} and is + * provided as a short-cut. + */ + public static encodeSwap( + ...args: + | [Swap[], Order, Signature] + | [Swap[], Order, Signature, Partial | undefined] + | [TypedDataDomain, Swap[], Order, Signer, EcdsaSigningScheme] + | [ + TypedDataDomain, + Swap[], + Order, + Signer, + EcdsaSigningScheme, + Partial | undefined, + ] + ): EncodedSwap | Promise { + if (args.length < 5) { + const [swaps, order, signature, swapExecution] = args as unknown as [ + Swap[], + Order, + Signature, + Partial | undefined, + ]; + + const encoder = new SwapEncoder({}); + encoder.encodeSwapStep(...swaps); + encoder.encodeTrade(order, signature, swapExecution); + return encoder.encodedSwap(); + } else { + const [domain, swaps, order, owner, scheme, swapExecution] = + args as unknown as [ + TypedDataDomain, + Swap[], + Order, + Signer, + EcdsaSigningScheme, + Partial | undefined, + ]; + + const encoder = new SwapEncoder(domain); + encoder.encodeSwapStep(...swaps); + return encoder + .signEncodeTrade(order, owner, scheme, swapExecution) + .then(() => encoder.encodedSwap()); + } + } +} diff --git a/packages/contracts-ts/src/types/ethers.ts b/packages/contracts-ts/src/types/ethers.ts new file mode 100644 index 000000000..5399869ff --- /dev/null +++ b/packages/contracts-ts/src/types/ethers.ts @@ -0,0 +1,48 @@ +import type { JsonRpcProvider, Provider } from "@ethersproject/providers"; +import type { ethers, Signer } from "ethers"; + +/** + * A signature-like type. + */ +export type SignatureLike = Parameters[0]; + +/** + * EIP-712 typed data domain. + */ +export type TypedDataDomain = Parameters< + typeof ethers.utils._TypedDataEncoder.hashDomain +>[0]; + +/** + * EIP-712 typed data type definitions. + */ +export type TypedDataTypes = Parameters< + typeof ethers.utils._TypedDataEncoder.hashStruct +>[1]; + +/** + * Ethers EIP-712 typed data signer interface. + */ +export interface TypedDataSigner extends Signer { + /** + * Signs the typed data value with types data structure for domain using the + * EIP-712 specification. + */ + _signTypedData: typeof ethers.VoidSigner.prototype._signTypedData; +} + +/** + * Checks whether the specified signer is a typed data signer. + */ +export function isTypedDataSigner(signer: Signer): signer is TypedDataSigner { + return "_signTypedData" in signer; +} + +/** + * Checks whether the specified provider is a JSON RPC provider. + */ +export function isJsonRpcProvider( + provider: Provider, +): provider is JsonRpcProvider { + return "send" in provider; +} diff --git a/packages/contracts-ts/src/vault.ts b/packages/contracts-ts/src/vault.ts new file mode 100644 index 000000000..3bce55ba5 --- /dev/null +++ b/packages/contracts-ts/src/vault.ts @@ -0,0 +1,39 @@ +import { ethers, Contract } from "ethers"; + +/** + * Balancer Vault partial ABI interface. + * + * This definition only contains the Vault methods that are used by GPv2 Vault + * relayer. It is copied here to avoid relying on build artifacts. + */ +export const VAULT_INTERFACE = new ethers.utils.Interface([ + "function manageUserBalance((uint8, address, uint256, address, address)[])", + "function batchSwap(uint8, (bytes32, uint256, uint256, uint256, bytes)[], address[], (address, bool, address, bool), int256[], uint256)", +]); + +/** + * Grants the required roles to the specified Vault relayer. + * + * This method is intended to be called by the Balancer Vault admin, and **not** + * traders. It is included in the exported TypeScript library for completeness + * and "documentation". + * + * @param authorizer The Vault authorizer contract that manages access. + * @param vaultAddress The address to the Vault. + * @param vaultRelayerAddress The address to the GPv2 Vault relayer contract. + */ +export async function grantRequiredRoles( + authorizer: Contract, + vaultAddress: string, + vaultRelayerAddress: string, +): Promise { + for (const name in VAULT_INTERFACE.functions) { + await authorizer.grantRole( + ethers.utils.solidityKeccak256( + ["uint256", "bytes4"], + [vaultAddress, VAULT_INTERFACE.getSighash(name)], + ), + vaultRelayerAddress, + ); + } +} diff --git a/packages/contracts-ts/tsconfig.json b/packages/contracts-ts/tsconfig.json new file mode 100644 index 000000000..6173d9fb9 --- /dev/null +++ b/packages/contracts-ts/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../packages/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "types": ["jest"] + }, + "include": ["src/**/*", "tests/**/*"], + "exclude": ["node_modules", "dist"] +} From 2e14272f1a24a232aef584611924055ed657d16c Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 12:08:28 -0300 Subject: [PATCH 22/33] feat: refactor contracts-ts --- .../src/adapters/AbstractProviderAdapter.ts | 19 + .../common/src/adapters/AbstractSigner.ts | 13 + packages/common/src/adapters/index.ts | 1 + .../common/src/adapters/types/AdapterUtils.ts | 171 +++++++- packages/common/src/adapters/types/index.ts | 66 +++ packages/contracts-ts/package.json | 4 +- packages/contracts-ts/src/ContractsTs.ts | 118 ++++++ packages/contracts-ts/src/api.ts | 255 +++++------- packages/contracts-ts/src/deploy.ts | 64 ++- packages/contracts-ts/src/index.ts | 55 ++- packages/contracts-ts/src/interaction.ts | 25 +- packages/contracts-ts/src/order.ts | 312 +++++--------- packages/contracts-ts/src/proxy.ts | 73 ++-- packages/contracts-ts/src/reader.ts | 136 ++++--- packages/contracts-ts/src/settlement.ts | 383 +++++++----------- packages/contracts-ts/src/sign.ts | 191 +++------ packages/contracts-ts/src/signers.ts | 248 +----------- packages/contracts-ts/src/swap.ts | 150 ++++--- packages/contracts-ts/src/types.ts | 173 ++++++++ packages/contracts-ts/src/types/ethers.ts | 48 --- packages/contracts-ts/src/vault.ts | 37 +- packages/contracts-ts/tsconfig.json | 3 +- pnpm-lock.yaml | 219 ++++++++++ 23 files changed, 1457 insertions(+), 1307 deletions(-) create mode 100644 packages/common/src/adapters/AbstractSigner.ts create mode 100644 packages/contracts-ts/src/ContractsTs.ts create mode 100644 packages/contracts-ts/src/types.ts delete mode 100644 packages/contracts-ts/src/types/ethers.ts diff --git a/packages/common/src/adapters/AbstractProviderAdapter.ts b/packages/common/src/adapters/AbstractProviderAdapter.ts index a2d0cd0bb..dedf4796b 100644 --- a/packages/common/src/adapters/AbstractProviderAdapter.ts +++ b/packages/common/src/adapters/AbstractProviderAdapter.ts @@ -1,3 +1,4 @@ +import { AbstractSigner } from './AbstractSigner' import type { AdapterTypes, AdapterUtils } from './types' /** @@ -8,7 +9,25 @@ import type { AdapterTypes, AdapterUtils } from './types' export abstract class AbstractProviderAdapter { public abstract utils: AdapterUtils + public ZERO_ADDRESS!: T['Address'] + + public abstract Signer: new (signer: any) => AbstractSigner + public abstract TypedDataVersionedSigner: new (signer: any, version: any) => AbstractSigner + public abstract TypedDataV3Signer: new (signer: any) => AbstractSigner + public abstract IntChainIdTypedDataV4Signer: new (signer: any) => AbstractSigner + // Core functionality abstract getChainId(): Promise abstract getAddress(): Promise + + // Signing operations + abstract signMessage(message: string | Uint8Array): Promise + abstract signTypedData( + domain: T['TypedDataDomain'], + types: T['TypedDataTypes'], + value: Record, + ): Promise + + // reading functionality + abstract getStorageAt(address: T['Address'], slot: unknown): Promise } diff --git a/packages/common/src/adapters/AbstractSigner.ts b/packages/common/src/adapters/AbstractSigner.ts new file mode 100644 index 000000000..52f375117 --- /dev/null +++ b/packages/common/src/adapters/AbstractSigner.ts @@ -0,0 +1,13 @@ +import { TransactionParams, TransactionResponse } from './types' + +/** + * AbstractSignerAdapter defines the minimal interface that all signer-specific + * implementations must follow, focusing only on signing operations. + */ +export abstract class AbstractSigner { + abstract getAddress(): Promise + abstract signMessage(message: string | Uint8Array): Promise + abstract signTransaction(txParams: TransactionParams): Promise + abstract signTypedData(domain: unknown, types: unknown, value: Record): Promise + abstract sendTransaction(txParams: TransactionParams): Promise +} diff --git a/packages/common/src/adapters/index.ts b/packages/common/src/adapters/index.ts index cbc2e91cf..a10fcefa5 100644 --- a/packages/common/src/adapters/index.ts +++ b/packages/common/src/adapters/index.ts @@ -1,3 +1,4 @@ export * from './AbstractProviderAdapter' export * from './types' export * from './context' +export * from './AbstractSigner' diff --git a/packages/common/src/adapters/types/AdapterUtils.ts b/packages/common/src/adapters/types/AdapterUtils.ts index f7627cda8..907c501c4 100644 --- a/packages/common/src/adapters/types/AdapterUtils.ts +++ b/packages/common/src/adapters/types/AdapterUtils.ts @@ -1,4 +1,14 @@ -import { Bytes } from '.' +import { + Bytes, + Abi, + TypedDataDomain, + BigIntish, + SignatureLike, + ContractInterface, + TypedDataTypes, + Address, + Provider, +} from '.' /** * Abstract class defining the interface for adapter utilities @@ -10,13 +20,172 @@ export abstract class AdapterUtils { */ abstract toUtf8Bytes(text: string): Uint8Array + /** + * Encodes deployment arguments for a contract + */ + abstract encodeDeploy(encodeDeployArgs: unknown, abi: Abi): string + + /** + * Computes a CREATE2 address + */ + abstract getCreate2Address(from: string, salt: Bytes, initCodeHash: Bytes): string + + /** + * Concatenates multiple Bytes values + */ + abstract hexConcat(items: ReadonlyArray): string + + /** + * Formats a string as a bytes32 string + */ + abstract formatBytes32String(text: string): string + /** * Computes the keccak256 hash of data */ abstract keccak256(data: Bytes): string + /** + * Pads a value with zeros to the specified length + */ + abstract hexZeroPad(value: Bytes, length: number): string + /** * Converts a hex string to a Uint8Array */ abstract arrayify(hexString: string): Uint8Array + + /** + * Converts a Uint8Array to a hex string + */ + abstract hexlify(value: Bytes): string + + /** + * Packs values according to Solidity's packed encoding rules + */ + abstract solidityPack(types: string[], values: any[]): string + + /** + * Hashes EIP-712 typed data + */ + abstract hashTypedData(domain: TypedDataDomain, types: TypedDataTypes, data: Record): string + + /** + * Returns the checksum address of an Ethereum address + */ + abstract getChecksumAddress(address: string): string + + /** + * Encodes values using ABI encoding + */ + abstract encodeAbi(types: unknown[], values: unknown[]): Bytes + + /** + * Decodes ABI encoded data + */ + abstract decodeAbi(types: string[], data: Bytes): unknown[] + + /** + * Computes the id (keccak256 hash) of a string + */ + abstract id(text: string): Bytes + + /** + * Converts a value to a BigIntish + */ + abstract toBigIntish(value: string | number | BigIntish): BigIntish + + /** + * Creates a new BigIntish from a number or string + */ + abstract newBigintish(value: number | string): BigIntish + + /** + * Slices a portion of hex data + */ + abstract hexDataSlice(data: Bytes, offset: number, endOffset?: number): Bytes + + /** + * Joins the components of a signature into a single string + */ + abstract joinSignature(signature: { r: string; s: string; v: number }): string + + /** + * Splits a signature into its components + */ + abstract splitSignature(signature: Bytes): { r: string; s: string; v: number } + + /** + * Verifies a signed message + */ + abstract verifyMessage(message: string | Uint8Array, signature: SignatureLike): string | Promise + + /** + * Verifies a signed typed data structure + */ + abstract verifyTypedData( + domain: TypedDataDomain, + types: Record>, + value: Record, + signature: SignatureLike, + ): string | Promise + + /** + * Encodes a function call + */ + abstract encodeFunction( + abi: Array<{ name: string; inputs: Array<{ type: string }> }>, + functionName: string, + args: unknown[], + ): Bytes + + /** + * Converts a BigIntish to a number + */ + abstract toNumber(value: BigIntish): number + + /** + * Computes the keccak256 hash of values according to Solidity's packed encoding rules + */ + abstract solidityKeccak256(types: string[], values: unknown[]): unknown + + /** + * Creates an Interface instance from an ABI + */ + abstract createInterface(abi: unknown): ContractInterface + + /** + * Grants the required roles to the specified Vault relayer. + * Framework-agnostic method that delegates contract instantiation and calling to the adapter. + * + * @param authorizerAddress The address of the Vault authorizer contract that manages access. + * @param authorizerAbi The ABI of the authorizer contract. + * @param vaultAddress The address to the Vault. + * @param vaultRelayerAddress The address to the GPv2 Vault relayer contract. + * @param contractCall Function to execute the contract call (provided by the adapter). + */ + abstract grantRequiredRoles( + authorizerAddress: string, + authorizerAbi: Abi, + vaultAddress: string, + vaultRelayerAddress: string, + contractCall: (address: string, abi: Abi, functionName: string, args: unknown[]) => Promise, + ): Promise + + /** + * A generic method used to obfuscate the complexity of reading storage + * of any StorageAccessible contract. That is, this method does the work of + * 1. Encoding the function call on the reader + * 2. Simulates delegatecall of storage read with encoded calldata + * 3. Decodes the returned bytes from the storage read into expected return value. + */ + abstract readStorage( + baseAddress: Address, + baseAbi: Abi, + readerAddress: Address, + readerAbi: Abi, + provider: Provider, + method: string, + parameters: unknown[], + ): Promise } diff --git a/packages/common/src/adapters/types/index.ts b/packages/common/src/adapters/types/index.ts index 449e66e80..c6fbe80af 100644 --- a/packages/common/src/adapters/types/index.ts +++ b/packages/common/src/adapters/types/index.ts @@ -1,7 +1,73 @@ export * from './AdapterUtils' +export type Abi = unknown + +export type Address = string + +export type BigIntish = unknown + export type Bytes = unknown +export type ContractInterface = unknown + +export type TypedDataDomain = unknown + +export type TypedDataTypes = unknown + +export interface Provider { + // eslint-disable-next-line + getStorageAt?: (...args: any[]) => unknown + getStorage?: (...args: any[]) => unknown +} + +export type Signer = unknown + +export type SignatureLike = unknown + export type AdapterTypes = { + Abi: Abi + Address: Address + BigIntish: BigIntish Bytes: Bytes + ContractInterface: ContractInterface + Provider: Provider + Signer: Signer + SignatureLike: SignatureLike + TypedDataDomain: TypedDataDomain + TypedDataTypes: TypedDataTypes +} + +/** + * Standardized transaction response + */ +export interface TransactionResponse { + hash: string + wait(confirmations?: number): Promise +} + +/** + * Standardized transaction receipt + */ +export interface TransactionReceipt { + transactionHash: string + blockNumber: number + blockHash: string + status?: number + gasUsed: bigint + logs: Array +} + +/** + * Standard transaction parameters that work across different Ethereum libraries + */ +export interface TransactionParams { + to: string + from?: string + data?: string + value?: string | bigint + gasLimit?: string | bigint + gasPrice?: string | bigint + maxFeePerGas?: string | bigint + maxPriorityFeePerGas?: string | bigint + nonce?: number } diff --git a/packages/contracts-ts/package.json b/packages/contracts-ts/package.json index 3f5e1d122..6c1094ced 100644 --- a/packages/contracts-ts/package.json +++ b/packages/contracts-ts/package.json @@ -14,9 +14,7 @@ "build": "tsup src/index.ts --format esm,cjs --dts", "dev": "tsup src/index.ts --format esm,cjs --watch --dts", "lint": "eslint src/**/*.ts", - "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", - "test": "jest", - "test:watch": "jest --watch" + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" }, "dependencies": { "@cowprotocol/sdk-common": "workspace:*", diff --git a/packages/contracts-ts/src/ContractsTs.ts b/packages/contracts-ts/src/ContractsTs.ts new file mode 100644 index 000000000..ff95a92ff --- /dev/null +++ b/packages/contracts-ts/src/ContractsTs.ts @@ -0,0 +1,118 @@ +import { AbstractProviderAdapter, setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + hashify, + normalizeBuyTokenBalance, + ORDER_TYPE_FIELDS, + ORDER_UID_LENGTH, + timestamp, + normalizeOrder, + hashTypedData, + hashOrder, + computeOrderUid, + packOrderUidParams, + extractOrderUidParams, +} from './order' +import { deterministicDeploymentAddress } from './deploy' +import { normalizeInteraction, normalizeInteractions } from './interaction' +import { implementationAddress, ownerAddress, proxyInterface } from './proxy' +import { decodeEip1271SignatureData, encodeEip1271SignatureData, signOrder } from './sign' +import { grantRequiredRoles } from './vault' +import { + encodeSigningScheme, + decodeSigningScheme, + encodeOrderFlags, + decodeOrderFlags, + encodeTradeFlags, + decodeTradeFlags, + encodeSignatureData, + decodeSignatureOwner, + encodeTrade, + decodeOrder, + TokenRegistry, + SettlementEncoder, + InteractionStage, + FLAG_MASKS, +} from './settlement' +import { encodeSwapStep, SwapEncoder } from './swap' + +export class ContractsTs { + // Make ORDER_TYPE_FIELDS and ORDER_UID_LENGTH available + public ORDER_TYPE_FIELDS = ORDER_TYPE_FIELDS + public ORDER_UID_LENGTH = ORDER_UID_LENGTH + + /** + * Creates a new ContractsTs instance + * + * @param adapter Provider adapter implementation + */ + constructor(adapter: AbstractProviderAdapter) { + setGlobalAdapter(adapter) + } + + //deploy + deterministicDeploymentAddress = deterministicDeploymentAddress + + //interaction + normalizeInteraction = normalizeInteraction + normalizeInteractions = normalizeInteractions + + //order + timestamp = timestamp + hashify = hashify + normalizeBuyTokenBalance = normalizeBuyTokenBalance + normalizeOrder = normalizeOrder + hashTypedData = hashTypedData + hashOrder = hashOrder + computeOrderUid = computeOrderUid + packOrderUidParams = packOrderUidParams + extractOrderUidParams = extractOrderUidParams + + //proxy + implementationAddress = implementationAddress + ownerAddress = ownerAddress + proxyInterface = proxyInterface + + //sign + signOrder = signOrder + encodeEip1271SignatureData = encodeEip1271SignatureData + decodeEip1271SignatureData = decodeEip1271SignatureData + + //vault + grantRequiredRoles = grantRequiredRoles + + //settlement + encodeSigningScheme = encodeSigningScheme + decodeSigningScheme = decodeSigningScheme + encodeOrderFlags = encodeOrderFlags + decodeOrderFlags = decodeOrderFlags + encodeTradeFlags = encodeTradeFlags + decodeTradeFlags = decodeTradeFlags + encodeSignatureData = encodeSignatureData + decodeSignatureOwner = decodeSignatureOwner + encodeTrade = encodeTrade + decodeOrder = decodeOrder + TokenRegistry = TokenRegistry + SettlementEncoder = SettlementEncoder + InteractionStage = InteractionStage + FLAG_MASKS = FLAG_MASKS + + //swap + encodeSwapStep = encodeSwapStep + SwapEncoder = SwapEncoder + + /** + * Return the Gnosis Protocol v2 domain used for signing. + * @param chainId The EIP-155 chain ID. + * @param verifyingContract The address of the contract that will verify the + * signature. + * @return An EIP-712 compatible typed domain data. + */ + public static domain(chainId: number, verifyingContract: string) { + return { + name: 'Gnosis Protocol', + version: 'v2', + chainId, + verifyingContract, + } + } +} diff --git a/packages/contracts-ts/src/api.ts b/packages/contracts-ts/src/api.ts index 86098e0c9..475698f43 100644 --- a/packages/contracts-ts/src/api.ts +++ b/packages/contracts-ts/src/api.ts @@ -1,163 +1,147 @@ -import { BigNumber, BigNumberish, constants } from "ethers"; -import fetch, { RequestInit } from "node-fetch"; - -import { - normalizeOrder, - Order, - OrderKind, - Timestamp, - HashLike, - OrderBalance, -} from "./order"; -import { encodeSignatureData } from "./settlement"; -import { Signature, SigningScheme } from "./sign"; +import { normalizeOrder, Timestamp, HashLike, OrderBalance } from './order' +import { encodeSignatureData } from './settlement' +import { BigIntish, getGlobalAdapter } from '@cowprotocol/sdk-common' +import { Order, OrderKind, Signature, SigningScheme } from './types' export enum Environment { Dev, Prod, } -export const LIMIT_CONCURRENT_REQUESTS = 5; +export const LIMIT_CONCURRENT_REQUESTS = 5 export function apiUrl(environment: Environment, network: string): string { switch (environment) { case Environment.Dev: - return `https://barn.api.cow.fi/${network}`; + return `https://barn.api.cow.fi/${network}` case Environment.Prod: - return `https://api.cow.fi/${network}`; + return `https://api.cow.fi/${network}` default: - throw new Error("Invalid environment"); + throw new Error('Invalid environment') } } export interface ApiCall { - baseUrl: string; + baseUrl: string } export interface EstimateTradeAmountQuery { - sellToken: string; - buyToken: string; - kind: OrderKind; - amount: BigNumberish; + sellToken: string + buyToken: string + kind: OrderKind + amount: BigIntish } export interface PlaceOrderQuery { - order: Order; - signature: Signature; - from?: string; + order: Order + signature: Signature + from?: string } export interface GetExecutedSellAmountQuery { - uid: string; + uid: string } export type SellAmountBeforeFee = { - kind: OrderKind.SELL; - sellAmountBeforeFee: BigNumberish; -}; + kind: OrderKind.SELL + sellAmountBeforeFee: BigIntish +} export type SellAmountAfterFee = { - kind: OrderKind.SELL; - sellAmountAfterFee: BigNumberish; -}; + kind: OrderKind.SELL + sellAmountAfterFee: BigIntish +} export type BuyAmountAfterFee = { - kind: OrderKind.BUY; - buyAmountAfterFee: BigNumberish; -}; + kind: OrderKind.BUY + buyAmountAfterFee: BigIntish +} -export type QuoteQuery = CommonQuoteQuery & - (SellAmountBeforeFee | SellAmountAfterFee | BuyAmountAfterFee); +export type QuoteQuery = CommonQuoteQuery & (SellAmountBeforeFee | SellAmountAfterFee | BuyAmountAfterFee) export interface CommonQuoteQuery { - sellToken: string; - buyToken: string; - receiver?: string; - validTo?: Timestamp; - appData?: HashLike; - partiallyFillable?: boolean; - sellTokenBalance?: OrderBalance; - buyTokenBalance?: OrderBalance; - from: string; - priceQuality?: QuotePriceQuality; + sellToken: string + buyToken: string + receiver?: string + validTo?: Timestamp + appData?: HashLike + partiallyFillable?: boolean + sellTokenBalance?: OrderBalance + buyTokenBalance?: OrderBalance + from: string + priceQuality?: QuotePriceQuality } export enum QuotePriceQuality { - FAST = "fast", - OPTIMAL = "optimal", + FAST = 'fast', + OPTIMAL = 'optimal', } export interface OrderDetailResponse { // Other fields are omitted until needed - executedSellAmount: string; + executedSellAmount: string } export interface GetQuoteResponse { - quote: Order; - from: string; - expiration: Timestamp; - id?: number; + quote: Order + from: string + expiration: Timestamp + id?: number } export interface ApiError { - errorType: string; - description: string; + errorType: string + description: string } export interface CallError extends Error { - apiError?: ApiError; + apiError?: ApiError } export enum GetQuoteErrorType { - SellAmountDoesNotCoverFee = "SellAmountDoesNotCoverFee", - NoLiquidity = "NoLiquidity", + SellAmountDoesNotCoverFee = 'SellAmountDoesNotCoverFee', + NoLiquidity = 'NoLiquidity', // other errors are added when necessary } function apiKind(kind: OrderKind): string { switch (kind) { case OrderKind.SELL: - return "sell"; + return 'sell' case OrderKind.BUY: - return "buy"; + return 'buy' default: - throw new Error(`Unsupported kind ${kind}`); + throw new Error(`Unsupported kind ${kind}`) } } function apiSigningScheme(scheme: SigningScheme): string { switch (scheme) { case SigningScheme.EIP712: - return "eip712"; + return 'eip712' case SigningScheme.ETHSIGN: - return "ethsign"; + return 'ethsign' case SigningScheme.EIP1271: - return "eip1271"; + return 'eip1271' case SigningScheme.PRESIGN: - return "presign"; + return 'presign' default: - throw new Error(`Unsupported signing scheme ${scheme}`); + throw new Error(`Unsupported signing scheme ${scheme}`) } } -async function call( - route: string, - baseUrl: string, - init?: RequestInit, -): Promise { - const url = `${baseUrl}/api/v1/${route}`; - const response = await fetch(url, init); - const body = await response.text(); +async function call(route: string, baseUrl: string, init?: RequestInit): Promise { + const url = `${baseUrl}/api/v1/${route}` + const response = await fetch(url, init) + const body = await response.text() if (!response.ok) { const error: CallError = new Error( - `Calling "${url} ${JSON.stringify(init)} failed with ${ - response.status - }: ${body}`, - ); + `Calling "${url} ${JSON.stringify(init)} failed with ${response.status}: ${body}`, + ) try { - error.apiError = JSON.parse(body); + error.apiError = JSON.parse(body) } catch { // no api error } - throw error; + throw error } - return JSON.parse(body); + return JSON.parse(body) } async function estimateTradeAmount({ @@ -166,7 +150,7 @@ async function estimateTradeAmount({ kind, amount, baseUrl, -}: EstimateTradeAmountQuery & ApiCall): Promise { +}: EstimateTradeAmountQuery & ApiCall): Promise { const side: BuyAmountAfterFee | SellAmountAfterFee = kind == OrderKind.SELL ? { @@ -176,46 +160,41 @@ async function estimateTradeAmount({ : { kind: OrderKind.BUY, buyAmountAfterFee: amount, - }; + } const { quote } = await getQuote( { baseUrl }, { - from: constants.AddressZero, + from: '0x0000000000000000000000000000000000000000', sellToken, buyToken, priceQuality: QuotePriceQuality.FAST, ...side, }, - ); + ) // The services return the quote token used for the price. The quote token // is checked to make sure that the returned price meets our expectations. if (quote.buyToken.toLowerCase() !== buyToken.toLowerCase()) { throw new Error( `Price returned for sell token ${sellToken} uses an incorrect quote token (${quote.buyToken.toLowerCase()} instead of ${buyToken.toLowerCase()})`, - ); + ) } - const estimatedAmount = - kind == OrderKind.SELL ? quote.buyAmount : quote.sellAmount; - return BigNumber.from(estimatedAmount); + const estimatedAmount = kind == OrderKind.SELL ? quote.buyAmount : quote.sellAmount + return getGlobalAdapter().utils.toBigIntish(estimatedAmount) } -async function placeOrder({ - order, - signature, - baseUrl, - from, -}: PlaceOrderQuery & ApiCall): Promise { - const normalizedOrder = normalizeOrder(order); - return await call("orders", baseUrl, { - method: "post", +async function placeOrder({ order, signature, baseUrl, from }: PlaceOrderQuery & ApiCall): Promise { + const normalizedOrder = normalizeOrder(order) + const adapter = getGlobalAdapter() + return await call('orders', baseUrl, { + method: 'post', body: JSON.stringify({ sellToken: normalizedOrder.sellToken, buyToken: normalizedOrder.buyToken, - sellAmount: BigNumber.from(normalizedOrder.sellAmount).toString(), - buyAmount: BigNumber.from(normalizedOrder.buyAmount).toString(), + sellAmount: String(adapter.utils.toBigIntish(normalizedOrder.sellAmount)), + buyAmount: String(adapter.utils.toBigIntish(normalizedOrder.buyAmount)), validTo: normalizedOrder.validTo, appData: normalizedOrder.appData, - feeAmount: BigNumber.from(normalizedOrder.feeAmount).toString(), + feeAmount: String(adapter.utils.toBigIntish(normalizedOrder.feeAmount)), kind: apiKind(order.kind), partiallyFillable: normalizedOrder.partiallyFillable, signature: encodeSignatureData(signature), @@ -223,78 +202,62 @@ async function placeOrder({ receiver: normalizedOrder.receiver, from, }), - headers: { "Content-Type": "application/json" }, - }); + headers: { 'Content-Type': 'application/json' }, + }) } -async function getExecutedSellAmount({ - uid, - baseUrl, -}: GetExecutedSellAmountQuery & ApiCall): Promise { - const response: OrderDetailResponse = await call(`orders/${uid}`, baseUrl); - return BigNumber.from(response.executedSellAmount); +async function getExecutedSellAmount({ uid, baseUrl }: GetExecutedSellAmountQuery & ApiCall): Promise { + const response: OrderDetailResponse = await call(`orders/${uid}`, baseUrl) + return getGlobalAdapter().utils.toBigIntish(response.executedSellAmount) } -async function getQuote( - { baseUrl }: ApiCall, - quote: QuoteQuery, -): Promise { +async function getQuote({ baseUrl }: ApiCall, quote: QuoteQuery): Promise { // Convert BigNumber into JSON strings (native serialisation is a hex object) if ((quote).sellAmountBeforeFee) { - (quote).sellAmountBeforeFee = (( - quote - )).sellAmountBeforeFee.toString(); + ;(quote).sellAmountBeforeFee = String((quote).sellAmountBeforeFee) } if ((quote).sellAmountAfterFee) { - (quote).sellAmountAfterFee = (( - quote - )).sellAmountAfterFee.toString(); + ;(quote).sellAmountAfterFee = String((quote).sellAmountAfterFee) } if ((quote).buyAmountAfterFee) { - (quote).buyAmountAfterFee = (( - quote - )).buyAmountAfterFee.toString(); + ;(quote).buyAmountAfterFee = String((quote).buyAmountAfterFee) } - return call("quote", baseUrl, { - method: "post", - headers: { "Content-Type": "application/json" }, + return call('quote', baseUrl, { + method: 'post', + headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(quote), - }); + }) } export class Api { - network: string; - baseUrl: string; + network: string + baseUrl: string constructor(network: string, baseUrlOrEnv: string | Environment) { - this.network = network; - let baseUrl; - if (typeof baseUrlOrEnv === "string") { - baseUrl = baseUrlOrEnv; + this.network = network + let baseUrl + if (typeof baseUrlOrEnv === 'string') { + baseUrl = baseUrlOrEnv } else { - baseUrl = apiUrl(baseUrlOrEnv, network); + baseUrl = apiUrl(baseUrlOrEnv, network) } - this.baseUrl = baseUrl; + this.baseUrl = baseUrl } private apiCallParams() { - return { network: this.network, baseUrl: this.baseUrl }; + return { network: this.network, baseUrl: this.baseUrl } } - async estimateTradeAmount( - query: EstimateTradeAmountQuery, - ): Promise { - return estimateTradeAmount({ ...this.apiCallParams(), ...query }); + async estimateTradeAmount(query: EstimateTradeAmountQuery): Promise { + return estimateTradeAmount({ ...this.apiCallParams(), ...query }) } async placeOrder(query: PlaceOrderQuery): Promise { - return placeOrder({ ...this.apiCallParams(), ...query }); + return placeOrder({ ...this.apiCallParams(), ...query }) } - async getExecutedSellAmount( - query: GetExecutedSellAmountQuery, - ): Promise { - return getExecutedSellAmount({ ...this.apiCallParams(), ...query }); + async getExecutedSellAmount(query: GetExecutedSellAmountQuery): Promise { + return getExecutedSellAmount({ ...this.apiCallParams(), ...query }) } async getQuote(query: QuoteQuery): Promise { - return getQuote(this.apiCallParams(), query); + return getQuote(this.apiCallParams(), query) } } diff --git a/packages/contracts-ts/src/deploy.ts b/packages/contracts-ts/src/deploy.ts index c9f932407..877297c9c 100644 --- a/packages/contracts-ts/src/deploy.ts +++ b/packages/contracts-ts/src/deploy.ts @@ -1,9 +1,10 @@ -import { utils } from "ethers"; +import { getGlobalAdapter, type Abi, type Address } from '@cowprotocol/sdk-common' /** * The salt used when deterministically deploying smart contracts. + * SALT = ethers.utils.formatBytes32String("Mattresses in Berlin!"); */ -export const SALT = utils.formatBytes32String("Mattresses in Berlin!"); +export const SALT = '0x4d61747472657373657320696e204265726c696e210000000000000000000000' /** * The contract used to deploy contracts deterministically with CREATE2. @@ -12,59 +13,52 @@ export const SALT = utils.formatBytes32String("Mattresses in Berlin!"); * * https://github.com/Arachnid/deterministic-deployment-proxy */ -export const DEPLOYER_CONTRACT = "0x4e59b44847b379578588920ca78fbf26c0b4956c"; +export const DEPLOYER_CONTRACT = '0x4e59b44847b379578588920ca78fbf26c0b4956c' /** * Dictionary containing all deployed contract names. */ export const CONTRACT_NAMES = { - authenticator: "GPv2AllowListAuthentication", - settlement: "GPv2Settlement", - tradeSimulator: "GPv2TradeSimulator", -} as const; + authenticator: 'GPv2AllowListAuthentication', + settlement: 'GPv2Settlement', + tradeSimulator: 'GPv2TradeSimulator', +} as const /** * The name of a deployed contract. */ -export type ContractName = (typeof CONTRACT_NAMES)[keyof typeof CONTRACT_NAMES]; +export type ContractName = (typeof CONTRACT_NAMES)[keyof typeof CONTRACT_NAMES] /** * The deployment args for a contract. */ -export type DeploymentArguments = - T extends typeof CONTRACT_NAMES.authenticator - ? never - : T extends typeof CONTRACT_NAMES.settlement +export type DeploymentArguments = T extends typeof CONTRACT_NAMES.authenticator + ? never + : T extends typeof CONTRACT_NAMES.settlement ? [string, string] : T extends typeof CONTRACT_NAMES.tradeSimulator - ? [] - : unknown[]; - -/** - * Allowed ABI definition types by Ethers.js. - */ -export type Abi = ConstructorParameters[0]; + ? [] + : unknown[] /** * Artifact information important for computing deterministic deployments. */ export interface ArtifactDeployment { - abi: Abi; - bytecode: string; + abi: Abi + bytecode: string } /** * An artifact with a contract name matching one of the deterministically * deployed contracts. */ -export interface NamedArtifactDeployment - extends ArtifactDeployment { - contractName: C; +export interface NamedArtifactDeployment extends ArtifactDeployment { + contractName: C } -type MaybeNamedArtifactArtifactDeployment = C extends ContractName +export type MaybeNamedArtifactArtifactDeployment = C extends ContractName ? NamedArtifactDeployment - : ArtifactDeployment; + : ArtifactDeployment /** * Computes the deterministic address at which the contract will be deployed. @@ -75,18 +69,12 @@ type MaybeNamedArtifactArtifactDeployment = C extends ContractName * @returns The address that is expected to store the deployed code. */ export function deterministicDeploymentAddress( - { abi, bytecode }: MaybeNamedArtifactArtifactDeployment, + { bytecode }: MaybeNamedArtifactArtifactDeployment, deploymentArguments: DeploymentArguments, -): string { - const contractInterface = new utils.Interface(abi); - const deployData = utils.hexConcat([ - bytecode, - contractInterface.encodeDeploy(deploymentArguments), - ]); +): Address { + const adapter = getGlobalAdapter() + + const bytecodeHash = adapter.utils.keccak256(adapter.utils.hexConcat([bytecode, ...deploymentArguments])) - return utils.getCreate2Address( - DEPLOYER_CONTRACT, - SALT, - utils.keccak256(deployData), - ); + return adapter.utils.getCreate2Address(DEPLOYER_CONTRACT, SALT, bytecodeHash) } diff --git a/packages/contracts-ts/src/index.ts b/packages/contracts-ts/src/index.ts index 8a4c7795b..79058f6f8 100644 --- a/packages/contracts-ts/src/index.ts +++ b/packages/contracts-ts/src/index.ts @@ -1,33 +1,28 @@ -import { TypedDataDomain } from "./types/ethers"; - /** - * Return the Gnosis Protocol v2 domain used for signing. - * @param chainId The EIP-155 chain ID. - * @param verifyingContract The address of the contract that will verify the - * signature. - * @return An EIP-712 compatible typed domain data. + * TypeScript contract bindings for CoW Protocol SDK + * @module @cowprotocol/sdk-contracts-ts */ -export function domain( - chainId: number, - verifyingContract: string, -): TypedDataDomain { - return { - name: "Gnosis Protocol", - version: "v2", - chainId, - verifyingContract, - }; -} -export * from "./api"; -export * from "./deploy"; -export * from "./interaction"; -export * from "./order"; -export * from "./proxy"; -export * from "./reader"; -export * from "./settlement"; -export * from "./sign"; -export * from "./signers"; -export * from "./swap"; -export * from "./vault"; -export * from "./types/ethers"; +export * from './ContractsTs' +export * from './deploy' +export * from './interaction' +export * from './order' +export * from './proxy' +export * from './settlement' +export * from './sign' +export * from './swap' +export * from './vault' +export * from './api' +export * from './reader' +export * from './signers' + +export { SigningScheme as ContractsSigningScheme, OrderKind as ContractsOrderKind } from './types' + +export type { + EcdsaSigningScheme as ContractsEcdsaSigningScheme, + Signature as ContractsSignature, + EcdsaSignature as ContractsEcdsaSignature, + Trade as ContractsTrade, + Order as ContractsOrder, + OrderCancellations as ContractsOrderCancellations, +} from './types' diff --git a/packages/contracts-ts/src/interaction.ts b/packages/contracts-ts/src/interaction.ts index d352c5b4c..7b52370ed 100644 --- a/packages/contracts-ts/src/interaction.ts +++ b/packages/contracts-ts/src/interaction.ts @@ -1,4 +1,4 @@ -import type { BigNumberish, BytesLike } from "ethers"; +import { BigIntish, Bytes } from '@cowprotocol/sdk-common' /** * Gnosis Protocol v2 interaction data. @@ -7,19 +7,18 @@ export interface Interaction { /** * Address of the smart contract to be called in this interaction. */ - target: string; + target: string /** * Call value in wei for the interaction, allowing Ether to be sent. */ - value: BigNumberish; + value: BigIntish /** * Call data used in the interaction with a smart contract. */ - callData: BytesLike; + callData: Bytes } -export type InteractionLike = Pick & - Partial; +export type InteractionLike = Pick & Partial /** * Normalizes interaction data so that it is ready to be be ABI encoded. @@ -27,14 +26,12 @@ export type InteractionLike = Pick & * @param interaction The interaction to normalize. * @return The normalized interaction. */ -export function normalizeInteraction( - interaction: InteractionLike, -): Interaction { +export function normalizeInteraction(interaction: InteractionLike): Interaction { return { value: 0, - callData: "0x", + callData: '0x', ...interaction, - }; + } } /** @@ -44,8 +41,6 @@ export function normalizeInteraction( * @param interactions The interactions to normalize. * @return The normalized interactions. */ -export function normalizeInteractions( - interactions: InteractionLike[], -): Interaction[] { - return interactions.map(normalizeInteraction); +export function normalizeInteractions(interactions: InteractionLike[]): Interaction[] { + return interactions.map(normalizeInteraction) } diff --git a/packages/contracts-ts/src/order.ts b/packages/contracts-ts/src/order.ts index 6530570be..a0a795a99 100644 --- a/packages/contracts-ts/src/order.ts +++ b/packages/contracts-ts/src/order.ts @@ -1,86 +1,5 @@ -import { BigNumberish, BytesLike, ethers } from "ethers"; - -import { TypedDataDomain, TypedDataTypes } from "./types/ethers"; - -/** - * Gnosis Protocol v2 order data. - */ -export interface Order { - /** - * Sell token address. - */ - sellToken: string; - /** - * Buy token address. - */ - buyToken: string; - /** - * An optional address to receive the proceeds of the trade instead of the - * owner (i.e. the order signer). - */ - receiver?: string; - /** - * The order sell amount. - * - * For fill or kill sell orders, this amount represents the exact sell amount - * that will be executed in the trade. For fill or kill buy orders, this - * amount represents the maximum sell amount that can be executed. For partial - * fill orders, this represents a component of the limit price fraction. - */ - sellAmount: BigNumberish; - /** - * The order buy amount. - * - * For fill or kill sell orders, this amount represents the minimum buy amount - * that can be executed in the trade. For fill or kill buy orders, this amount - * represents the exact buy amount that will be executed. For partial fill - * orders, this represents a component of the limit price fraction. - */ - buyAmount: BigNumberish; - /** - * The timestamp this order is valid until - */ - validTo: Timestamp; - /** - * Arbitrary application specific data that can be added to an order. This can - * also be used to ensure uniqueness between two orders with otherwise the - * exact same parameters. - */ - appData: HashLike; - /** - * Fee to give to the protocol. - */ - feeAmount: BigNumberish; - /** - * The order kind. - */ - kind: OrderKind; - /** - * Specifies whether or not the order is partially fillable. - */ - partiallyFillable: boolean; - /** - * Specifies how the sell token balance will be withdrawn. It can either be - * taken using ERC20 token allowances made directly to the Vault relayer - * (default) or using Balancer Vault internal or external balances. - */ - sellTokenBalance?: OrderBalance; - /** - * Specifies how the buy token balance will be paid. It can either be paid - * directly in ERC20 tokens (default) in Balancer Vault internal balances. - */ - buyTokenBalance?: OrderBalance; -} - -/** - * Gnosis Protocol v2 order cancellation data. - */ -export interface OrderCancellations { - /** - * The unique identifier of the order to be cancelled. - */ - orderUids: BytesLike[]; -} +import { Bytes, getGlobalAdapter, TypedDataDomain, TypedDataTypes } from '@cowprotocol/sdk-common' +import { Order } from './types' /** * Marker address to indicate that an order is buying Ether. @@ -89,39 +8,22 @@ export interface OrderCancellations { * be treated as a ERC20 token address in the `sellToken` position, causing the * settlement to revert. */ -export const BUY_ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; +export const BUY_ETH_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' /** * Gnosis Protocol v2 order flags. */ -export type OrderFlags = Pick< - Order, - "kind" | "partiallyFillable" | "sellTokenBalance" | "buyTokenBalance" ->; +export type OrderFlags = Pick /** * A timestamp value. */ -export type Timestamp = number | Date; +export type Timestamp = number | Date /** * A hash-like app data value. */ -export type HashLike = BytesLike | number; - -/** - * Order kind. - */ -export enum OrderKind { - /** - * A sell order. - */ - SELL = "sell", - /** - * A buy order. - */ - BUY = "buy", -} +export type HashLike = Bytes | number /** * Order balance configuration. @@ -130,7 +32,7 @@ export enum OrderBalance { /** * Use ERC20 token balances. */ - ERC20 = "erc20", + ERC20 = 'erc20', /** * Use Balancer Vault external balances. * @@ -138,46 +40,45 @@ export enum OrderBalance { * to re-use Vault ERC20 allowances. When specified for the buy balance, it * will be treated as {@link OrderBalance.ERC20}. */ - EXTERNAL = "external", + EXTERNAL = 'external', /** * Use Balancer Vault internal balances. */ - INTERNAL = "internal", + INTERNAL = 'internal', } /** * The EIP-712 type fields definition for a Gnosis Protocol v2 order. */ export const ORDER_TYPE_FIELDS = [ - { name: "sellToken", type: "address" }, - { name: "buyToken", type: "address" }, - { name: "receiver", type: "address" }, - { name: "sellAmount", type: "uint256" }, - { name: "buyAmount", type: "uint256" }, - { name: "validTo", type: "uint32" }, - { name: "appData", type: "bytes32" }, - { name: "feeAmount", type: "uint256" }, - { name: "kind", type: "string" }, - { name: "partiallyFillable", type: "bool" }, - { name: "sellTokenBalance", type: "string" }, - { name: "buyTokenBalance", type: "string" }, -]; - -/** - * The EIP-712 type fields definition for a Gnosis Protocol v2 order. - */ -export const CANCELLATIONS_TYPE_FIELDS = [ - { name: "orderUids", type: "bytes[]" }, -]; + { name: 'sellToken', type: 'address' }, + { name: 'buyToken', type: 'address' }, + { name: 'receiver', type: 'address' }, + { name: 'sellAmount', type: 'uint256' }, + { name: 'buyAmount', type: 'uint256' }, + { name: 'validTo', type: 'uint32' }, + { name: 'appData', type: 'bytes32' }, + { name: 'feeAmount', type: 'uint256' }, + { name: 'kind', type: 'string' }, + { name: 'partiallyFillable', type: 'bool' }, + { name: 'sellTokenBalance', type: 'string' }, + { name: 'buyTokenBalance', type: 'string' }, +] /** * The EIP-712 type hash for a Gnosis Protocol v2 order. - */ -export const ORDER_TYPE_HASH = ethers.utils.id( + * ethersV5.utils.id( `Order(${ORDER_TYPE_FIELDS.map(({ name, type }) => `${type} ${name}`).join( ",", )})`, ); + */ +export const ORDER_TYPE_HASH = '0xd5a25ba2e97094ad7d83dc28a6572da797d6b3e7fc6663bd93efb789fc17e489' + +/** + * The EIP-712 type fields definition for a Gnosis Protocol v2 order. + */ +export const CANCELLATIONS_TYPE_FIELDS = [{ name: 'orderUids', type: 'bytes[]' }] /** * Normalizes a timestamp value to a Unix timestamp. @@ -185,7 +86,7 @@ export const ORDER_TYPE_HASH = ethers.utils.id( * @return Unix timestamp or number of seconds since the Unix Epoch. */ export function timestamp(t: Timestamp): number { - return typeof t === "number" ? t : ~~(t.getTime() / 1000); + return typeof t === 'number' ? t : ~~(t.getTime() / 1000) } /** @@ -194,9 +95,7 @@ export function timestamp(t: Timestamp): number { * @returns A 32-byte hash encoded as a hex-string. */ export function hashify(h: HashLike): string { - return typeof h === "number" - ? `0x${h.toString(16).padStart(64, "0")}` - : ethers.utils.hexZeroPad(h, 32); + return typeof h === 'number' ? `0x${h.toString(16).padStart(64, '0')}` : getGlobalAdapter().utils.hexZeroPad(h, 32) } /** @@ -214,28 +113,25 @@ export function normalizeBuyTokenBalance( case undefined: case OrderBalance.ERC20: case OrderBalance.EXTERNAL: - return OrderBalance.ERC20; + return OrderBalance.ERC20 case OrderBalance.INTERNAL: - return OrderBalance.INTERNAL; + return OrderBalance.INTERNAL default: - throw new Error(`invalid order balance ${balance}`); + throw new Error(`invalid order balance ${balance}`) } } /** * Normalized representation of an {@link Order} for EIP-712 operations. */ -export type NormalizedOrder = Omit< - Order, - "validTo" | "appData" | "kind" | "sellTokenBalance" | "buyTokenBalance" -> & { - receiver: string; - validTo: number; - appData: string; - kind: "sell" | "buy"; - sellTokenBalance: "erc20" | "external" | "internal"; - buyTokenBalance: "erc20" | "internal"; -}; +export type NormalizedOrder = Omit & { + receiver: string + validTo: number + appData: string + kind: 'sell' | 'buy' + sellTokenBalance: 'erc20' | 'external' | 'internal' + buyTokenBalance: 'erc20' | 'internal' +} /** * Normalizes an order for hashing and signing, so that it can be used with @@ -244,19 +140,20 @@ export type NormalizedOrder = Omit< * @returns A 32-byte hash encoded as a hex-string. */ export function normalizeOrder(order: Order): NormalizedOrder { - if (order.receiver === ethers.constants.AddressZero) { - throw new Error("receiver cannot be address(0)"); + const adapter = getGlobalAdapter() + if (order.receiver === adapter.ZERO_ADDRESS) { + throw new Error('receiver cannot be address(0)') } const normalizedOrder = { ...order, sellTokenBalance: order.sellTokenBalance ?? OrderBalance.ERC20, - receiver: order.receiver ?? ethers.constants.AddressZero, + receiver: order.receiver ?? adapter.ZERO_ADDRESS, validTo: timestamp(order.validTo), appData: hashify(order.appData), buyTokenBalance: normalizeBuyTokenBalance(order.buyTokenBalance), - }; - return normalizedOrder; + } + return normalizedOrder } /** @@ -266,12 +163,8 @@ export function normalizeOrder(order: Order): NormalizedOrder { * @param types The order to compute the digest for. * @return Hex-encoded 32-byte order digest. */ -export function hashTypedData( - domain: TypedDataDomain, - types: TypedDataTypes, - data: Record, -): string { - return ethers.utils._TypedDataEncoder.hash(domain, types, data); +export function hashTypedData(domain: TypedDataDomain, types: TypedDataTypes, data: Record): string { + return getGlobalAdapter().utils.hashTypedData(domain, types, data) } /** @@ -282,49 +175,13 @@ export function hashTypedData( * @return Hex-encoded 32-byte order digest. */ export function hashOrder(domain: TypedDataDomain, order: Order): string { - return hashTypedData( - domain, - { Order: ORDER_TYPE_FIELDS }, - normalizeOrder(order), - ); -} - -/** - * Compute the 32-byte signing hash for the specified cancellation. - * - * @param domain The EIP-712 domain separator to compute the hash for. - * @param orderUid The unique identifier of the order to cancel. - * @return Hex-encoded 32-byte order digest. - */ -export function hashOrderCancellation( - domain: TypedDataDomain, - orderUid: BytesLike, -): string { - return hashOrderCancellations(domain, [orderUid]); -} - -/** - * Compute the 32-byte signing hash for the specified order cancellations. - * - * @param domain The EIP-712 domain separator to compute the hash for. - * @param orderUids The unique identifiers of the orders to cancel. - * @return Hex-encoded 32-byte order digest. - */ -export function hashOrderCancellations( - domain: TypedDataDomain, - orderUids: BytesLike[], -): string { - return hashTypedData( - domain, - { OrderCancellations: CANCELLATIONS_TYPE_FIELDS }, - { orderUids }, - ); + return hashTypedData(domain, { Order: ORDER_TYPE_FIELDS }, normalizeOrder(order)) } /** * The byte length of an order UID. */ -export const ORDER_UID_LENGTH = 56; +export const ORDER_UID_LENGTH = 56 /** * Order unique identifier parameters. @@ -333,30 +190,26 @@ export interface OrderUidParams { /** * The EIP-712 order struct hash. */ - orderDigest: string; + orderDigest: string /** * The owner of the order. */ - owner: string; + owner: string /** * The timestamp this order is valid until. */ - validTo: number | Date; + validTo: number | Date } /** * Computes the order UID for an order and the given owner. */ -export function computeOrderUid( - domain: TypedDataDomain, - order: Order, - owner: string, -): string { +export function computeOrderUid(domain: TypedDataDomain, order: Order, owner: string): string { return packOrderUidParams({ orderDigest: hashOrder(domain, order), owner, validTo: order.validTo, - }); + }) } /** @@ -367,15 +220,11 @@ export function computeOrderUid( * identifier. * @returns A string that unequivocally identifies the order of the user. */ -export function packOrderUidParams({ - orderDigest, - owner, - validTo, -}: OrderUidParams): string { - return ethers.utils.solidityPack( - ["bytes32", "address", "uint32"], +export function packOrderUidParams({ orderDigest, owner, validTo }: OrderUidParams): string { + return getGlobalAdapter().utils.solidityPack( + ['bytes32', 'address', 'uint32'], [orderDigest, owner, timestamp(validTo)], - ); + ) } /** @@ -385,17 +234,38 @@ export function packOrderUidParams({ * @returns The extracted order UID parameters. */ export function extractOrderUidParams(orderUid: string): OrderUidParams { - const bytes = ethers.utils.arrayify(orderUid); + const adapter = getGlobalAdapter() + const bytes = adapter.utils.arrayify(orderUid) if (bytes.length != ORDER_UID_LENGTH) { - throw new Error("invalid order UID length"); + throw new Error('invalid order UID length') } - const view = new DataView(bytes.buffer); + const view = new DataView(bytes.buffer) return { - orderDigest: ethers.utils.hexlify(bytes.subarray(0, 32)), - owner: ethers.utils.getAddress( - ethers.utils.hexlify(bytes.subarray(32, 52)), - ), + orderDigest: adapter.utils.hexlify(bytes.subarray(0, 32)), + owner: adapter.utils.getChecksumAddress(adapter.utils.hexlify(bytes.subarray(32, 52))), validTo: view.getUint32(52), - }; + } +} + +/** + * Compute the 32-byte signing hash for the specified cancellation. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param orderUid The unique identifier of the order to cancel. + * @return Hex-encoded 32-byte order digest. + */ +export function hashOrderCancellation(domain: TypedDataDomain, orderUid: Bytes): string { + return hashOrderCancellations(domain, [orderUid]) +} + +/** + * Compute the 32-byte signing hash for the specified order cancellations. + * + * @param domain The EIP-712 domain separator to compute the hash for. + * @param orderUids The unique identifiers of the orders to cancel. + * @return Hex-encoded 32-byte order digest. + */ +export function hashOrderCancellations(domain: TypedDataDomain, orderUids: Bytes[]): string { + return hashTypedData(domain, { OrderCancellations: CANCELLATIONS_TYPE_FIELDS }, { orderUids }) } diff --git a/packages/contracts-ts/src/proxy.ts b/packages/contracts-ts/src/proxy.ts index 55c1875e3..1ad085827 100644 --- a/packages/contracts-ts/src/proxy.ts +++ b/packages/contracts-ts/src/proxy.ts @@ -1,20 +1,7 @@ -import { BigNumber, BytesLike, Contract, ethers } from "ethers"; +import { ContractInterface, getGlobalAdapter, Provider } from '@cowprotocol/sdk-common' -/** - * Compute an EIP-1967 slot for the specified name. The proxy contract used by - * `hardhat-deploy` implements EIP-1967 (Standard Proxy Storage Slot). - * - * . - */ -function slot(name: string): BytesLike { - return ethers.utils.defaultAbiCoder.encode( - ["bytes32"], - [BigNumber.from(ethers.utils.id(name)).sub(1)], - ); -} - -const IMPLEMENTATION_STORAGE_SLOT = slot("eip1967.proxy.implementation"); -const OWNER_STORAGE_SLOT = slot("eip1967.proxy.admin"); +const IMPLEMENTATION_STORAGE_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc' +const OWNER_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103' /** * Returns the address of the implementation of an EIP-1967-compatible proxy @@ -23,15 +10,13 @@ const OWNER_STORAGE_SLOT = slot("eip1967.proxy.admin"); * @param proxy Address of the proxy contract. * @returns The address of the contract storing the proxy implementation. */ -export async function implementationAddress( - provider: ethers.providers.Provider, - proxy: string, -): Promise { - const [implementation] = ethers.utils.defaultAbiCoder.decode( - ["address"], - await provider.getStorageAt(proxy, IMPLEMENTATION_STORAGE_SLOT), - ); - return implementation; +export async function implementationAddress(provider: Provider, proxy: string): Promise { + const adapter = getGlobalAdapter() + const [implementation] = adapter.utils.decodeAbi( + ['address'], + await adapter.getStorageAt(proxy, IMPLEMENTATION_STORAGE_SLOT), + ) + return implementation as string } /** @@ -41,15 +26,15 @@ export async function implementationAddress( * @param proxy Address of the proxy contract. * @returns The address of the administrator of the proxy. */ -export async function ownerAddress( - provider: ethers.providers.Provider, - proxy: string, -): Promise { - const [owner] = ethers.utils.defaultAbiCoder.decode( - ["address"], - await provider.getStorageAt(proxy, OWNER_STORAGE_SLOT), - ); - return owner; +export async function ownerAddress(provider: Provider, proxy: string): Promise { + const data = provider?.getStorageAt + ? await provider.getStorageAt(proxy, OWNER_STORAGE_SLOT) + : provider?.getStorage + ? provider.getStorage(proxy, OWNER_STORAGE_SLOT) + : null + if (data === null) throw new Error('getStorage is not implemented') + const [owner] = getGlobalAdapter().utils.decodeAbi(['address'], data) + return owner as string } /** @@ -60,11 +45,11 @@ export async function ownerAddress( * */ export const EIP173_PROXY_ABI = [ - "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", - "function owner() view external returns(address)", - "function transferOwnership(address newOwner) external", - "function supportsInterface(bytes4 interfaceID) external view returns (bool)", -]; + 'event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)', + 'function owner() view external returns(address)', + 'function transferOwnership(address newOwner) external', + 'function supportsInterface(bytes4 interfaceID) external view returns (bool)', +] /** * Returns the proxy interface for the specified address. @@ -72,10 +57,8 @@ export const EIP173_PROXY_ABI = [ * @param contract The proxy contract to return a proxy interface for. * @returns A Ethers.js contract instance for interacting with the proxy. */ -export function proxyInterface(contract: Contract): Contract { - return new Contract( - contract.address, - EIP173_PROXY_ABI, - contract.signer ?? contract.provider, - ); +export function proxyInterface(contract: ContractInterface): ContractInterface { + const adapter = getGlobalAdapter() + //@ts-expect-error: abstract type is unknown + return adapter.getContract(contract.address, EIP173_PROXY_ABI, contract.signer ?? contract.provider) } diff --git a/packages/contracts-ts/src/reader.ts b/packages/contracts-ts/src/reader.ts index 6885bd5f8..097a46013 100644 --- a/packages/contracts-ts/src/reader.ts +++ b/packages/contracts-ts/src/reader.ts @@ -1,8 +1,8 @@ -import { BigNumber, BytesLike, Contract, ethers } from "ethers"; - -import { InteractionLike, normalizeInteractions } from "./interaction"; -import { Order, OrderBalance } from "./order"; -import { InteractionStage } from "./settlement"; +import { InteractionLike, normalizeInteractions } from './interaction' +import { OrderBalance } from './order' +import { InteractionStage } from './settlement' +import { Abi, Address, BigIntish, Bytes, getGlobalAdapter, Provider } from '@cowprotocol/sdk-common' +import { Order } from './types' /** * A generic method used to obfuscate the complexity of reading storage @@ -12,17 +12,23 @@ import { InteractionStage } from "./settlement"; * 3. Decodes the returned bytes from the storage read into expected return value. */ async function readStorage( - base: Contract, - reader: Contract, + baseAddress: Address, + baseAbi: Abi, + readerAddress: Address, + readerAbi: Abi, + provider: Provider, method: string, parameters: unknown[], ) { - const encodedCall = reader.interface.encodeFunctionData(method, parameters); - const resultBytes = await base.callStatic.simulateDelegatecall( - reader.address, - encodedCall, - ); - return reader.interface.decodeFunctionResult(method, resultBytes)[0]; + return getGlobalAdapter().utils.readStorage( + baseAddress, + baseAbi, + readerAddress, + readerAbi, + provider, + method, + parameters, + ) } /** @@ -31,15 +37,28 @@ async function readStorage( */ export class AllowListReader { constructor( - public readonly allowList: Contract, - public readonly reader: Contract, + public readonly allowListAddress: Address, + public readonly allowListAbi: Abi, + public readonly readerAddress: Address, + public readonly readerAbi: Abi, + public readonly provider: Provider, ) {} /** * Returns true if all the specified addresses are allowed solvers. */ - public areSolvers(solvers: BytesLike[]): Promise { - return readStorage(this.allowList, this.reader, "areSolvers", [solvers]); + public async areSolvers(solvers: Bytes[]): Promise { + return String( + await readStorage( + this.allowListAddress, + this.allowListAbi, + this.readerAddress, + this.readerAbi, + this.provider, + 'areSolvers', + [solvers], + ), + ) } } @@ -49,17 +68,26 @@ export class AllowListReader { */ export class SettlementReader { constructor( - public readonly settlement: Contract, - public readonly reader: Contract, + public readonly settlementAddress: Address, + public readonly settlementAbi: Abi, + public readonly readerAddress: Address, + public readonly readerAbi: Abi, + public readonly provider: Provider, ) {} /** * Read and return filled amounts for a list of orders */ - public filledAmountsForOrders(orderUids: BytesLike[]): Promise { - return readStorage(this.settlement, this.reader, "filledAmountsForOrders", [ - orderUids, - ]); + public async filledAmountsForOrders(orderUids: Bytes[]): Promise { + return await readStorage( + this.settlementAddress, + this.settlementAbi, + this.readerAddress, + this.readerAbi, + this.provider, + 'filledAmountsForOrders', + [orderUids], + ) } } @@ -68,37 +96,31 @@ export class SettlementReader { */ export type TradeSimulation = Pick< Order, - | "sellToken" - | "buyToken" - | "receiver" - | "sellAmount" - | "buyAmount" - | "sellTokenBalance" - | "buyTokenBalance" + 'sellToken' | 'buyToken' | 'receiver' | 'sellAmount' | 'buyAmount' | 'sellTokenBalance' | 'buyTokenBalance' > & { /** * The address of the owner of the trade. For an actual settlement, this would * usually this would be determinied by recovering an order signature. */ - owner: string; -}; + owner: string +} /** * Account balance changes in a trade simulation */ export interface TradeSimulationBalanceDelta { - sellTokenDelta: BigNumber; - buyTokenDelta: BigNumber; + sellTokenDelta: BigIntish + buyTokenDelta: BigIntish } /** * The result of a trade simulation. */ export interface TradeSimulationResult { - gasUsed: BigNumber; - executedBuyAmount: BigNumber; - contractBalance: TradeSimulationBalanceDelta; - ownerBalance: TradeSimulationBalanceDelta; + gasUsed: BigIntish + executedBuyAmount: BigIntish + contractBalance: TradeSimulationBalanceDelta + ownerBalance: TradeSimulationBalanceDelta } /** @@ -106,36 +128,42 @@ export interface TradeSimulationResult { */ export class TradeSimulator { constructor( - public readonly settlement: Contract, - public readonly simulator: Contract, + public readonly settlementAddress: Address, + public readonly settlementAbi: Abi, + public readonly simulatorAddress: Address, + public readonly simulatorAbi: Abi, + public readonly provider: Provider, ) {} /** * Simulates the single order settlement for an executed trade and a set of * interactions. */ - public simulateTrade( + public async simulateTrade( trade: TradeSimulation, interactions: Partial>, ): Promise { + const adapter = getGlobalAdapter() const normalizedTrade = { ...trade, - receiver: trade.receiver ?? ethers.constants.AddressZero, - sellTokenBalance: ethers.utils.id( - trade.sellTokenBalance ?? OrderBalance.ERC20, - ), - buyTokenBalance: ethers.utils.id( - trade.buyTokenBalance ?? OrderBalance.ERC20, - ), - }; + receiver: trade.receiver ?? adapter.ZERO_ADDRESS, + sellTokenBalance: adapter.utils.id(trade.sellTokenBalance ?? OrderBalance.ERC20), + buyTokenBalance: adapter.utils.id(trade.buyTokenBalance ?? OrderBalance.ERC20), + } const normalizedInteractions = [ normalizeInteractions(interactions[InteractionStage.PRE] ?? []), normalizeInteractions(interactions[InteractionStage.INTRA] ?? []), normalizeInteractions(interactions[InteractionStage.POST] ?? []), - ]; - return readStorage(this.settlement, this.simulator, "simulateTrade", [ - normalizedTrade, - normalizedInteractions, - ]); + ] + + return await readStorage( + this.settlementAddress, + this.settlementAbi, + this.simulatorAddress, + this.simulatorAbi, + this.provider, + 'simulateTrade', + [normalizedTrade, normalizedInteractions], + ) } } diff --git a/packages/contracts-ts/src/settlement.ts b/packages/contracts-ts/src/settlement.ts index ffc06541a..2a1a8514a 100644 --- a/packages/contracts-ts/src/settlement.ts +++ b/packages/contracts-ts/src/settlement.ts @@ -1,31 +1,25 @@ -import { BigNumberish, BytesLike, Signer, ethers, BigNumber } from "ethers"; - import { - Interaction, - InteractionLike, - normalizeInteraction, -} from "./interaction"; + AbstractProviderAdapter, + BigIntish, + Bytes, + getGlobalAdapter, + setGlobalAdapter, + Signer, + TypedDataDomain, +} from '@cowprotocol/sdk-common' + +import { Interaction, InteractionLike, normalizeInteraction } from './interaction' import { - NormalizedOrder, ORDER_TYPE_FIELDS, ORDER_UID_LENGTH, - Order, OrderBalance, OrderFlags, - OrderKind, hashTypedData, normalizeBuyTokenBalance, normalizeOrder, -} from "./order"; -import { - EcdsaSigningScheme, - Signature, - SigningScheme, - encodeEip1271SignatureData, - signOrder, - decodeEip1271SignatureData, -} from "./sign"; -import { TypedDataDomain } from "./types/ethers"; +} from './order' +import { encodeEip1271SignatureData, signOrder, decodeEip1271SignatureData } from './sign' +import { EcdsaSigningScheme, Order, Signature, SigningScheme, Trade, OrderKind } from './types' /** * The stage an interaction should be executed in. @@ -63,40 +57,9 @@ export interface TradeFlags extends OrderFlags { /** * The signing scheme used to encode the signature. */ - signingScheme: SigningScheme; + signingScheme: SigningScheme } -/** - * Trade parameters used in a settlement. - */ -export type Trade = TradeExecution & - Omit< - NormalizedOrder, - | "sellToken" - | "buyToken" - | "kind" - | "partiallyFillable" - | "sellTokenBalance" - | "buyTokenBalance" - > & { - /** - * The index of the sell token in the settlement. - */ - sellTokenIndex: BigNumberish; - /** - * The index of the buy token in the settlement. - */ - buyTokenIndex: BigNumberish; - /** - * Encoded order flags. - */ - flags: BigNumberish; - /** - * Signature data. - */ - signature: BytesLike; - }; - /** * Details representing how an order was executed. */ @@ -110,7 +73,7 @@ export interface TradeExecution { * - Partially fillable buy orders: the amount of buy tokens to trade. * - Fill-or-kill orders: this value is ignored. */ - executedAmount: BigNumberish; + executedAmount: BigIntish } /** @@ -125,15 +88,15 @@ export interface TradeExecution { */ export interface OrderRefunds { /** Refund storage used for order filled amount */ - filledAmounts: BytesLike[]; + filledAmounts: Bytes[] /** Refund storage used for order pre-signature */ - preSignatures: BytesLike[]; + preSignatures: Bytes[] } /** * Table mapping token addresses to their respective clearing prices. */ -export type Prices = Record; +export type Prices = Record /** * Encoded settlement parameters. @@ -142,12 +105,12 @@ export type EncodedSettlement = [ /** Tokens. */ string[], /** Clearing prices. */ - BigNumberish[], + BigIntish[], /** Encoded trades. */ Trade[], /** Encoded interactions. */ [Interaction[], Interaction[], Interaction[]], -]; +] /** * An object listing all flag options in order along with their bit offset. @@ -176,55 +139,40 @@ export const FLAG_MASKS = { }, signingScheme: { offset: 5, - options: [ - SigningScheme.EIP712, - SigningScheme.ETHSIGN, - SigningScheme.EIP1271, - SigningScheme.PRESIGN, - ], + options: [SigningScheme.EIP712, SigningScheme.ETHSIGN, SigningScheme.EIP1271, SigningScheme.PRESIGN], }, -} as const; +} as const -export type FlagKey = keyof typeof FLAG_MASKS; -export type FlagOptions = (typeof FLAG_MASKS)[K]["options"]; -export type FlagValue = Exclude< - FlagOptions[number], - undefined ->; +export type FlagKey = keyof typeof FLAG_MASKS +export type FlagOptions = (typeof FLAG_MASKS)[K]['options'] +export type FlagValue = Exclude[number], undefined> function encodeFlag(key: K, flag: FlagValue): number { - const index = FLAG_MASKS[key].options.findIndex( - (search: unknown) => search === flag, - ); + const index = FLAG_MASKS[key].options.findIndex((search: unknown) => search === flag) if (index === undefined) { - throw new Error(`Bad key/value pair to encode: ${key}/${flag}`); + throw new Error(`Bad key/value pair to encode: ${key}/${flag}`) } - return index << FLAG_MASKS[key].offset; + return index << FLAG_MASKS[key].offset } // Counts the smallest mask needed to store the input options in the masked // bitfield. function mask(options: readonly unknown[]): number { - const num = options.length; - const bitCount = 32 - Math.clz32(num - 1); - return (1 << bitCount) - 1; + const num = options.length + const bitCount = 32 - Math.clz32(num - 1) + return (1 << bitCount) - 1 } -function decodeFlag( - key: K, - flag: BigNumberish, -): FlagValue { - const { offset, options } = FLAG_MASKS[key]; - const numberFlags = BigNumber.from(flag).toNumber(); - const index = (numberFlags >> offset) & mask(options); +function decodeFlag(key: K, flag: BigIntish): FlagValue { + const { offset, options } = FLAG_MASKS[key] + const numberFlags = getGlobalAdapter().utils.toNumber(flag) + const index = (numberFlags >> offset) & mask(options) // This type casting should not be needed - const decoded = options[index] as FlagValue; + const decoded = options[index] as FlagValue if (decoded === undefined || index < 0) { - throw new Error( - `Invalid input flag for ${key}: 0b${numberFlags.toString(2)}`, - ); + throw new Error(`Invalid input flag for ${key}: 0b${numberFlags.toString(2)}`) } - return decoded; + return decoded } /** @@ -234,7 +182,7 @@ function decodeFlag( * @return The bitfield result. */ export function encodeSigningScheme(scheme: SigningScheme): number { - return encodeFlag("signingScheme", scheme); + return encodeFlag('signingScheme', scheme) } /** @@ -243,8 +191,8 @@ export function encodeSigningScheme(scheme: SigningScheme): number { * @param flag The encoded order flag. * @return The decoded signing scheme. */ -export function decodeSigningScheme(flags: BigNumberish): SigningScheme { - return decodeFlag("signingScheme", flags); +export function decodeSigningScheme(flags: BigIntish): SigningScheme { + return decodeFlag('signingScheme', flags) } /** @@ -255,17 +203,11 @@ export function decodeSigningScheme(flags: BigNumberish): SigningScheme { */ export function encodeOrderFlags(flags: OrderFlags): number { return ( - encodeFlag("kind", flags.kind) | - encodeFlag("partiallyFillable", flags.partiallyFillable) | - encodeFlag( - "sellTokenBalance", - flags.sellTokenBalance ?? OrderBalance.ERC20, - ) | - encodeFlag( - "buyTokenBalance", - normalizeBuyTokenBalance(flags.buyTokenBalance), - ) - ); + encodeFlag('kind', flags.kind) | + encodeFlag('partiallyFillable', flags.partiallyFillable) | + encodeFlag('sellTokenBalance', flags.sellTokenBalance ?? OrderBalance.ERC20) | + encodeFlag('buyTokenBalance', normalizeBuyTokenBalance(flags.buyTokenBalance)) + ) } /** @@ -274,13 +216,13 @@ export function encodeOrderFlags(flags: OrderFlags): number { * @param flags The order flags encoded as a bitfield. * @return The decoded order flags. */ -export function decodeOrderFlags(flags: BigNumberish): OrderFlags { +export function decodeOrderFlags(flags: BigIntish): OrderFlags { return { - kind: decodeFlag("kind", flags), - partiallyFillable: decodeFlag("partiallyFillable", flags), - sellTokenBalance: decodeFlag("sellTokenBalance", flags), - buyTokenBalance: decodeFlag("buyTokenBalance", flags), - }; + kind: decodeFlag('kind', flags), + partiallyFillable: decodeFlag('partiallyFillable', flags), + sellTokenBalance: decodeFlag('sellTokenBalance', flags), + buyTokenBalance: decodeFlag('buyTokenBalance', flags), + } } /** @@ -290,7 +232,7 @@ export function decodeOrderFlags(flags: BigNumberish): OrderFlags { * @return The bitfield result. */ export function encodeTradeFlags(flags: TradeFlags): number { - return encodeOrderFlags(flags) | encodeSigningScheme(flags.signingScheme); + return encodeOrderFlags(flags) | encodeSigningScheme(flags.signingScheme) } /** @@ -299,58 +241,44 @@ export function encodeTradeFlags(flags: TradeFlags): number { * @param flags The trade flags encoded as a bitfield. * @return The bitfield result. */ -export function decodeTradeFlags(flags: BigNumberish): TradeFlags { +export function decodeTradeFlags(flags: BigIntish): TradeFlags { return { ...decodeOrderFlags(flags), signingScheme: decodeSigningScheme(flags), - }; + } } export function encodeSignatureData(sig: Signature): string { + const adapter = getGlobalAdapter() switch (sig.scheme) { case SigningScheme.EIP712: case SigningScheme.ETHSIGN: - return ethers.utils.joinSignature(sig.data); + return adapter.utils.joinSignature(adapter.utils.splitSignature(sig.data)) case SigningScheme.EIP1271: - return encodeEip1271SignatureData(sig.data); + return encodeEip1271SignatureData(sig.data) case SigningScheme.PRESIGN: - return ethers.utils.getAddress(sig.data); + return adapter.utils.getChecksumAddress(sig.data) default: - throw new Error("unsupported signing scheme"); + throw new Error('unsupported signing scheme') } } -export function decodeSignatureOwner( - domain: TypedDataDomain, - order: Order, - scheme: SigningScheme, - sig: BytesLike, -): string { +export function decodeSignatureOwner(domain: TypedDataDomain, order: Order, scheme: SigningScheme, sig: Bytes): string { + const adapter = getGlobalAdapter() switch (scheme) { case SigningScheme.EIP712: - return ethers.utils.verifyTypedData( - domain, - { Order: ORDER_TYPE_FIELDS }, - normalizeOrder(order), - sig, - ); + return adapter.utils.verifyTypedData(domain, { Order: ORDER_TYPE_FIELDS }, normalizeOrder(order), sig) as string case SigningScheme.ETHSIGN: - return ethers.utils.verifyMessage( - ethers.utils.arrayify( - hashTypedData( - domain, - { Order: ORDER_TYPE_FIELDS }, - normalizeOrder(order), - ), - ), + return adapter.utils.verifyMessage( + adapter.utils.arrayify(hashTypedData(domain, { Order: ORDER_TYPE_FIELDS }, normalizeOrder(order))), sig, - ); + ) as string case SigningScheme.EIP1271: - return decodeEip1271SignatureData(sig).verifier; + return decodeEip1271SignatureData(sig).verifier case SigningScheme.PRESIGN: - return ethers.utils.getAddress(ethers.utils.hexlify(sig)); + return adapter.utils.getChecksumAddress(adapter.utils.hexlify(sig)) default: - throw new Error("unsupported signing scheme"); + throw new Error('unsupported signing scheme') } } @@ -366,8 +294,8 @@ export function encodeTrade( const tradeFlags = { ...order, signingScheme: signature.scheme, - }; - const o = normalizeOrder(order); + } as TradeFlags + const o = normalizeOrder(order) return { sellTokenIndex: tokens.index(o.sellToken), @@ -381,7 +309,7 @@ export function encodeTrade( flags: encodeTradeFlags(tradeFlags), executedAmount, signature: encodeSignatureData(signature), - }; + } } /** @@ -394,8 +322,17 @@ export function encodeTrade( * requiring a search. */ export class TokenRegistry { - private readonly _tokens: string[] = []; - private readonly _tokenMap: Record = {}; + /** + * Creates a new TokenRegistry instance + * + * @param adapter Provider adapter implementation + */ + constructor(adapter?: AbstractProviderAdapter) { + if (adapter) setGlobalAdapter(adapter) + } + + private readonly _tokens: string[] = [] + private readonly _tokenMap: Record = {} /** * Gets the array of token addresses currently stored in the registry. @@ -403,7 +340,7 @@ export class TokenRegistry { public get addresses(): string[] { // NOTE: Make sure to slice the original array, so it cannot be modified // outside of this class. - return this._tokens.slice(); + return this._tokens.slice() } /** @@ -417,16 +354,16 @@ export class TokenRegistry { // NOTE: Verify and normalize the address into a case-checksummed address. // Not only does this ensure validity of the addresses early on, it also // makes it so `0xff...f` and `0xFF..F` map to the same ID. - const tokenAddress = ethers.utils.getAddress(token); + const tokenAddress = getGlobalAdapter().utils.getChecksumAddress(token) - let tokenIndex = this._tokenMap[tokenAddress]; + let tokenIndex = this._tokenMap[tokenAddress] if (tokenIndex === undefined) { - tokenIndex = this._tokens.length; - this._tokens.push(tokenAddress); - this._tokenMap[tokenAddress] = tokenIndex; + tokenIndex = this._tokens.length + this._tokens.push(tokenAddress) + this._tokenMap[tokenAddress] = tokenIndex } - return tokenIndex; + return tokenIndex } } @@ -438,24 +375,29 @@ export class TokenRegistry { * properly encode order parameters for trades. */ export class SettlementEncoder { - private readonly _tokens = new TokenRegistry(); - private readonly _trades: Trade[] = []; + private readonly _tokens = new TokenRegistry() + private readonly _trades: Trade[] = [] private readonly _interactions: Record = { [InteractionStage.PRE]: [], [InteractionStage.INTRA]: [], [InteractionStage.POST]: [], - }; + } private readonly _orderRefunds: OrderRefunds = { filledAmounts: [], preSignatures: [], - }; + } /** * Creates a new settlement encoder instance. * @param domain Domain used for signing orders. See {@link signOrder} for * more details. */ - public constructor(public readonly domain: TypedDataDomain) {} + public constructor( + public readonly domain: TypedDataDomain, + adapter?: AbstractProviderAdapter, + ) { + if (adapter) setGlobalAdapter(adapter) + } /** * Gets the array of token addresses used by the currently encoded orders. @@ -463,14 +405,14 @@ export class SettlementEncoder { public get tokens(): string[] { // NOTE: Make sure to slice the original array, so it cannot be modified // outside of this class. - return this._tokens.addresses; + return this._tokens.addresses } /** * Gets the encoded trades. */ public get trades(): Trade[] { - return this._trades.slice(); + return this._trades.slice() } /** @@ -482,49 +424,48 @@ export class SettlementEncoder { return [ this._interactions[InteractionStage.PRE].slice(), this._interactions[InteractionStage.INTRA].slice(), - [ - ...this._interactions[InteractionStage.POST], - ...this.encodedOrderRefunds, - ], - ]; + [...this._interactions[InteractionStage.POST], ...this.encodedOrderRefunds], + ] } /** * Gets the order refunds encoded as interactions. */ public get encodedOrderRefunds(): Interaction[] { - const { filledAmounts, preSignatures } = this._orderRefunds; + const { filledAmounts, preSignatures } = this._orderRefunds if (filledAmounts.length + preSignatures.length === 0) { - return []; + return [] } - const settlement = this.domain.verifyingContract; + //@ts-expect-error: TypedDataDomain is unknown + const settlement = this.domain.verifyingContract if (settlement === undefined) { - throw new Error("domain missing settlement contract address"); + throw new Error('domain missing settlement contract address') } // NOTE: Avoid importing the full GPv2Settlement contract artifact just for // a tiny snippet of the ABI. Unit and integration tests will catch any // issues that may arise from this definition becoming out of date. - const iface = new ethers.utils.Interface([ - "function freeFilledAmountStorage(bytes[] orderUids)", - "function freePreSignatureStorage(bytes[] orderUids)", - ]); + const iface = getGlobalAdapter().utils.createInterface([ + 'function freeFilledAmountStorage(bytes[] orderUids)', + 'function freePreSignatureStorage(bytes[] orderUids)', + ]) - const interactions = []; + const interactions = [] for (const [functionName, orderUids] of [ - ["freeFilledAmountStorage", filledAmounts] as const, - ["freePreSignatureStorage", preSignatures] as const, + ['freeFilledAmountStorage', filledAmounts] as const, + ['freePreSignatureStorage', preSignatures] as const, ].filter(([, orderUids]) => orderUids.length > 0)) { interactions.push( normalizeInteraction({ target: settlement, + //@ts-expect-error: Interface is unknown callData: iface.encodeFunctionData(functionName, [orderUids]), }), - ); + ) } - return interactions; + return interactions } /** @@ -534,14 +475,14 @@ export class SettlementEncoder { * @param prices The price map from token address to price. * @return The price vector. */ - public clearingPrices(prices: Prices): BigNumberish[] { + public clearingPrices(prices: Prices): BigIntish[] { return this.tokens.map((token) => { - const price = prices[token]; + const price = prices[token] if (price === undefined) { - throw new Error(`missing price for token ${token}`); + throw new Error(`missing price for token ${token}`) } - return price; - }); + return price + }) } /** @@ -555,20 +496,16 @@ export class SettlementEncoder { * @param signature The signature for the order data. * @param tradeExecution The execution details for the trade. */ - public encodeTrade( - order: Order, - signature: Signature, - { executedAmount }: Partial = {}, - ): void { + public encodeTrade(order: Order, signature: Signature, { executedAmount }: Partial = {}): void { if (order.partiallyFillable && executedAmount === undefined) { - throw new Error("missing executed amount for partially fillable trade"); + throw new Error('missing executed amount for partially fillable trade') } this._trades.push( encodeTrade(this._tokens, order, signature, { executedAmount: executedAmount ?? 0, }), - ); + ) } /** @@ -586,8 +523,8 @@ export class SettlementEncoder { scheme: EcdsaSigningScheme, tradeExecution?: Partial, ): Promise { - const signature = await signOrder(this.domain, order, owner, scheme); - this.encodeTrade(order, signature, tradeExecution); + const signature = await signOrder(this.domain, order, owner, scheme) + this.encodeTrade(order, signature, tradeExecution) } /** @@ -597,11 +534,8 @@ export class SettlementEncoder { * @param stage The stage the interaction should be executed. * @param interaction The interaction to encode. */ - public encodeInteraction( - interaction: InteractionLike, - stage: InteractionStage = InteractionStage.INTRA, - ): void { - this._interactions[stage].push(normalizeInteraction(interaction)); + public encodeInteraction(interaction: InteractionLike, stage: InteractionStage = InteractionStage.INTRA): void { + this._interactions[stage].push(normalizeInteraction(interaction)) } /** @@ -611,35 +545,31 @@ export class SettlementEncoder { * @param orderRefunds The order refunds to encode. */ public encodeOrderRefunds(orderRefunds: Partial): void { + //@ts-expect-error:TypedDataDomain is unknown if (this.domain.verifyingContract === undefined) { - throw new Error("domain missing settlement contract address"); + throw new Error('domain missing settlement contract address') } - const filledAmounts = orderRefunds.filledAmounts ?? []; - const preSignatures = orderRefunds.preSignatures ?? []; + const filledAmounts = orderRefunds.filledAmounts ?? [] + const preSignatures = orderRefunds.preSignatures ?? [] - if ( - ![...filledAmounts, ...preSignatures].every((orderUid) => - ethers.utils.isHexString(orderUid, ORDER_UID_LENGTH), - ) - ) { - throw new Error("one or more invalid order UIDs"); + // Verify all order UIDs are the correct length + for (const orderUid of [...filledAmounts, ...preSignatures]) { + const bytes = getGlobalAdapter().utils.arrayify(orderUid as string) + if (bytes.length !== ORDER_UID_LENGTH) { + throw new Error('one or more invalid order UIDs') + } } - this._orderRefunds.filledAmounts.push(...filledAmounts); - this._orderRefunds.preSignatures.push(...preSignatures); + this._orderRefunds.filledAmounts.push(...filledAmounts) + this._orderRefunds.preSignatures.push(...preSignatures) } /** * Returns the encoded settlement parameters. */ public encodedSettlement(prices: Prices): EncodedSettlement { - return [ - this.tokens, - this.clearingPrices(prices), - this.trades, - this.interactions, - ]; + return [this.tokens, this.clearingPrices(prices), this.trades, this.interactions] } /** @@ -649,14 +579,12 @@ export class SettlementEncoder { * * @param interactions The list of setup interactions to encode. */ - public static encodedSetup( - ...interactions: InteractionLike[] - ): EncodedSettlement { - const encoder = new SettlementEncoder({ name: "unused" }); + public static encodedSetup(...interactions: InteractionLike[]): EncodedSettlement { + const encoder = new SettlementEncoder({ name: 'unused' }) for (const interaction of interactions) { - encoder.encodeInteraction(interaction); + encoder.encodeInteraction(interaction) } - return encoder.encodedSettlement({}); + return encoder.encodedSettlement({}) } } @@ -668,20 +596,21 @@ export class SettlementEncoder { * @returns The decoded order. */ export function decodeOrder(trade: Trade, tokens: string[]): Order { - const sellTokenIndex = BigNumber.from(trade.sellTokenIndex).toNumber(); - const buyTokenIndex = BigNumber.from(trade.buyTokenIndex).toNumber(); + const adapter = getGlobalAdapter() + const sellTokenIndex = adapter.utils.toNumber(adapter.utils.toBigIntish(trade.sellTokenIndex)) + const buyTokenIndex = adapter.utils.toNumber(adapter.utils.toBigIntish(trade.buyTokenIndex)) if (Math.max(sellTokenIndex, buyTokenIndex) >= tokens.length) { - throw new Error("Invalid trade"); + throw new Error('Invalid trade') } return { - sellToken: tokens[sellTokenIndex], - buyToken: tokens[buyTokenIndex], + sellToken: tokens[sellTokenIndex] as string, + buyToken: tokens[buyTokenIndex] as string, receiver: trade.receiver, sellAmount: trade.sellAmount, buyAmount: trade.buyAmount, - validTo: BigNumber.from(trade.validTo).toNumber(), + validTo: adapter.utils.toNumber(adapter.utils.toBigIntish(trade.validTo)), appData: trade.appData, feeAmount: trade.feeAmount, ...decodeOrderFlags(trade.flags), - }; + } } diff --git a/packages/contracts-ts/src/sign.ts b/packages/contracts-ts/src/sign.ts index ae8630929..ede723ff9 100644 --- a/packages/contracts-ts/src/sign.ts +++ b/packages/contracts-ts/src/sign.ts @@ -1,83 +1,19 @@ -import { BytesLike, ethers, Signer } from "ethers"; - -import { - ORDER_TYPE_FIELDS, - CANCELLATIONS_TYPE_FIELDS, - Order, - normalizeOrder, - hashTypedData, -} from "./order"; -import { - TypedDataTypes, - SignatureLike, - isTypedDataSigner, - TypedDataDomain, -} from "./types/ethers"; +import { Bytes, getGlobalAdapter, Signer, TypedDataDomain, TypedDataTypes } from '@cowprotocol/sdk-common' +import { CANCELLATIONS_TYPE_FIELDS, ORDER_TYPE_FIELDS, normalizeOrder } from './order' +import { EcdsaSigningScheme, SigningScheme, Order, EcdsaSignature } from './types' /** * Value returned by a call to `isValidSignature` if the signature was verified * successfully. The value is defined in the EIP-1271 standard as: * bytes4(keccak256("isValidSignature(bytes32,bytes)")) */ -export const EIP1271_MAGICVALUE = ethers.utils.hexDataSlice( - ethers.utils.id("isValidSignature(bytes32,bytes)"), - 0, - 4, -); +export const EIP1271_MAGICVALUE = '0x1626ba7e' /** * Marker value indicating a presignature is set. + * const PRE_SIGNED = ethersV5.utils.id("GPv2Signing.Scheme.PreSign"); */ -export const PRE_SIGNED = ethers.utils.id("GPv2Signing.Scheme.PreSign"); - -/** - * The signing scheme used to sign the order. - */ -export enum SigningScheme { - /** - * The EIP-712 typed data signing scheme. This is the preferred scheme as it - * provides more infomation to wallets performing the signature on the data - * being signed. - * - * - */ - EIP712 = 0b00, - /** - * Message signed using eth_sign RPC call. - */ - ETHSIGN = 0b01, - /** - * Smart contract signatures as defined in EIP-1271. - * - * - */ - EIP1271 = 0b10, - /** - * Pre-signed order. - */ - PRESIGN = 0b11, -} - -export type EcdsaSigningScheme = SigningScheme.EIP712 | SigningScheme.ETHSIGN; - -/** - * The signature of an order. - */ -export type Signature = EcdsaSignature | Eip1271Signature | PreSignSignature; - -/** - * ECDSA signature of an order. - */ -export interface EcdsaSignature { - /** - * The signing scheme used in the signature. - */ - scheme: EcdsaSigningScheme; - /** - * The ECDSA signature. - */ - data: SignatureLike; -} +export const PRE_SIGNED = '0xf59c009283ff87aa78203fc4d9c2df025ee851130fb69cc3e068941f6b5e2d6f' /** * EIP-1271 signature data. @@ -86,11 +22,11 @@ export interface Eip1271SignatureData { /** * The verifying contract address. */ - verifier: string; + verifier: string /** * The arbitrary signature data used for verification. */ - signature: BytesLike; + signature: Bytes } /** @@ -100,11 +36,11 @@ export interface Eip1271Signature { /** * The signing scheme used in the signature. */ - scheme: SigningScheme.EIP1271; + scheme: SigningScheme.EIP1271 /** * The signature data. */ - data: Eip1271SignatureData; + data: Eip1271SignatureData } /** @@ -114,11 +50,11 @@ export interface PreSignSignature { /** * The signing scheme used in the signature. */ - scheme: SigningScheme.PRESIGN; + scheme: SigningScheme.PRESIGN /** * The address of the signer. */ - data: string; + data: string } async function ecdsaSignTypedData( @@ -128,28 +64,25 @@ async function ecdsaSignTypedData( types: TypedDataTypes, data: Record, ): Promise { - let signature: string | null = null; + let signature: string | null = null + const adapter = getGlobalAdapter() + const signer = new adapter.Signer(owner) switch (scheme) { case SigningScheme.EIP712: - if (!isTypedDataSigner(owner)) { - throw new Error("signer does not support signing typed data"); - } - signature = await owner._signTypedData(domain, types, data); - break; + signature = await signer.signTypedData(domain, types, data) + break case SigningScheme.ETHSIGN: - signature = await owner.signMessage( - ethers.utils.arrayify(hashTypedData(domain, types, data)), - ); - break; + signature = await signer.signMessage(adapter.utils.arrayify(adapter.utils.hashTypedData(domain, types, data))) + break default: - throw new Error("invalid signing scheme"); + throw new Error('invalid signing scheme') } // Passing the signature through split/join to normalize the `v` byte. // Some wallets do not pad it with `27`, which causes a signature failure // `splitSignature` pads it if needed, and `joinSignature` simply puts it back together - return ethers.utils.joinSignature(ethers.utils.splitSignature(signature)); + return adapter.utils.joinSignature(adapter.utils.splitSignature(signature)) } /** @@ -174,14 +107,38 @@ export async function signOrder( ): Promise { return { scheme, - data: await ecdsaSignTypedData( - scheme, - owner, - domain, - { Order: ORDER_TYPE_FIELDS }, - normalizeOrder(order), - ), - }; + data: await ecdsaSignTypedData(scheme, owner, domain, { Order: ORDER_TYPE_FIELDS }, normalizeOrder(order)), + } +} + +/** + * Encodes the necessary data required for the Gnosis Protocol contracts to + * verify an EIP-1271 signature. + * + * @param signature The EIP-1271 signature data to encode. + */ +export function encodeEip1271SignatureData({ verifier, signature }: Eip1271SignatureData): string { + const adapter = getGlobalAdapter() + return adapter.utils.solidityPack(['address', 'bytes'], [adapter.utils.getChecksumAddress(verifier), signature]) +} + +/** + * Decodes a GPv2 EIP-1271-type signature into the actual EIP-1271 signature + * and the verifier contract. + * + * @param signature The EIP-1271 signature data to decode. + * @returns decodedSignature The decoded signature object, composed of an + * EIP-1271 signature and a verifier. + */ +export function decodeEip1271SignatureData(signature: Bytes): Eip1271SignatureData { + const adapter = getGlobalAdapter() + //@ts-expect-error: bytes type is unknown + const arrayifiedSignature = adapter.utils.arrayify(signature) + const verifier = adapter.utils.getChecksumAddress(adapter.utils.hexlify(arrayifiedSignature.slice(0, 20))) + return { + verifier, + signature: adapter.utils.hexlify(arrayifiedSignature.slice(20)), + } } /** @@ -197,11 +154,11 @@ export async function signOrder( */ export async function signOrderCancellation( domain: TypedDataDomain, - orderUid: BytesLike, + orderUid: Bytes, owner: Signer, scheme: EcdsaSigningScheme, ): Promise { - return signOrderCancellations(domain, [orderUid], owner, scheme); + return signOrderCancellations(domain, [orderUid], owner, scheme) } /** @@ -217,7 +174,7 @@ export async function signOrderCancellation( */ export async function signOrderCancellations( domain: TypedDataDomain, - orderUids: BytesLike[], + orderUids: Bytes[], owner: Signer, scheme: EcdsaSigningScheme, ): Promise { @@ -230,39 +187,5 @@ export async function signOrderCancellations( { OrderCancellations: CANCELLATIONS_TYPE_FIELDS }, { orderUids }, ), - }; -} - -/** - * Encodes the necessary data required for the Gnosis Protocol contracts to - * verify an EIP-1271 signature. - * - * @param signature The EIP-1271 signature data to encode. - */ -export function encodeEip1271SignatureData({ - verifier, - signature, -}: Eip1271SignatureData): string { - return ethers.utils.solidityPack(["address", "bytes"], [verifier, signature]); -} - -/** - * Decodes a GPv2 EIP-1271-type signature into the actual EIP-1271 signature - * and the verifier contract. - * - * @param signature The EIP-1271 signature data to decode. - * @returns decodedSignature The decoded signature object, composed of an - * EIP-1271 signature and a verifier. - */ -export function decodeEip1271SignatureData( - signature: BytesLike, -): Eip1271SignatureData { - const arrayifiedSignature = ethers.utils.arrayify(signature); - const verifier = ethers.utils.getAddress( - ethers.utils.hexlify(arrayifiedSignature.slice(0, 20)), - ); - return { - verifier, - signature: arrayifiedSignature.slice(20), - }; + } } diff --git a/packages/contracts-ts/src/signers.ts b/packages/contracts-ts/src/signers.ts index 46f6d9790..2ceb2243d 100644 --- a/packages/contracts-ts/src/signers.ts +++ b/packages/contracts-ts/src/signers.ts @@ -1,13 +1,4 @@ -import { _TypedDataEncoder } from "@ethersproject/hash"; -import type { JsonRpcProvider } from "@ethersproject/providers"; -import { ethers, Signer } from "ethers"; - -import { - isJsonRpcProvider, - TypedDataDomain, - TypedDataSigner, - TypedDataTypes, -} from "./types/ethers"; +import { AbstractSigner, getGlobalAdapter, Signer } from '@cowprotocol/sdk-common' /** * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData`. It allows to specify the version of @@ -16,117 +7,9 @@ import { * Takes a Signer instance on creation. * All other Signer methods are proxied to initial instance. */ -export class TypedDataVersionedSigner implements TypedDataSigner { - signer: Signer; - provider: JsonRpcProvider; - _isSigner = true; - _signMethod: string; - - constructor(signer: Signer, version?: "v3" | "v4") { - this.signer = signer; - const versionSufix = version ? "_" + version : ""; - this._signMethod = "eth_signTypedData" + versionSufix; - - if (!signer.provider) { - throw new Error("Signer does not have a provider set"); - } - if (!isJsonRpcProvider(signer.provider)) { - throw new Error("Provider must be of type JsonRpcProvider"); - } - - this.provider = signer.provider; - } - - async _signTypedData( - domain: TypedDataDomain, - types: TypedDataTypes, - data: Record, - ): Promise { - const populated = await _TypedDataEncoder.resolveNames( - domain, - types, - data, - (name: string) => this.resolveName(name), - ); - - const payload = _TypedDataEncoder.getPayload( - populated.domain, - types, - populated.value, - ); - const msg = JSON.stringify(payload); - - const address = await this.getAddress(); - - // Actual signing - return this.provider.send(this._signMethod, [address.toLowerCase(), msg]); - } - - // --- start boilerplate proxy methods --- - - getAddress(): Promise { - return this.signer.getAddress(); - } - signMessage(message: string | ethers.utils.Bytes): Promise { - return this.signer.signMessage(message); - } - signTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.signTransaction(transaction); - } - connect(provider: ethers.providers.Provider): ethers.Signer { - return this.signer.connect(provider); - } - getBalance(blockTag?: ethers.providers.BlockTag): Promise { - return this.signer.getBalance(blockTag); - } - getTransactionCount(blockTag?: ethers.providers.BlockTag): Promise { - return this.signer.getTransactionCount(blockTag); - } - estimateGas( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.estimateGas(transaction); - } - call( - transaction: ethers.utils.Deferrable, - blockTag?: ethers.providers.BlockTag, - ): Promise { - return this.signer.call(transaction, blockTag); - } - sendTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.sendTransaction(transaction); - } - getChainId(): Promise { - return this.signer.getChainId(); - } - getGasPrice(): Promise { - return this.signer.getGasPrice(); - } - getFeeData(): Promise { - return this.signer.getFeeData(); - } - resolveName(name: string): Promise { - return this.signer.resolveName(name); - } - checkTransaction( - transaction: ethers.utils.Deferrable, - ): ethers.utils.Deferrable { - return this.signer.checkTransaction(transaction); - } - populateTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.populateTransaction(transaction); - } - _checkProvider(operation?: string): void { - return this.signer._checkProvider(operation); - } - - // --- end boilerplate proxy methods --- +export function getTypedDataVersionedSigner(signer: Signer, version: 'v3' | 'v4'): AbstractSigner { + const adapter = getGlobalAdapter() + return new adapter.TypedDataVersionedSigner(signer, version) } /** @@ -136,10 +19,9 @@ export class TypedDataVersionedSigner implements TypedDataSigner { * Takes a Signer instance on creation. * All other Signer methods are proxied to initial instance. */ -export class TypedDataV3Signer extends TypedDataVersionedSigner { - constructor(signer: Signer) { - super(signer, "v3"); - } +export function getTypedDataV3Signer(signer: Signer): AbstractSigner { + const adapter = getGlobalAdapter() + return new adapter.TypedDataV3Signer(signer) } /** @@ -153,117 +35,7 @@ export class TypedDataV3Signer extends TypedDataVersionedSigner { * Takes a Signer instance on creation. * All other Signer methods are proxied to initial instance. */ -export class IntChainIdTypedDataV4Signer implements TypedDataSigner { - signer: Signer; - provider: JsonRpcProvider; - _isSigner = true; - - constructor(signer: Signer) { - this.signer = signer; - - if (!signer.provider) { - throw new Error("Signer does not have a provider set"); - } - if (!isJsonRpcProvider(signer.provider)) { - throw new Error("Provider must be of type JsonRpcProvider"); - } - - this.provider = signer.provider; - } - - async _signTypedData( - domain: TypedDataDomain, - types: TypedDataTypes, - data: Record, - ): Promise { - const populated = await _TypedDataEncoder.resolveNames( - domain, - types, - data, - (name: string) => this.resolveName(name), - ); - - const payload = _TypedDataEncoder.getPayload( - populated.domain, - types, - populated.value, - ); - // Making `chainId` an int since Latest Metamask version (9.6.0) breaks otherwise - payload.domain.chainId = parseInt(payload.domain.chainId, 10); - const msg = JSON.stringify(payload); - - const address = await this.getAddress(); - - // Actual signing - return (await this.provider.send("eth_signTypedData_v4", [ - address.toLowerCase(), - msg, - ])) as string; - } - - // --- start boilerplate proxy methods --- - - getAddress(): Promise { - return this.signer.getAddress(); - } - signMessage(message: string | ethers.utils.Bytes): Promise { - return this.signer.signMessage(message); - } - signTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.signTransaction(transaction); - } - connect(provider: ethers.providers.Provider): ethers.Signer { - return this.signer.connect(provider); - } - getBalance(blockTag?: ethers.providers.BlockTag): Promise { - return this.signer.getBalance(blockTag); - } - getTransactionCount(blockTag?: ethers.providers.BlockTag): Promise { - return this.signer.getTransactionCount(blockTag); - } - estimateGas( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.estimateGas(transaction); - } - call( - transaction: ethers.utils.Deferrable, - blockTag?: ethers.providers.BlockTag, - ): Promise { - return this.signer.call(transaction, blockTag); - } - sendTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.sendTransaction(transaction); - } - getChainId(): Promise { - return this.signer.getChainId(); - } - getGasPrice(): Promise { - return this.signer.getGasPrice(); - } - getFeeData(): Promise { - return this.signer.getFeeData(); - } - resolveName(name: string): Promise { - return this.signer.resolveName(name); - } - checkTransaction( - transaction: ethers.utils.Deferrable, - ): ethers.utils.Deferrable { - return this.signer.checkTransaction(transaction); - } - populateTransaction( - transaction: ethers.utils.Deferrable, - ): Promise { - return this.signer.populateTransaction(transaction); - } - _checkProvider(operation?: string): void { - return this.signer._checkProvider(operation); - } - - // --- end boilerplate proxy methods --- +export function getIntChainIdTypedDataV4Signer(signer: Signer): AbstractSigner { + const adapter = getGlobalAdapter() + return new adapter.IntChainIdTypedDataV4Signer(signer) } diff --git a/packages/contracts-ts/src/swap.ts b/packages/contracts-ts/src/swap.ts index 98460846a..5a375cfc4 100644 --- a/packages/contracts-ts/src/swap.ts +++ b/packages/contracts-ts/src/swap.ts @@ -1,9 +1,14 @@ -import { BigNumberish, BytesLike, Signer } from "ethers"; - -import { Order, OrderKind } from "./order"; -import { TokenRegistry, Trade, encodeTrade } from "./settlement"; -import { EcdsaSigningScheme, Signature, signOrder } from "./sign"; -import { TypedDataDomain } from "./types/ethers"; +import { + AbstractProviderAdapter, + BigIntish, + Bytes, + setGlobalAdapter, + Signer, + TypedDataDomain, +} from '@cowprotocol/sdk-common' +import { TokenRegistry, encodeTrade } from './settlement' +import { signOrder } from './sign' +import { Signature, EcdsaSigningScheme, Trade, Order, OrderKind } from './types' /** * A Balancer swap used for settling a single order against Balancer pools. @@ -12,27 +17,27 @@ export interface Swap { /** * The ID of the pool for the swap. */ - poolId: BytesLike; + poolId: Bytes /** * The swap input token address. */ - assetIn: string; + assetIn: string /** * The swap output token address. */ - assetOut: string; + assetOut: string /** * The amount to swap. This will ether be a fixed input amount when swapping * a sell order, or a fixed output amount when swapping a buy order. */ - amount: BigNumberish; + amount: BigIntish /** * Optional additional pool user data required for the swap. * * This additional user data is pool implementation specific, and allows pools * to extend the Vault pool interface. */ - userData?: BytesLike; + userData?: Bytes } /** @@ -43,26 +48,26 @@ export interface BatchSwapStep { /** * The ID of the pool for the swap. */ - poolId: BytesLike; + poolId: Bytes /** * The index of the input token. * * Settlement swap calls encode tokens as an array, this number represents an * index into that array. */ - assetInIndex: number; + assetInIndex: number /** * The index of the output token. */ - assetOutIndex: number; + assetOutIndex: number /** * The amount to swap. */ - amount: BigNumberish; + amount: BigIntish /** * Additional pool user data required for the swap. */ - userData: BytesLike; + userData: Bytes } /** @@ -75,7 +80,7 @@ export interface SwapExecution { * This allows settlement submission to define a tighter slippage than what * was specified by the order in order to reduce MEV opportunity. */ - limitAmount: BigNumberish; + limitAmount: BigIntish } /** @@ -88,23 +93,20 @@ export type EncodedSwap = [ string[], /** Encoded trade. */ Trade, -]; +] /** * Encodes a swap as a {@link BatchSwapStep} to be used with the settlement * contract. */ -export function encodeSwapStep( - tokens: TokenRegistry, - swap: Swap, -): BatchSwapStep { +export function encodeSwapStep(tokens: TokenRegistry, swap: Swap): BatchSwapStep { return { poolId: swap.poolId, assetInIndex: tokens.index(swap.assetIn), assetOutIndex: tokens.index(swap.assetOut), amount: swap.amount, - userData: swap.userData || "0x", - }; + userData: swap.userData || '0x', + } } /** @@ -115,9 +117,9 @@ export function encodeSwapStep( * properly encode swap requests and the trade. */ export class SwapEncoder { - private readonly _tokens = new TokenRegistry(); - private readonly _swaps: BatchSwapStep[] = []; - private _trade: Trade | undefined = undefined; + private readonly _tokens = new TokenRegistry() + private readonly _swaps: BatchSwapStep[] = [] + private _trade: Trade | undefined = undefined /** * Creates a new settlement encoder instance. @@ -125,7 +127,12 @@ export class SwapEncoder { * @param domain Domain used for signing orders. See {@link signOrder} for * more details. */ - public constructor(public readonly domain: TypedDataDomain) {} + public constructor( + public readonly domain: TypedDataDomain, + adapter?: AbstractProviderAdapter, + ) { + if (adapter) setGlobalAdapter(adapter) + } /** * Gets the array of token addresses used by the currently encoded swaps. @@ -133,14 +140,14 @@ export class SwapEncoder { public get tokens(): string[] { // NOTE: Make sure to slice the original array, so it cannot be modified // outside of this class. - return this._tokens.addresses; + return this._tokens.addresses } /** * Gets the encoded swaps. */ public get swaps(): BatchSwapStep[] { - return this._swaps.slice(); + return this._swaps.slice() } /** @@ -148,9 +155,9 @@ export class SwapEncoder { */ public get trade(): Trade { if (this._trade === undefined) { - throw new Error("trade not encoded"); + throw new Error('trade not encoded') } - return this._trade; + return this._trade } /** @@ -160,9 +167,7 @@ export class SwapEncoder { * @param swap The Balancer swap to encode. */ public encodeSwapStep(...swaps: Swap[]): void { - this._swaps.push( - ...swaps.map((swap) => encodeSwapStep(this._tokens, swap)), - ); + this._swaps.push(...swaps.map((swap) => encodeSwapStep(this._tokens, swap))) } /** @@ -174,20 +179,15 @@ export class SwapEncoder { * @param order The order of the trade to encode. * @param signature The signature for the order data. */ - public encodeTrade( - order: Order, - signature: Signature, - swapExecution?: Partial, - ): void { + public encodeTrade(order: Order, signature: Signature, swapExecution?: Partial): void { const { limitAmount } = { - limitAmount: - order.kind == OrderKind.SELL ? order.buyAmount : order.sellAmount, + limitAmount: order.kind == OrderKind.SELL ? order.buyAmount : order.sellAmount, ...swapExecution, - }; + } this._trade = encodeTrade(this._tokens, order, signature, { executedAmount: limitAmount, - }); + }) } /** @@ -204,8 +204,8 @@ export class SwapEncoder { scheme: EcdsaSigningScheme, swapExecution?: Partial, ): Promise { - const signature = await signOrder(this.domain, order, owner, scheme); - this.encodeTrade(order, signature, swapExecution); + const signature = await signOrder(this.domain, order, owner, scheme) + this.encodeTrade(order, signature, swapExecution) } /** @@ -214,20 +214,16 @@ export class SwapEncoder { * This method with raise an exception if a trade has not been encoded. */ public encodedSwap(): EncodedSwap { - return [this.swaps, this.tokens, this.trade]; + return [this.swaps, this.tokens, this.trade] } - public static encodeSwap( - swaps: Swap[], - order: Order, - signature: Signature, - ): EncodedSwap; + public static encodeSwap(swaps: Swap[], order: Order, signature: Signature): EncodedSwap public static encodeSwap( swaps: Swap[], order: Order, signature: Signature, swapExecution: Partial | undefined, - ): EncodedSwap; + ): EncodedSwap public static encodeSwap( domain: TypedDataDomain, @@ -235,7 +231,7 @@ export class SwapEncoder { order: Order, owner: Signer, scheme: EcdsaSigningScheme, - ): Promise; + ): Promise public static encodeSwap( domain: TypedDataDomain, swaps: Swap[], @@ -243,7 +239,7 @@ export class SwapEncoder { owner: Signer, scheme: EcdsaSigningScheme, swapExecution: Partial | undefined, - ): Promise; + ): Promise /** * Utility method for encoding a direct swap between an order and Balancer @@ -257,14 +253,7 @@ export class SwapEncoder { | [Swap[], Order, Signature] | [Swap[], Order, Signature, Partial | undefined] | [TypedDataDomain, Swap[], Order, Signer, EcdsaSigningScheme] - | [ - TypedDataDomain, - Swap[], - Order, - Signer, - EcdsaSigningScheme, - Partial | undefined, - ] + | [TypedDataDomain, Swap[], Order, Signer, EcdsaSigningScheme, Partial | undefined] ): EncodedSwap | Promise { if (args.length < 5) { const [swaps, order, signature, swapExecution] = args as unknown as [ @@ -272,28 +261,25 @@ export class SwapEncoder { Order, Signature, Partial | undefined, - ]; + ] - const encoder = new SwapEncoder({}); - encoder.encodeSwapStep(...swaps); - encoder.encodeTrade(order, signature, swapExecution); - return encoder.encodedSwap(); + const encoder = new SwapEncoder({}) + encoder.encodeSwapStep(...swaps) + encoder.encodeTrade(order, signature, swapExecution) + return encoder.encodedSwap() } else { - const [domain, swaps, order, owner, scheme, swapExecution] = - args as unknown as [ - TypedDataDomain, - Swap[], - Order, - Signer, - EcdsaSigningScheme, - Partial | undefined, - ]; + const [domain, swaps, order, owner, scheme, swapExecution] = args as unknown as [ + TypedDataDomain, + Swap[], + Order, + Signer, + EcdsaSigningScheme, + Partial | undefined, + ] - const encoder = new SwapEncoder(domain); - encoder.encodeSwapStep(...swaps); - return encoder - .signEncodeTrade(order, owner, scheme, swapExecution) - .then(() => encoder.encodedSwap()); + const encoder = new SwapEncoder(domain) + encoder.encodeSwapStep(...swaps) + return encoder.signEncodeTrade(order, owner, scheme, swapExecution).then(() => encoder.encodedSwap()) } } } diff --git a/packages/contracts-ts/src/types.ts b/packages/contracts-ts/src/types.ts new file mode 100644 index 000000000..bb01f79ab --- /dev/null +++ b/packages/contracts-ts/src/types.ts @@ -0,0 +1,173 @@ +import { BigIntish, Bytes, SignatureLike } from '@cowprotocol/sdk-common' +import { Eip1271Signature, PreSignSignature } from './sign' +import { TradeExecution } from './settlement' +import { HashLike, NormalizedOrder, OrderBalance, Timestamp } from './order' + +/** + * The signing scheme used to sign the order. + */ +export enum SigningScheme { + /** + * The EIP-712 typed data signing scheme. This is the preferred scheme as it + * provides more infomation to wallets performing the signature on the data + * being signed. + * + * + */ + EIP712 = 0b00, + /** + * Message signed using eth_sign RPC call. + */ + ETHSIGN = 0b01, + /** + * Smart contract signatures as defined in EIP-1271. + * + * + */ + EIP1271 = 0b10, + /** + * Pre-signed order. + */ + PRESIGN = 0b11, +} + +export type EcdsaSigningScheme = SigningScheme.EIP712 | SigningScheme.ETHSIGN + +/** + * The signature of an order. + */ +export type Signature = EcdsaSignature | Eip1271Signature | PreSignSignature + +/** + * ECDSA signature of an order. + */ +export interface EcdsaSignature { + /** + * The signing scheme used in the signature. + */ + scheme: EcdsaSigningScheme + /** + * The ECDSA signature. + */ + data: SignatureLike +} + +/** + * Trade parameters used in a settlement. + */ +export type Trade = TradeExecution & + Omit< + NormalizedOrder, + 'sellToken' | 'buyToken' | 'kind' | 'partiallyFillable' | 'sellTokenBalance' | 'buyTokenBalance' + > & { + /** + * The index of the sell token in the settlement. + */ + sellTokenIndex: BigIntish + /** + * The index of the buy token in the settlement. + */ + buyTokenIndex: BigIntish + /** + * Encoded order flags. + */ + flags: BigIntish + /** + * Signature data. + */ + signature: Bytes + } + +/** + * Gnosis Protocol v2 order data. + */ +export interface Order { + /** + * Sell token address. + */ + sellToken: string + /** + * Buy token address. + */ + buyToken: string + /** + * An optional address to receive the proceeds of the trade instead of the + * owner (i.e. the order signer). + */ + receiver?: string + /** + * The order sell amount. + * + * For fill or kill sell orders, this amount represents the exact sell amount + * that will be executed in the trade. For fill or kill buy orders, this + * amount represents the maximum sell amount that can be executed. For partial + * fill orders, this represents a component of the limit price fraction. + */ + sellAmount: BigIntish + /** + * The order buy amount. + * + * For fill or kill sell orders, this amount represents the minimum buy amount + * that can be executed in the trade. For fill or kill buy orders, this amount + * represents the exact buy amount that will be executed. For partial fill + * orders, this represents a component of the limit price fraction. + */ + buyAmount: BigIntish + /** + * The timestamp this order is valid until + */ + validTo: Timestamp + /** + * Arbitrary application specific data that can be added to an order. This can + * also be used to ensure uniqueness between two orders with otherwise the + * exact same parameters. + */ + appData: HashLike + /** + * Fee to give to the protocol. + */ + feeAmount: BigIntish + /** + * The order kind. + */ + kind: OrderKind + /** + * Specifies whether or not the order is partially fillable. + */ + partiallyFillable: boolean + /** + * Specifies how the sell token balance will be withdrawn. It can either be + * taken using ERC20 token allowances made directly to the Vault relayer + * (default) or using Balancer Vault internal or external balances. + */ + sellTokenBalance?: OrderBalance + /** + * Specifies how the buy token balance will be paid. It can either be paid + * directly in ERC20 tokens (default) in Balancer Vault internal balances. + */ + buyTokenBalance?: OrderBalance +} + +/** + * Gnosis Protocol v2 order cancellation data. + */ +export interface OrderCancellations { + /** + * The unique identifier of the order to be cancelled. + */ + orderUids: Bytes[] +} + +/** + * Order kind. + */ +export enum OrderKind { + /** + * A sell order. + */ + SELL = 'sell', + /** + * A buy order. + */ + BUY = 'buy', +} diff --git a/packages/contracts-ts/src/types/ethers.ts b/packages/contracts-ts/src/types/ethers.ts deleted file mode 100644 index 5399869ff..000000000 --- a/packages/contracts-ts/src/types/ethers.ts +++ /dev/null @@ -1,48 +0,0 @@ -import type { JsonRpcProvider, Provider } from "@ethersproject/providers"; -import type { ethers, Signer } from "ethers"; - -/** - * A signature-like type. - */ -export type SignatureLike = Parameters[0]; - -/** - * EIP-712 typed data domain. - */ -export type TypedDataDomain = Parameters< - typeof ethers.utils._TypedDataEncoder.hashDomain ->[0]; - -/** - * EIP-712 typed data type definitions. - */ -export type TypedDataTypes = Parameters< - typeof ethers.utils._TypedDataEncoder.hashStruct ->[1]; - -/** - * Ethers EIP-712 typed data signer interface. - */ -export interface TypedDataSigner extends Signer { - /** - * Signs the typed data value with types data structure for domain using the - * EIP-712 specification. - */ - _signTypedData: typeof ethers.VoidSigner.prototype._signTypedData; -} - -/** - * Checks whether the specified signer is a typed data signer. - */ -export function isTypedDataSigner(signer: Signer): signer is TypedDataSigner { - return "_signTypedData" in signer; -} - -/** - * Checks whether the specified provider is a JSON RPC provider. - */ -export function isJsonRpcProvider( - provider: Provider, -): provider is JsonRpcProvider { - return "send" in provider; -} diff --git a/packages/contracts-ts/src/vault.ts b/packages/contracts-ts/src/vault.ts index 3bce55ba5..7a58a8344 100644 --- a/packages/contracts-ts/src/vault.ts +++ b/packages/contracts-ts/src/vault.ts @@ -1,15 +1,4 @@ -import { ethers, Contract } from "ethers"; - -/** - * Balancer Vault partial ABI interface. - * - * This definition only contains the Vault methods that are used by GPv2 Vault - * relayer. It is copied here to avoid relying on build artifacts. - */ -export const VAULT_INTERFACE = new ethers.utils.Interface([ - "function manageUserBalance((uint8, address, uint256, address, address)[])", - "function batchSwap(uint8, (bytes32, uint256, uint256, uint256, bytes)[], address[], (address, bool, address, bool), int256[], uint256)", -]); +import { Abi, getGlobalAdapter } from '@cowprotocol/sdk-common' /** * Grants the required roles to the specified Vault relayer. @@ -18,22 +7,24 @@ export const VAULT_INTERFACE = new ethers.utils.Interface([ * traders. It is included in the exported TypeScript library for completeness * and "documentation". * - * @param authorizer The Vault authorizer contract that manages access. + * @param authorizerAddress The address of the Vault authorizer contract that manages access. + * @param authorizerAbi The ABI of the authorizer contract. * @param vaultAddress The address to the Vault. * @param vaultRelayerAddress The address to the GPv2 Vault relayer contract. + * @param contractCall Function to execute the contract call (provided by the adapter). */ export async function grantRequiredRoles( - authorizer: Contract, + authorizerAddress: string, + authorizerAbi: Abi, vaultAddress: string, vaultRelayerAddress: string, + contractCall: (address: string, abi: Abi, functionName: string, args: unknown[]) => Promise, ): Promise { - for (const name in VAULT_INTERFACE.functions) { - await authorizer.grantRole( - ethers.utils.solidityKeccak256( - ["uint256", "bytes4"], - [vaultAddress, VAULT_INTERFACE.getSighash(name)], - ), - vaultRelayerAddress, - ); - } + return getGlobalAdapter().utils.grantRequiredRoles( + authorizerAddress, + authorizerAbi, + vaultAddress, + vaultRelayerAddress, + contractCall, + ) } diff --git a/packages/contracts-ts/tsconfig.json b/packages/contracts-ts/tsconfig.json index 6173d9fb9..4f20a54d8 100644 --- a/packages/contracts-ts/tsconfig.json +++ b/packages/contracts-ts/tsconfig.json @@ -1,8 +1,7 @@ { "extends": "../../packages/typescript-config/base.json", "compilerOptions": { - "outDir": "./dist", - "types": ["jest"] + "outDir": "./dist" }, "include": ["src/**/*", "tests/**/*"], "exclude": ["node_modules", "dist"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 381969901..f6c31506b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -146,6 +146,55 @@ importers: specifier: ^5.2.2 version: 5.8.3 + packages/contracts-ts: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../common + '@cowprotocol/sdk-config': + specifier: workspace:* + version: link:../config + devDependencies: + '@cowprotocol/sdk-ethers-v5-adapter': + specifier: workspace:* + version: link:../providers/ether-v5-adapter + '@cowprotocol/sdk-ethers-v6-adapter': + specifier: workspace:* + version: link:../providers/ether-v6-adapter + '@cowprotocol/sdk-viem-adapter': + specifier: workspace:* + version: link:../providers/viem-adapter + '@types/jest': + specifier: ^29.5.5 + version: 29.5.14 + '@types/node': + specifier: ^20.17.31 + version: 20.17.51 + eslint: + specifier: ^8.48.0 + version: 8.57.1 + ethers-v5: + specifier: npm:ethers@^5.7.2 + version: ethers@5.8.0 + ethers-v6: + specifier: npm:ethers@^6.13.7 + version: ethers@6.14.3 + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + ts-jest: + specifier: ^29.1.1 + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3) + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.3)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))(typescript@5.8.3) + typescript: + specifier: ^5.2.2 + version: 5.8.3 + viem: + specifier: ^2.28.4 + version: 2.30.4(typescript@5.8.3) + packages/cow-sdk: dependencies: '@cowprotocol/app-data': @@ -2568,6 +2617,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -6130,6 +6183,30 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-jest@29.3.4: + resolution: {integrity: sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + ts-json-schema-generator@2.4.0: resolution: {integrity: sha512-HbmNsgs58CfdJq0gpteRTxPXG26zumezOs+SB9tgky6MpqiFgQwieCn2MW70+sxpHouZ/w9LW0V6L4ZQO4y1Ug==} engines: {node: '>=18.0.0'} @@ -6256,6 +6333,10 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -8432,6 +8513,41 @@ snapshots: - supports-color - ts-node + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3))': + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.17.51 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 @@ -9519,6 +9635,10 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.5) + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -9881,6 +10001,21 @@ snapshots: - supports-color - ts-node + create-jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + create-jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 @@ -11632,6 +11767,25 @@ snapshots: - supports-color - ts-node + jest-cli@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + exit: 0.1.2 + import-local: 3.2.0 + jest-config: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest-cli@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -11682,6 +11836,37 @@ snapshots: - babel-plugin-macros - supports-color + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@babel/core': 7.27.1 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.8 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.17.51 + ts-node: 10.9.2(@types/node@20.17.51)(typescript@5.8.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + jest-config@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.1 @@ -12017,6 +12202,18 @@ snapshots: - supports-color - ts-node + jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)): + dependencies: + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + '@jest/types': 29.6.3 + import-local: 3.2.0 + jest-cli: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + jest@29.7.0(@types/node@22.15.21)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)): dependencies: '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@22.15.21)(typescript@5.8.3)) @@ -14023,6 +14220,26 @@ snapshots: ts-interface-checker@0.1.13: {} + ts-jest@29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(jest@29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)))(typescript@5.8.3): + dependencies: + bs-logger: 0.2.6 + ejs: 3.1.10 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.17.51)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.51)(typescript@5.8.3)) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.7.2 + type-fest: 4.41.0 + typescript: 5.8.3 + yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.27.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.27.1) + ts-json-schema-generator@2.4.0: dependencies: '@types/json-schema': 7.0.15 @@ -14204,6 +14421,8 @@ snapshots: type-fest@0.8.1: {} + type-fest@4.41.0: {} + type@2.7.3: {} typechain@8.3.2(typescript@5.8.3): From aadd9a74771876c21339bfb4731654656a325d96 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 13:14:30 -0300 Subject: [PATCH 23/33] feat: update adapters with new contracts-ts features --- eslint.config.js | 6 +- .../ether-v5-adapter/src/EthersV5Adapter.ts | 35 ++ .../src/EthersV5SignerAdapter.ts | 202 ++++++++++++ .../ether-v5-adapter/src/EthersV5Utils.ts | 172 +++++++++- .../ether-v6-adapter/src/EthersV6Adapter.ts | 53 ++- .../src/EthersV6SignerAdapter.ts | 162 +++++++++ .../ether-v6-adapter/src/EthersV6Utils.ts | 229 ++++++++++++- .../providers/viem-adapter/src/ViemAdapter.ts | 87 ++++- .../viem-adapter/src/ViemSignerAdapter.ts | 251 ++++++++++++++ .../providers/viem-adapter/src/ViemUtils.ts | 308 +++++++++++++++++- 10 files changed, 1495 insertions(+), 10 deletions(-) create mode 100644 packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts create mode 100644 packages/providers/ether-v6-adapter/src/EthersV6SignerAdapter.ts create mode 100644 packages/providers/viem-adapter/src/ViemSignerAdapter.ts diff --git a/eslint.config.js b/eslint.config.js index e9105b2fd..0b97fd54a 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -4,7 +4,7 @@ import unusedImports from 'eslint-plugin-unused-imports' export default [ { - ignores: ['**/generated/*'], + ignores: ['**/generated/*', '**/jest.config.ts'], }, eslint.configs.recommended, ...tseslint.configs.recommended, @@ -16,12 +16,12 @@ export default [ languageOptions: { parser: tseslint.parser, parserOptions: { - project: './packages/*/tsconfig.json', + project: ['./packages/*/tsconfig.json', './packages/providers/*/tsconfig.json'], }, }, rules: { '@typescript-eslint/no-non-null-assertion': 'error', - '@typescript-eslint/no-explicit-any': 'error', + '@typescript-eslint/no-explicit-any': 'off', 'no-prototype-builtins': 'off', 'unused-imports/no-unused-imports': 'error', 'unused-imports/no-unused-vars': [ diff --git a/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts index 6e488ac31..f9a5388cc 100644 --- a/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts +++ b/packages/providers/ether-v5-adapter/src/EthersV5Adapter.ts @@ -2,12 +2,26 @@ import { BigNumberish, BytesLike, ethers } from 'ethers' import type { TypedDataDomain, TypedDataField, TypedDataSigner } from '@ethersproject/abstract-signer' import { AbstractProviderAdapter, AdapterTypes } from '@cowprotocol/sdk-common' import { EthersV5Utils } from './EthersV5Utils' +import { + EthersV5SignerAdapter, + IntChainIdTypedDataV4Signer, + TypedDataV3Signer, + TypedDataVersionedSigner, +} from './EthersV5SignerAdapter' type Abi = ConstructorParameters[0] type Interface = ethers.utils.Interface export interface EthersV5Types extends AdapterTypes { + Abi: Abi + Address: string Bytes: BytesLike + BigIntish: BigNumberish + ContractInterface: Interface + Provider: ethers.providers.Provider + Signer: ethers.Signer + TypedDataDomain: TypedDataDomain + TypedDataTypes: Record } export class EthersV5Adapter extends AbstractProviderAdapter { @@ -16,9 +30,14 @@ export class EthersV5Adapter extends AbstractProviderAdapter { private provider: ethers.providers.Provider private signer: ethers.Signer & TypedDataSigner public utils: EthersV5Utils + public Signer = EthersV5SignerAdapter + public TypedDataVersionedSigner = TypedDataVersionedSigner + public TypedDataV3Signer = TypedDataV3Signer + public IntChainIdTypedDataV4Signer = IntChainIdTypedDataV4Signer constructor(providerOrSigner: ethers.providers.Provider | ethers.Signer) { super() + this.ZERO_ADDRESS = ethers.constants.AddressZero if (ethers.Signer.isSigner(providerOrSigner)) { this.signer = providerOrSigner as ethers.Signer & TypedDataSigner @@ -44,4 +63,20 @@ export class EthersV5Adapter extends AbstractProviderAdapter { async getAddress(): Promise { return this.signer.getAddress() } + + async signMessage(message: string | Uint8Array): Promise { + return this.signer.signMessage(message) + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + return this.signer._signTypedData(domain, types, value) + } + + async getStorageAt(address: string, slot: BigNumberish): Promise { + return this.provider.getStorageAt(address, slot) + } } diff --git a/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts b/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts new file mode 100644 index 000000000..8a96b91d3 --- /dev/null +++ b/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts @@ -0,0 +1,202 @@ +import { Signer, BigNumber, TypedDataDomain, TypedDataField, ethers } from 'ethers' +import { AbstractSigner, TransactionParams, TransactionResponse } from '@cowprotocol/sdk-common' +import { TypedDataSigner } from '@ethersproject/abstract-signer' + +export class EthersV5SignerAdapter extends AbstractSigner { + private _signer: Signer & TypedDataSigner + + constructor(signer: Signer & TypedDataSigner) { + super() + this._signer = signer + } + + async getAddress(): Promise { + return await this._signer.getAddress() + } + + async signMessage(message: string | Uint8Array): Promise { + return await this._signer.signMessage(message) + } + + async signTransaction(txParams: TransactionParams): Promise { + // Ethers v5 doesn't expose a direct signTransaction method on the Signer class + // This is a workaround using a private method, but might not work for all signers + if ('_signTransaction' in this._signer) { + return await this._signer.signTransaction(this._formatTxParams(txParams)) + } + throw new Error('signTransaction not supported by this ethers v5 signer') + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + return await this._signer._signTypedData(domain, types, value) + } + + async sendTransaction(txParams: TransactionParams): Promise { + const tx = await this._signer.sendTransaction(this._formatTxParams(txParams)) + return { + hash: tx.hash, + wait: async (confirmations?: number) => { + const receipt = await tx.wait(confirmations) + return { + transactionHash: receipt.transactionHash, + blockNumber: receipt.blockNumber, + blockHash: receipt.blockHash, + status: receipt.status, + gasUsed: BigInt(receipt.gasUsed.toString()), + logs: receipt.logs, + } + }, + } + } + + private _formatTxParams(txParams: TransactionParams) { + // Convert bigint values to BigNumber for ethers v5 + // eslint-disable-next-line + const formatted: any = { ...txParams } + + if (typeof formatted.value === 'bigint') { + formatted.value = BigNumber.from(formatted.value.toString()) + } + + if (typeof formatted.gasLimit === 'bigint') { + formatted.gasLimit = BigNumber.from(formatted.gasLimit.toString()) + } + + if (typeof formatted.gasPrice === 'bigint') { + formatted.gasPrice = BigNumber.from(formatted.gasPrice.toString()) + } + + if (typeof formatted.maxFeePerGas === 'bigint') { + formatted.maxFeePerGas = BigNumber.from(formatted.maxFeePerGas.toString()) + } + + if (typeof formatted.maxPriorityFeePerGas === 'bigint') { + formatted.maxPriorityFeePerGas = BigNumber.from(formatted.maxPriorityFeePerGas.toString()) + } + + return formatted + } +} + +import { _TypedDataEncoder } from 'ethers/lib/utils' + +export class TypedDataVersionedSigner extends EthersV5SignerAdapter { + private _signMethod: string + private signer: ethers.Signer + private provider: ethers.providers.JsonRpcProvider + + constructor(signer: Signer & TypedDataSigner, version: 'v3' | 'v4' = 'v3') { + super(signer) + const versionSuffix = version ? '_' + version : '' + this._signMethod = 'eth_signTypedData' + versionSuffix + this.signer = signer + + if (!signer.provider) { + throw new Error('Signer does not have a provider set') + } + if (!('send' in signer.provider)) { + throw new Error('Provider must be of type JsonRpcProvider') + } + + this.provider = signer.provider as ethers.providers.JsonRpcProvider + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => + this.resolveName(name), + ) + + const payload = _TypedDataEncoder.getPayload(populated.domain, types, populated.value) + const msg = JSON.stringify(payload) + const address = await this.getAddress() + + // Use the provider from the underlying signer + if (!this.provider) { + throw new Error('Signer does not have a provider set') + } + + return await this.provider.send(this._signMethod, [address.toLowerCase(), msg]) + } + + private async resolveName(name: string): Promise { + // Delegate to the underlying signer's resolveName if available + if (this.signer.resolveName) { + return await this.signer.resolveName(name) + } + return name + } +} + +/** + * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData` using + * `eth_signTypedData_v3` instead of `eth_signTypedData_v4`. + * + * Takes a Signer instance on creation. + * All other Signer methods are proxied to initial instance. + */ +export class TypedDataV3Signer extends TypedDataVersionedSigner { + constructor(signer: Signer & TypedDataSigner) { + super(signer, 'v3') + } +} + +export class IntChainIdTypedDataV4Signer extends EthersV5SignerAdapter { + private signer: ethers.Signer & TypedDataSigner + private provider: ethers.providers.JsonRpcProvider + _isSigner = true + + constructor(signer: Signer & TypedDataSigner) { + super(signer) + this.signer = signer + + if (!signer.provider) { + throw new Error('Signer does not have a provider set') + } + if (!('send' in signer.provider)) { + throw new Error('Provider must be of type JsonRpcProvider') + } + + this.provider = signer.provider as ethers.providers.JsonRpcProvider + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + const populated = await _TypedDataEncoder.resolveNames(domain, types, value, (name: string) => + this.resolveName(name), + ) + + const payload = _TypedDataEncoder.getPayload(populated.domain, types, populated.value) + + // Fix MetaMask chainId issue - convert to number + if (payload.domain.chainId) { + payload.domain.chainId = parseInt(payload.domain.chainId.toString(), 10) + } + + const msg = JSON.stringify(payload) + const address = await this.getAddress() + + if (!this.signer.provider) { + throw new Error('Signer does not have a provider set') + } + + return await this.provider.send('eth_signTypedData_v4', [address.toLowerCase(), msg]) + } + + private async resolveName(name: string): Promise { + if (this.signer.resolveName) { + return await this.signer.resolveName(name) + } + return name + } +} diff --git a/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts b/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts index 0e0263ff6..2a46eca75 100644 --- a/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts +++ b/packages/providers/ether-v5-adapter/src/EthersV5Utils.ts @@ -1,16 +1,184 @@ -import { AdapterUtils } from '@cowprotocol/sdk-common' -import { BytesLike, ethers } from 'ethers' +import { AdapterUtils, Address } from '@cowprotocol/sdk-common' +import { BigNumberish, BytesLike, ethers, TypedDataDomain, TypedDataField } from 'ethers' + +type Abi = ConstructorParameters[0] export class EthersV5Utils implements AdapterUtils { toUtf8Bytes(text: string): Uint8Array { return ethers.utils.toUtf8Bytes(text) } + createInterface(abi: Abi): ethers.utils.Interface { + return new ethers.utils.Interface(abi) + } + + getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string { + return ethers.utils.getCreate2Address(from, salt, initCodeHash) + } + + hexConcat(items: ReadonlyArray): string { + return ethers.utils.hexConcat(items) + } + + formatBytes32String(text: string): string { + return ethers.utils.formatBytes32String(text) + } + + encodeDeploy(encodeDeployArgs: unknown[], abi: Abi) { + const contractInterface = new ethers.utils.Interface(abi) + return contractInterface.encodeDeploy(encodeDeployArgs) + } + keccak256(data: BytesLike) { return ethers.utils.keccak256(data) } + hexZeroPad(value: BytesLike, length: number): string { + return ethers.utils.hexZeroPad(value, length) + } + arrayify(hexString: string): Uint8Array { return ethers.utils.arrayify(hexString) } + + hexlify(value: BytesLike): string { + return ethers.utils.hexlify(value) + } + + solidityPack(types: string[], values: unknown[]): string { + return ethers.utils.solidityPack(types, values) + } + + hashTypedData( + domain: TypedDataDomain, + types: Record, + data: Record, + ): string { + return ethers.utils._TypedDataEncoder.hash(domain, types, data) + } + + getChecksumAddress(address: string): string { + return ethers.utils.getAddress(address) + } + + encodeAbi(types: string[], values: unknown[]): BytesLike { + return ethers.utils.defaultAbiCoder.encode(types, values) + } + + decodeAbi(types: string[], data: BytesLike): unknown[] { + return ethers.utils.defaultAbiCoder.decode(types, data) as unknown[] + } + + id(text: string): BytesLike { + return ethers.utils.id(text) + } + + toBigIntish(value: BytesLike | string | number): BigNumberish { + return ethers.BigNumber.from(value) + } + + newBigintish(value: number | string): BigNumberish { + return ethers.BigNumber.from(value) + } + + hexDataSlice(data: BytesLike, offset: number, endOffset?: number): BytesLike { + return ethers.utils.hexDataSlice(data, offset, endOffset) + } + + joinSignature(signature: { r: string; s: string; v: number }): string { + return ethers.utils.joinSignature(signature) + } + + splitSignature(signature: BytesLike): { r: string; s: string; v: number } { + const split = ethers.utils.splitSignature(signature) + return { + r: split.r, + s: split.s, + v: split.v, + } + } + + verifyMessage(message: string | Uint8Array, signature: BytesLike): string { + return ethers.utils.verifyMessage(message, signature) + } + + verifyTypedData( + domain: TypedDataDomain, + types: Record>, + value: Record, + signature: BytesLike, + ): string { + return ethers.utils.verifyTypedData(domain, types, value, signature) + } + + encodeFunction( + abi: Array<{ name: string; inputs: Array<{ type: string }> }>, + functionName: string, + args: unknown[], + ): BytesLike { + const iface = new ethers.utils.Interface(abi) + return iface.encodeFunctionData(functionName, args) + } + + toNumber(value: BigNumberish): number { + return ethers.BigNumber.from(value).toNumber() + } + + solidityKeccak256(types: string[], values: unknown[]): unknown { + return ethers.utils.solidityKeccak256(types, values) + } + + async grantRequiredRoles( + authorizerAddress: string, + authorizerAbi: Abi, + vaultAddress: string, + vaultRelayerAddress: string, + contractCall: (address: string, abi: Abi, functionName: string, args: unknown[]) => Promise, + ): Promise { + /** + * Balancer Vault partial ABI interface. + * + * This definition only contains the Vault methods that are used by GPv2 Vault + * relayer. It is copied here to avoid relying on build artifacts. + */ + const vaultAbi = [ + 'function manageUserBalance((uint8, address, uint256, address, address)[])', + 'function batchSwap(uint8, (bytes32, uint256, uint256, uint256, bytes)[], address[], (address, bool, address, bool), int256[], uint256)', + ] + + // Create interface using ethers utils + const vaultInterface = new ethers.utils.Interface(vaultAbi) + + // Iterate through all functions in the interface + for (const name in vaultInterface.functions) { + // Get function selector (first 4 bytes of function signature hash) + const functionSelector = vaultInterface.getSighash(name) + + // Compute role hash using solidityKeccak256 + const roleHash = ethers.utils.solidityKeccak256(['uint256', 'bytes4'], [vaultAddress, functionSelector]) + + // Call grantRole on the authorizer contract + await contractCall(authorizerAddress, authorizerAbi, 'grantRole', [roleHash, vaultRelayerAddress]) + } + } + + async readStorage( + baseAddress: Address, + baseAbi: Abi, + readerAddress: Address, + readerAbi: Abi, + provider: ethers.providers.JsonRpcProvider, + method: string, + parameters: unknown[], + ) { + const base = new ethers.Contract(baseAddress, baseAbi, provider) + const reader = new ethers.Contract(readerAddress, readerAbi, provider) + + const encodedCall = reader.interface.encodeFunctionData(method, parameters) + if (!base.callStatic.simulateDelegatecall) { + throw new Error('simulateDelegatecall method not found on base contract') + } + const resultBytes = await base.callStatic.simulateDelegatecall(reader.address, encodedCall) + return reader.interface.decodeFunctionResult(method, resultBytes)[0] + } } diff --git a/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts b/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts index 8094d1424..9fa6cf1a0 100644 --- a/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts +++ b/packages/providers/ether-v6-adapter/src/EthersV6Adapter.ts @@ -1,20 +1,53 @@ -import { Provider, Signer, VoidSigner, JsonRpcSigner, Wallet, BytesLike } from 'ethers' +import { + Provider, + Signer, + VoidSigner, + JsonRpcSigner, + Wallet, + BytesLike, + ZeroAddress, + TypedDataDomain, + TypedDataField, + BigNumberish, + Interface, +} from 'ethers' import { AbstractProviderAdapter, AdapterTypes } from '@cowprotocol/sdk-common' +import { EthersV6Utils } from './EthersV6Utils' +import { + EthersV6SignerAdapter, + IntChainIdTypedDataV4Signer, + TypedDataV3Signer, + TypedDataVersionedSigner, +} from './EthersV6SignerAdapter' + +type Abi = ConstructorParameters[0] export interface EthersV6Types extends AdapterTypes { + Abi: Abi + Address: string Bytes: BytesLike + BigIntish: BigNumberish + ContractInterface: Interface + Provider: Provider + Signer: Signer + TypedDataDomain: TypedDataDomain + TypedDataTypes: Record } -import { EthersV6Utils } from './EthersV6Utils' export class EthersV6Adapter extends AbstractProviderAdapter { declare protected _type?: EthersV6Types private provider: Provider private signer: Signer + public Signer = EthersV6SignerAdapter + public TypedDataVersionedSigner = TypedDataVersionedSigner + public TypedDataV3Signer = TypedDataV3Signer + public IntChainIdTypedDataV4Signer = IntChainIdTypedDataV4Signer public utils: EthersV6Utils constructor(providerOrSigner: Provider | Signer) { super() + this.ZERO_ADDRESS = ZeroAddress if ( providerOrSigner instanceof JsonRpcSigner || providerOrSigner instanceof VoidSigner || @@ -41,4 +74,20 @@ export class EthersV6Adapter extends AbstractProviderAdapter { async getAddress(): Promise { return this.signer.getAddress() } + + async signMessage(message: string | Uint8Array): Promise { + return this.signer.signMessage(message) + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + return this.signer.signTypedData(domain, types, value) + } + + async getStorageAt(address: string, slot: BigNumberish): Promise { + return this.provider.getStorage(address, slot) + } } diff --git a/packages/providers/ether-v6-adapter/src/EthersV6SignerAdapter.ts b/packages/providers/ether-v6-adapter/src/EthersV6SignerAdapter.ts new file mode 100644 index 000000000..bf495fbf0 --- /dev/null +++ b/packages/providers/ether-v6-adapter/src/EthersV6SignerAdapter.ts @@ -0,0 +1,162 @@ +import { Log, Signer, TypedDataDomain, TypedDataField, TypedDataEncoder, JsonRpcProvider } from 'ethers' +import { AbstractSigner, TransactionParams, TransactionResponse } from '@cowprotocol/sdk-common' + +export class EthersV6SignerAdapter extends AbstractSigner { + private _signer: Signer + + constructor(signer: Signer) { + super() + this._signer = signer + } + + async getAddress(): Promise { + return await this._signer.getAddress() + } + + async signMessage(message: string | Uint8Array): Promise { + return await this._signer.signMessage(message) + } + + async signTransaction(txParams: TransactionParams): Promise { + return await this._signer.signTransaction(this._formatTxParams(txParams)) + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + return await this._signer.signTypedData(domain, types, value) + } + + async sendTransaction(txParams: TransactionParams): Promise { + const tx = await this._signer.sendTransaction(this._formatTxParams(txParams)) + return { + hash: tx.hash, + wait: async (confirmations?: number) => { + if (confirmations === null) throw new Error('unexpected') + const receipt = await tx.wait(confirmations) + if (!receipt) { + throw new Error('Transaction failed') + } + return { + transactionHash: receipt.hash, + blockNumber: receipt.blockNumber, + blockHash: receipt.blockHash || '', + status: receipt.status || 0, + gasUsed: receipt.gasUsed, + logs: receipt.logs as Log[], + } + }, + } + } + + private _formatTxParams(txParams: TransactionParams) { + // No need to convert bigint in ethers v6, as it's natively supported + return { ...txParams } + } +} + +export class TypedDataVersionedSigner extends EthersV6SignerAdapter { + private _signMethod: string + private signer: Signer + private provider: JsonRpcProvider + + constructor(signer: Signer, version?: 'v3' | 'v4') { + super(signer) + const versionSuffix = version ? '_' + version : '' + this._signMethod = 'eth_signTypedData' + versionSuffix + this.signer = signer + + if (!signer.provider) throw new Error('Signer must be connected to a provider') + + this.provider = signer.provider as JsonRpcProvider + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + const populated = await TypedDataEncoder.resolveNames(domain, types, value, (name: string) => + this.resolveName(name), + ) + + const payload = TypedDataEncoder.getPayload(populated.domain, types, populated.value) + const msg = JSON.stringify(payload) + const address = await this.getAddress() + + if (!this.provider) { + throw new Error('Provider is not set') + } + + return await this.provider.send(this._signMethod, [address.toLowerCase(), msg]) + } + + private async resolveName(name: string): Promise { + if (this.signer.resolveName) { + return (await this.signer.resolveName(name)) ?? '' + } + return name + } +} + +/** + * Wrapper around a TypedDataSigner Signer object that implements `_signTypedData` using + * `eth_signTypedData_v3` instead of `eth_signTypedData_v4`. + * + * Takes a Signer instance on creation. + * All other Signer methods are proxied to initial instance. + */ +export class TypedDataV3Signer extends TypedDataVersionedSigner { + constructor(signer: Signer) { + super(signer, 'v3') + } +} + +export class IntChainIdTypedDataV4Signer extends EthersV6SignerAdapter { + private signer: Signer + private provider: JsonRpcProvider + _isSigner = true + + constructor(signer: Signer) { + super(signer) + this.signer = signer + if (!signer.provider) throw new Error('Signer must be connected to a provider') + + this.provider = signer.provider as JsonRpcProvider + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + const populated = await TypedDataEncoder.resolveNames(domain, types, value, (name: string) => + this.resolveName(name), + ) + + const payload = TypedDataEncoder.getPayload(populated.domain, types, populated.value) + + // Fix MetaMask chainId issue - convert to number + if (payload.domain.chainId) { + payload.domain.chainId = parseInt(payload.domain.chainId.toString(), 10) + } + + const msg = JSON.stringify(payload) + const address = await this.getAddress() + + if (!this.provider) { + throw new Error('Provider is not set') + } + + return await this.provider.send('eth_signTypedData_v4', [address.toLowerCase(), msg]) + } + + private async resolveName(name: string): Promise { + if (this.signer.resolveName) { + return (await this.signer.resolveName(name)) ?? '' + } + return name + } +} diff --git a/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts b/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts index caef49fc8..8e3d944f5 100644 --- a/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts +++ b/packages/providers/ether-v6-adapter/src/EthersV6Utils.ts @@ -1,11 +1,79 @@ import { AdapterUtils } from '@cowprotocol/sdk-common' -import { BytesLike, toUtf8Bytes, keccak256, getBytes } from 'ethers' +import { + Interface, + TypedDataField, + AbiCoder, + getCreate2Address, + concat, + BytesLike, + encodeBytes32String, + toUtf8Bytes, + keccak256, + BigNumberish, + zeroPadValue, + getBytes, + hexlify as ethersHexlify, + solidityPacked, + TypedDataEncoder, + id, + toBigInt, + dataSlice, + Signature, + SignatureLike, + verifyTypedData, + verifyMessage, + InterfaceAbi, + getAddress, + solidityPackedKeccak256, + Contract, + JsonRpcProvider, +} from 'ethers' +import { TypedDataDomain } from 'ethers' + +type Abi = ConstructorParameters[0] export class EthersV6Utils implements AdapterUtils { toUtf8Bytes(text: string): Uint8Array { return toUtf8Bytes(text) } + encodeDeploy(encodeDeployArgs: unknown[], abi: Abi): string { + const abiCoder = new AbiCoder() + const contractInterface = new Interface(abi) + + // Get the constructor fragment + const constructorFragment = contractInterface.getFunction('constructor') + + if (!constructorFragment) { + // No constructor parameters, return empty string + return '0x' + } + + // Encode the constructor parameters + return abiCoder.encode(constructorFragment.inputs, encodeDeployArgs as readonly unknown[]) + } + + getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string { + // Convert BytesLike to ethers BytesLike if necessary + const ethersSalt = this.toEthersBytesLike(salt) + const ethersInitCodeHash = this.toEthersBytesLike(initCodeHash) + + // Use ethers getCreate2Address + return getCreate2Address(from, ethersSalt, ethersInitCodeHash) + } + + hexConcat(items: ReadonlyArray): string { + // Convert each BytesLike to ethers BytesLike + const ethersItems = items.map((item) => this.toEthersBytesLike(item)) + + // Use ethers concat + return concat(ethersItems) + } + + formatBytes32String(text: string): string { + return encodeBytes32String(text) + } + keccak256(data: BytesLike): string { return keccak256(this.toEthersBytesLike(data)) } @@ -16,6 +84,7 @@ export class EthersV6Utils implements AdapterUtils { if (data.startsWith('0x')) { return data } + // Convert string to bytes return toUtf8Bytes(data) } else if (data instanceof Uint8Array) { return data @@ -24,7 +93,165 @@ export class EthersV6Utils implements AdapterUtils { } } + hexZeroPad(value: BytesLike, length: number): string { + return zeroPadValue(value, length) + } + arrayify(hexString: string): Uint8Array { return getBytes(hexString) } + + hexlify(value: Uint8Array): string { + return ethersHexlify(value) + } + + solidityPack(types: string[], values: any[]): string { + return solidityPacked(types, values) + } + + hashTypedData( + domain: TypedDataDomain, + types: Record, + data: Record, + ): string { + return TypedDataEncoder.hash(domain, types, data) + } + + getChecksumAddress(address: string): string { + return getAddress(address) + } + + encodeAbi(types: string[], values: unknown[]): BytesLike { + return AbiCoder.defaultAbiCoder().encode(types, values) + } + + decodeAbi(types: string[], data: BytesLike): unknown[] { + return AbiCoder.defaultAbiCoder().decode(types, data) + } + + id(text: string): BytesLike { + return id(text) + } + + toBigIntish(value: string | number | BigNumberish): BigNumberish { + return toBigInt(value) + } + + newBigintish(value: number | string): BigNumberish { + return toBigInt(value) + } + + hexDataSlice(data: BytesLike, offset: number, endOffset?: number): BytesLike { + return dataSlice(data, offset, endOffset) + } + + joinSignature(signature: { r: string; s: string; v: number }): string { + return Signature.from({ + r: signature.r, + s: signature.s, + v: signature.v, + }).serialized + } + + splitSignature(signature: BytesLike): { r: string; s: string; v: number } { + const sig = Signature.from(signature as SignatureLike) + return { + r: sig.r, + s: sig.s, + v: sig.v, + } + } + + verifyMessage(message: string | Uint8Array, signature: SignatureLike): string { + return verifyMessage(message, signature) + } + + verifyTypedData( + domain: TypedDataDomain, + types: Record>, + value: Record, + signature: SignatureLike, + ): string { + return verifyTypedData(domain, types, value, signature) + } + + encodeFunction( + abi: Array<{ name: string; inputs: Array<{ type: string }> }>, + functionName: string, + args: unknown[], + ): BytesLike { + const iface = new Interface(abi) + return iface.encodeFunctionData(functionName, args) + } + + toNumber(value: BigNumberish): number { + return Number(value.toString()) + } + solidityKeccak256(types: string[], values: unknown[]): unknown { + return solidityPackedKeccak256(types, values) + } + + createInterface(abi: InterfaceAbi): Interface { + return new Interface(abi) + } + + async grantRequiredRoles( + authorizerAddress: string, + authorizerAbi: Abi, + vaultAddress: string, + vaultRelayerAddress: string, + contractCall: (address: string, abi: Abi, functionName: string, args: unknown[]) => Promise, + ): Promise { + /** + * Balancer Vault partial ABI interface. + * + * This definition only contains the Vault methods that are used by GPv2 Vault + * relayer. It is copied here to avoid relying on build artifacts. + */ + const vaultAbi = [ + 'function manageUserBalance((uint8, address, uint256, address, address)[])', + 'function batchSwap(uint8, (bytes32, uint256, uint256, uint256, bytes)[], address[], (address, bool, address, bool), int256[], uint256)', + ] + + // Create interface using ethers v6 + const vaultInterface = new Interface(vaultAbi) + + // Get function names directly from the interface + const functionNames = ['manageUserBalance', 'batchSwap'] + + for (const functionName of functionNames) { + // Get function selector (first 4 bytes of function signature hash) + //eslint-disable-next-line + const functionSelector = vaultInterface.getFunction(functionName)!.selector + + // Compute role hash using solidityPackedKeccak256 + const roleHash = solidityPackedKeccak256(['uint256', 'bytes4'], [vaultAddress, functionSelector]) + + // Call grantRole on the authorizer contract + await contractCall(authorizerAddress, authorizerAbi, 'grantRole', [roleHash, vaultRelayerAddress]) + } + } + + async readStorage( + baseAddress: string, + baseAbi: any[], + readerAddress: string, + readerAbi: any[], + provider: JsonRpcProvider, + method: string, + parameters: unknown[], + ) { + const base = new Contract(baseAddress, baseAbi, provider) + + const readerInterface = new Interface(readerAbi) + const encodedCall = readerInterface.encodeFunctionData(method, parameters) + + if (!base.simulateDelegatecall?.staticCall) { + throw new Error('simulateDelegatecall method not found on base contract') + } + + const resultBytes = await base.simulateDelegatecall.staticCall(readerAddress, encodedCall) + + return readerInterface.decodeFunctionResult(method, resultBytes)[0] + } } diff --git a/packages/providers/viem-adapter/src/ViemAdapter.ts b/packages/providers/viem-adapter/src/ViemAdapter.ts index 617480391..172246614 100644 --- a/packages/providers/viem-adapter/src/ViemAdapter.ts +++ b/packages/providers/viem-adapter/src/ViemAdapter.ts @@ -1,4 +1,17 @@ -import { createPublicClient, http, PublicClient, Account, Transport, Chain } from 'viem' +import { + createPublicClient, + http, + PublicClient, + Account, + Transport, + Chain, + TypedDataDomain, + WalletClient, + createWalletClient, + Address, + Abi, + zeroAddress, +} from 'viem' import { AdapterTypes, AbstractProviderAdapter } from '@cowprotocol/sdk-common' @@ -6,20 +19,49 @@ export interface ViemTypes extends AdapterTypes { Bytes: `0x${string}` } import { ViemUtils } from './ViemUtils' +import { + IntChainIdTypedDataV4Signer, + TypedDataV3Signer, + TypedDataVersionedSigner, + ViemSignerAdapter, +} from './ViemSignerAdapter' + +export interface ViemTypes extends AdapterTypes { + Abi: Abi + Address: Address + Bytes: `0x${string}` + BigIntish: bigint + ContractInterface: unknown + Provider: PublicClient + Signer: WalletClient + TypedDataDomain: TypedDataDomain + TypedDataTypes: Record +} export class ViemAdapter extends AbstractProviderAdapter { declare protected _type?: ViemTypes private publicClient: PublicClient private account?: Account + private walletClient: WalletClient public utils: ViemUtils + public Signer = ViemSignerAdapter + public TypedDataVersionedSigner = TypedDataVersionedSigner + public TypedDataV3Signer = TypedDataV3Signer + public IntChainIdTypedDataV4Signer = IntChainIdTypedDataV4Signer constructor(chain: Chain, transport: Transport = http(), account?: Account | `0x${string}`) { super() + this.ZERO_ADDRESS = zeroAddress this.publicClient = createPublicClient({ chain, transport, }) + this.walletClient = createWalletClient({ + chain, + transport, + }) + if (account) { this.account = typeof account === 'string' ? ({ address: account } as Account) : account } @@ -37,4 +79,47 @@ export class ViemAdapter extends AbstractProviderAdapter { } return this.account.address } + + async signMessage(message: string | Uint8Array): Promise { + if (!this.account) { + throw new Error('No account provided') + } + + const messageToSign = typeof message === 'string' ? message : new TextDecoder().decode(message) + + return this.walletClient.signMessage({ + account: this.account, + message: messageToSign, + }) + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + if (!this.account) { + throw new Error('No account provided') + } + + const primaryType = Object.keys(types)[0] + if (!primaryType) { + throw new Error('No primary type found in types') + } + + return this.walletClient.signTypedData({ + account: this.account, + domain, + types, + primaryType, + message: value, + }) + } + + async getStorageAt(address: Address, slot: `0x${string}`) { + return this.publicClient.getStorageAt({ + address, + slot, + }) + } } diff --git a/packages/providers/viem-adapter/src/ViemSignerAdapter.ts b/packages/providers/viem-adapter/src/ViemSignerAdapter.ts new file mode 100644 index 000000000..907d444eb --- /dev/null +++ b/packages/providers/viem-adapter/src/ViemSignerAdapter.ts @@ -0,0 +1,251 @@ +import { Account, WalletClient, PublicClient, Address, TypedDataDomain, TypedDataParameter } from 'viem' +import { AbstractSigner, TransactionParams, TransactionResponse } from '@cowprotocol/sdk-common' + +export class ViemSignerAdapter extends AbstractSigner { + protected _client: WalletClient + protected _account: Account + protected _publicClient?: PublicClient + + constructor(client: WalletClient) { + super() + this._client = client + if (!client?.account) throw new Error('Signer is missing account') + this._account = client.account + } + + async getAddress(): Promise { + return this._account.address + } + + async signMessage(message: string | Uint8Array): Promise { + if (typeof message === 'string') { + return await this._client.signMessage({ + account: this._account, + message, + }) + } else { + return await this._client.signMessage({ + account: this._account, + message: { raw: message }, + }) + } + } + + async signTransaction(txParams: TransactionParams): Promise { + const formattedTx = this._formatTxParams(txParams) + + return await this._client.signTransaction({ + account: this._account, + ...formattedTx, + }) + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + const primaryType = Object.keys(types)[0] + + if (!primaryType) throw new Error('Missing primary type') + + return await this._client.signTypedData({ + account: this._account, + domain, + types, + primaryType, // Primary type is usually the first key in types + message: value, + }) + } + + async sendTransaction(txParams: TransactionParams): Promise { + const formattedTx = this._formatTxParams(txParams) + + const hash = await this._client.sendTransaction({ + account: this._account, + ...formattedTx, + }) + + return { + hash, + wait: async (confirmations?: number) => { + if (!this._publicClient) { + throw new Error('Cannot wait for transaction without a public client') + } + + const receipt = await this._publicClient.waitForTransactionReceipt({ + hash, + confirmations, + }) + + return { + transactionHash: receipt.transactionHash, + blockNumber: Number(receipt.blockNumber), + blockHash: receipt.blockHash, + status: Number(receipt.status === 'success'), + gasUsed: receipt.gasUsed, + logs: receipt.logs, + } + }, + } + } + + private _formatTxParams(txParams: TransactionParams) { + // Convert to viem-specific format + const formatted: any = { ...txParams } + + // Convert string addresses to Address type + if (formatted.to) { + formatted.to = formatted.to as Address + } + + if (formatted.from) { + formatted.from = formatted.from as Address + } + + // Ensure gas fields use the correct naming + if (formatted.gasLimit !== undefined) { + formatted.gas = formatted.gasLimit + delete formatted.gasLimit + } + + return formatted + } +} + +/** + * Base class for versioned typed data signers + * Provides common functionality for different EIP-712 typed data versions + */ +export class TypedDataVersionedSigner extends ViemSignerAdapter { + protected getTypedDataVersion(): string { + return 'v4' // Default to v4 + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + // Override domain version if needed + const modifiedDomain = this.modifyDomain(domain) + return super.signTypedData(modifiedDomain, types, value) + } + + protected modifyDomain(domain: TypedDataDomain): TypedDataDomain { + // Default implementation - subclasses can override + return domain + } +} + +/** + * Signer for EIP-712 typed data version 3 + * Handles legacy typed data signing for older protocols + */ +export class TypedDataV3Signer extends TypedDataVersionedSigner { + protected getTypedDataVersion(): string { + return 'v3' + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + // For V3, we might need to handle domain differently + // Remove any fields that aren't supported in V3 + const v3Domain: TypedDataDomain = { + name: domain.name, + version: domain.version, + chainId: domain.chainId, + verifyingContract: domain.verifyingContract, + // V3 typically doesn't support salt + } + + return super.signTypedData(v3Domain, types, value) + } +} + +/** + * Signer for EIP-712 typed data version 4 with integer chain ID handling + * Ensures chain ID is properly formatted as an integer for compatibility + */ +export class IntChainIdTypedDataV4Signer extends TypedDataVersionedSigner { + protected getTypedDataVersion(): string { + return 'v4' + } + + protected modifyDomain(domain: TypedDataDomain): TypedDataDomain { + // Ensure chainId is an integer for V4 compatibility + let chainId = domain.chainId + + if (typeof chainId === 'string') { + chainId = parseInt(chainId, 10) + } else if (typeof chainId === 'bigint') { + chainId = Number(chainId) + } + + return { + ...domain, + chainId, + } + } + + async signTypedData( + domain: TypedDataDomain, + types: Record, + value: Record, + ): Promise { + // Apply integer chain ID modification + const modifiedDomain = this.modifyDomain(domain) + + // Use viem's native signTypedData which supports V4 + const primaryType = Object.keys(types)[0] + if (!primaryType) throw new Error('Missing primary type') + + return await this._client.signTypedData({ + account: this._account, + domain: modifiedDomain, + types, + primaryType, + message: value, + }) + } +} + +/** + * Factory function to create appropriate signer based on requirements + */ +export function createViemSigner( + client: WalletClient, + options?: { + typedDataVersion?: 'v3' | 'v4' | 'v4-int-chainid' + publicClient?: PublicClient + }, +): ViemSignerAdapter { + const baseAdapter = new ViemSignerAdapter(client) + + // Set public client if provided + if (options?.publicClient) { + ;(baseAdapter as any)._publicClient = options.publicClient + } + + // Return appropriate signer based on version + if (options?.typedDataVersion === 'v3') { + const signer = new TypedDataV3Signer(client) + if (options.publicClient) { + ;(signer as any)._publicClient = options.publicClient + } + return signer + } + + if (options?.typedDataVersion === 'v4-int-chainid') { + const signer = new IntChainIdTypedDataV4Signer(client) + if (options.publicClient) { + ;(signer as any)._publicClient = options.publicClient + } + return signer + } + + return baseAdapter +} diff --git a/packages/providers/viem-adapter/src/ViemUtils.ts b/packages/providers/viem-adapter/src/ViemUtils.ts index 3fa4f2eea..967df550b 100644 --- a/packages/providers/viem-adapter/src/ViemUtils.ts +++ b/packages/providers/viem-adapter/src/ViemUtils.ts @@ -1,16 +1,322 @@ import { AdapterUtils } from '@cowprotocol/sdk-common' -import { Hex, stringToBytes, keccak256, hexToBytes } from 'viem' +import { + encodeDeployData, + Abi, + getCreate2Address, + Hex, + Address, + concat, + stringToBytes, + keccak256, + TypedDataDomain, + padHex, + hexToBytes, + encodePacked, + hashTypedData, + getAddress, + encodeAbiParameters, + decodeAbiParameters, + stringToHex, + hexToBigInt, + slice, + parseAbi, + encodeFunctionData, + recoverMessageAddress, + recoverTypedDataAddress, + toFunctionSelector, + AbiFunction, + PublicClient, + decodeFunctionResult, +} from 'viem' export class ViemUtils implements AdapterUtils { toUtf8Bytes(text: string): Uint8Array { return stringToBytes(text) } + encodeDeploy(bytecode: `0x${string}`, abi: Abi): string { + return encodeDeployData({ + abi, + bytecode, + }) + } + + getCreate2Address(from: Address, salt: Hex, bytecodeHash: Hex): `0x${string}` { + return getCreate2Address({ + from, + salt, + bytecodeHash, + }) + } + + hexConcat(items: ReadonlyArray): string { + return concat(items) + } + + formatBytes32String(text: string): string { + const bytes = stringToBytes(text) + const paddedBytes = this.padBytes(bytes, 32) + return paddedBytes + } + keccak256(data: Hex): string { return keccak256(data) } + private bytesToHex(bytes: Uint8Array): Hex { + return `0x${Array.from(bytes) + .map((b) => b.toString(16).padStart(2, '0')) + .join('')}` as Hex + } + + private padBytes(bytes: Uint8Array, length: number): Hex { + const result = new Uint8Array(length) + result.set(bytes.slice(0, length)) + return this.bytesToHex(result) + } + + hexZeroPad(value: Hex, length: number): string { + return padHex(value, { size: length }) + } + arrayify(hexString: string): Uint8Array { return hexToBytes(hexString as Hex) } + + hexlify(value: `0x${string}` | Uint8Array): string { + if (typeof value === 'string') return value + return this.bytesToHex(value) + } + + solidityPack(types: string[], values: unknown[]): string { + return encodePacked(types, values) + } + + hashTypedData(domain: TypedDataDomain, types: Record, data: Record): string { + const primaryType = Object.keys(types)[0] + if (!primaryType) { + throw new Error('No primary type found in types') + } + + return hashTypedData({ + domain, + types: types as Record, + primaryType, + message: data, + }) + } + + getChecksumAddress(address: Address): Address { + return getAddress(address) + } + + encodeAbi(types: { type: string; name: string }[], values: unknown[]): `0x${string}` { + return encodeAbiParameters(types, values) + } + + decodeAbi(types: string[], data: `0x${string}`): unknown[] { + return decodeAbiParameters( + types.map((type, i) => ({ type, name: `arg${i}` })), + data, + ) + } + + id(text: string): `0x${string}` { + return keccak256(stringToHex(text)) + } + + toBigIntish(value: `0x${string}` | string | number): bigint { + if (typeof value === 'number') return BigInt(value) + if (typeof value === 'string') { + if (value.startsWith('0x')) return hexToBigInt(value as `0x${string}`) + return BigInt(value) + } + return hexToBigInt(value) + } + + newBigintish(value: number | string): bigint { + return BigInt(value) + } + + hexDataSlice(data: `0x${string}`, offset: number, endOffset?: number): `0x${string}` { + return slice(data, offset, endOffset) as `0x${string}` + } + + joinSignature(signature: { r: string; s: string; v: number }): string { + // Convert r, s, v to Viem's signature format + const r = signature.r as `0x${string}` + const s = signature.s as `0x${string}` + const v = signature.v + + // Join the signature components + return concat([r, s, v === 27 ? '0x1b' : '0x1c']) as string + } + + splitSignature(signature: `0x${string}`): { r: string; s: string; v: number } { + // Ensure the signature is at least 65 bytes (r + s + v) + if (signature.length < 132) { + throw new Error('Invalid signature length') + } + + // Split the signature into r, s, v components + const r = slice(signature, 0, 32) as `0x${string}` + const s = slice(signature, 32, 64) as `0x${string}` + + // The v value is the last byte + const vByte = slice(signature, 64, 65) as `0x${string}` + const vInt = Number(hexToBigInt(vByte)) + + // Normalize v to 27 or 28 + const v = vInt < 27 ? vInt + 27 : vInt + + return { r, s, v } + } + async verifyMessage(message: string | Uint8Array, signature: `0x${string}`): Promise { + const messageString = typeof message === 'string' ? message : new TextDecoder().decode(message) + + return recoverMessageAddress({ + message: messageString, + signature, + }) + } + + async verifyTypedData( + domain: TypedDataDomain, + types: Record>, + value: Record, + signature: `0x${string}`, + ) { + const primaryType = Object.keys(types)[0] + if (!primaryType) { + throw new Error('No primary type found in types') + } + + return recoverTypedDataAddress({ + domain, + types, + primaryType, + message: value, + signature, + }) + } + + encodeFunction( + abi: Array<{ name: string; inputs: Array<{ type: string }> }>, + functionName: string, + args: unknown[], + ): `0x${string}` { + // Convert simple ABI to viem parseAbi format + const abiString = abi.map((fn) => { + const inputsStr = fn.inputs.map((input) => input.type).join(',') + return `function ${fn.name}(${inputsStr})` + }) + + const parsedAbi = parseAbi(abiString) + return encodeFunctionData({ + abi: parsedAbi, + functionName, + args, + }) + } + + toNumber(value: bigint): number { + return Number(value) + } + + solidityKeccak256(types: unknown[], values: unknown[]) { + const encoded = encodePacked(types, values) + + // Hash the encoded data + return keccak256(encoded) + } + + createInterface(abi: string[]) { + return parseAbi(abi) + } + + async grantRequiredRoles( + authorizerAddress: string, + authorizerAbi: Abi, + vaultAddress: string, + vaultRelayerAddress: string, + contractCall: (address: string, abi: Abi, functionName: string, args: unknown[]) => Promise, + ): Promise { + /** + * Balancer Vault partial ABI interface. + * + * This definition only contains the Vault methods that are used by GPv2 Vault + * relayer. It is copied here to avoid relying on build artifacts. + */ + const vaultAbiStrings = [ + 'function manageUserBalance((uint8, address, uint256, address, address)[])', + 'function batchSwap(uint8, (bytes32, uint256, uint256, uint256, bytes)[], address[], (address, bool, address, bool), int256[], uint256)', + ] + + // Parse the ABI using viem + const vaultAbi = parseAbi(vaultAbiStrings) + + // Get function names + const functionNames = ['manageUserBalance', 'batchSwap'] + + for (const functionName of functionNames) { + // Find the function in the parsed ABI + const functionAbi = vaultAbi.find((item) => item.type === 'function' && item.name === functionName) as AbiFunction + + if (!functionAbi) { + throw new Error(`Function ${functionName} not found in ABI`) + } + + // Get function selector using viem's toFunctionSelector + const functionSelector = toFunctionSelector(functionAbi) + + // Compute role hash using solidityKeccak256 (which uses encodePacked + keccak256) + const roleHash = this.solidityKeccak256(['uint256', 'bytes4'], [vaultAddress, functionSelector]) + + // Call grantRole on the authorizer contract + await contractCall(authorizerAddress, authorizerAbi, 'grantRole', [roleHash, vaultRelayerAddress]) + } + } + + async readStorage( + baseAddress: Address, + baseAbi: Abi, + readerAddress: Address, + readerAbi: Abi, + client: PublicClient, + method: string, + parameters: unknown[], + ) { + // Encode the function call + const encodedCall = encodeFunctionData({ + abi: readerAbi, + functionName: method, + args: parameters, + }) + + // Check if simulateDelegatecall exists in base ABI + const hasSimulateDelegatecall = baseAbi.some( + (item: any) => item.type === 'function' && item.name === 'simulateDelegatecall', + ) + + if (!hasSimulateDelegatecall) { + throw new Error('simulateDelegatecall method not found on base contract') + } + + // Call simulateDelegatecall on the base contract + const resultBytes = (await client.readContract({ + address: baseAddress, + abi: baseAbi, + functionName: 'simulateDelegatecall', + args: [readerAddress, encodedCall], + })) as Hex + + // Decode the result + const decoded = decodeFunctionResult({ + abi: readerAbi, + functionName: method, + data: resultBytes, + }) + + return decoded + } } From 4f39d4d37bf2f67a2686ac6709795c01f4a43ad0 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Wed, 28 May 2025 13:14:48 -0300 Subject: [PATCH 24/33] feat: add tests for contracts-ts --- packages/contracts-ts/jest.config.ts | 15 + packages/contracts-ts/package.json | 4 +- packages/contracts-ts/tests/api.test.ts | 606 ++++++++++++++++++ .../contracts-ts/tests/deployment.test.ts | 240 +++++++ .../tests/order-processing.test.ts | 365 +++++++++++ packages/contracts-ts/tests/order.test.ts | 256 ++++++++ packages/contracts-ts/tests/reader.test.ts | 593 +++++++++++++++++ .../contracts-ts/tests/settlement.test.ts | 342 ++++++++++ packages/contracts-ts/tests/setup.test.ts | 183 ++++++ packages/contracts-ts/tests/setup.ts | 50 ++ .../contracts-ts/tests/sign-order.test.ts | 125 ++++ packages/contracts-ts/tests/signature.test.ts | 250 ++++++++ packages/contracts-ts/tests/vault.test.ts | 174 +++++ packages/contracts-ts/tsconfig.json | 3 +- packages/typescript-config/base.json | 2 +- 15 files changed, 3205 insertions(+), 3 deletions(-) create mode 100644 packages/contracts-ts/jest.config.ts create mode 100644 packages/contracts-ts/tests/api.test.ts create mode 100644 packages/contracts-ts/tests/deployment.test.ts create mode 100644 packages/contracts-ts/tests/order-processing.test.ts create mode 100644 packages/contracts-ts/tests/order.test.ts create mode 100644 packages/contracts-ts/tests/reader.test.ts create mode 100644 packages/contracts-ts/tests/settlement.test.ts create mode 100644 packages/contracts-ts/tests/setup.test.ts create mode 100644 packages/contracts-ts/tests/setup.ts create mode 100644 packages/contracts-ts/tests/sign-order.test.ts create mode 100644 packages/contracts-ts/tests/signature.test.ts create mode 100644 packages/contracts-ts/tests/vault.test.ts diff --git a/packages/contracts-ts/jest.config.ts b/packages/contracts-ts/jest.config.ts new file mode 100644 index 000000000..b2fe663bf --- /dev/null +++ b/packages/contracts-ts/jest.config.ts @@ -0,0 +1,15 @@ +import type { Config } from 'jest' + +const config: Config = { + preset: 'ts-jest', + testEnvironment: 'node', + roots: ['/src', '/tests'], + testMatch: ['**/__tests__/**/*.ts?(x)', '**/?(*.)+(spec|test).ts?(x)'], + transform: { + '^.+\\.tsx?$': 'ts-jest', + }, + collectCoverageFrom: ['src/**/*.{ts,tsx}', '!src/**/*.d.ts'], + moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], +} + +export default config diff --git a/packages/contracts-ts/package.json b/packages/contracts-ts/package.json index 6c1094ced..3f5e1d122 100644 --- a/packages/contracts-ts/package.json +++ b/packages/contracts-ts/package.json @@ -14,7 +14,9 @@ "build": "tsup src/index.ts --format esm,cjs --dts", "dev": "tsup src/index.ts --format esm,cjs --watch --dts", "lint": "eslint src/**/*.ts", - "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "test": "jest", + "test:watch": "jest --watch" }, "dependencies": { "@cowprotocol/sdk-common": "workspace:*", diff --git a/packages/contracts-ts/tests/api.test.ts b/packages/contracts-ts/tests/api.test.ts new file mode 100644 index 000000000..fd783a9b7 --- /dev/null +++ b/packages/contracts-ts/tests/api.test.ts @@ -0,0 +1,606 @@ +import { createAdapters, TEST_ADDRESS } from './setup' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + Api, + Environment, + apiUrl, + LIMIT_CONCURRENT_REQUESTS, + QuotePriceQuality, + GetQuoteErrorType, + EstimateTradeAmountQuery, + PlaceOrderQuery, + GetExecutedSellAmountQuery, + QuoteQuery, + ContractsOrderKind as OrderKind, + ContractsSigningScheme as SigningScheme, + ContractsOrder as Order, + OrderBalance, + PreSignSignature, + ContractsSignature, + ContractsEcdsaSignature, + Eip1271Signature, + Eip1271SignatureData, +} from '../src' + +// Mock fetch for testing +global.fetch = jest.fn() +const mockFetch = fetch as jest.MockedFunction + +describe('API Functions and Classes', () => { + let adapters: ReturnType + + const testOrder: Order = { + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + buyToken: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + validTo: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + feeAmount: '5000000000000000', // 0.005 WETH + kind: OrderKind.SELL, + partiallyFillable: false, + receiver: TEST_ADDRESS, + } + + const testSignature = { + scheme: SigningScheme.PRESIGN, + data: TEST_ADDRESS, + } as PreSignSignature + + beforeAll(() => { + adapters = createAdapters() + }) + + beforeEach(() => { + mockFetch.mockReset() + }) + + describe('Constants and Enums', () => { + test('should have correct LIMIT_CONCURRENT_REQUESTS value', () => { + expect(LIMIT_CONCURRENT_REQUESTS).toBe(5) + }) + + test('should have correct Environment enum values', () => { + expect(Environment.Dev).toBe(0) + expect(Environment.Prod).toBe(1) + }) + + test('should have correct QuotePriceQuality enum values', () => { + expect(QuotePriceQuality.FAST).toBe('fast') + expect(QuotePriceQuality.OPTIMAL).toBe('optimal') + }) + + test('should have correct GetQuoteErrorType enum values', () => { + expect(GetQuoteErrorType.SellAmountDoesNotCoverFee).toBe('SellAmountDoesNotCoverFee') + expect(GetQuoteErrorType.NoLiquidity).toBe('NoLiquidity') + }) + }) + + describe('apiUrl', () => { + test('should generate correct URLs for different environments and networks', () => { + // Test Dev environment + expect(apiUrl(Environment.Dev, 'mainnet')).toBe('https://barn.api.cow.fi/mainnet') + expect(apiUrl(Environment.Dev, 'goerli')).toBe('https://barn.api.cow.fi/goerli') + expect(apiUrl(Environment.Dev, 'sepolia')).toBe('https://barn.api.cow.fi/sepolia') + + // Test Prod environment + expect(apiUrl(Environment.Prod, 'mainnet')).toBe('https://api.cow.fi/mainnet') + expect(apiUrl(Environment.Prod, 'goerli')).toBe('https://api.cow.fi/goerli') + expect(apiUrl(Environment.Prod, 'sepolia')).toBe('https://api.cow.fi/sepolia') + }) + + test('should throw error for invalid environment', () => { + // @ts-expect-error: Testing invalid environment + expect(() => apiUrl(999, 'mainnet')).toThrow('Invalid environment') + }) + }) + + describe('Api class construction', () => { + test('should construct Api with string baseUrl consistently across adapters', () => { + const baseUrl = 'https://custom.api.com' + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', baseUrl) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', baseUrl) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', baseUrl) + + // All should have the same properties + expect(ethersV5Api.network).toBe('mainnet') + expect(ethersV5Api.baseUrl).toBe(baseUrl) + expect(ethersV6Api.network).toBe('mainnet') + expect(ethersV6Api.baseUrl).toBe(baseUrl) + expect(viemApi.network).toBe('mainnet') + expect(viemApi.baseUrl).toBe(baseUrl) + }) + + test('should construct Api with Environment enum consistently across adapters', () => { + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + + // All should have the same properties + expect(ethersV5Api.network).toBe('mainnet') + expect(ethersV5Api.baseUrl).toBe('https://api.cow.fi/mainnet') + expect(ethersV6Api.network).toBe('mainnet') + expect(ethersV6Api.baseUrl).toBe('https://api.cow.fi/mainnet') + expect(viemApi.network).toBe('mainnet') + expect(viemApi.baseUrl).toBe('https://api.cow.fi/mainnet') + }) + }) + + describe('estimateTradeAmount', () => { + test('should estimate trade amount consistently across different adapters', async () => { + const mockQuoteResponse = { + quote: { + ...testOrder, + buyAmount: '2000000000000000000000', // 2000 DAI + }, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + const query: EstimateTradeAmountQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + amount: testOrder.sellAmount, + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + const ethersV5Result = (await ethersV5Api.estimateTradeAmount(query)) as bigint + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + const ethersV6Result = await ethersV6Api.estimateTradeAmount(query) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + const viemResult = await ethersV6Api.estimateTradeAmount(query) + + // Results should be consistent + expect(String(ethersV5Result)).toBe(mockQuoteResponse.quote.buyAmount) + expect(String(ethersV6Result)).toBe(mockQuoteResponse.quote.buyAmount) + expect(String(viemResult)).toBe(mockQuoteResponse.quote.buyAmount) + }) + + test('should handle BUY orders correctly across adapters', async () => { + const mockQuoteResponse = { + quote: { + ...testOrder, + sellAmount: '1000000000000000000', // 1 WETH + }, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + const query: EstimateTradeAmountQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.BUY, + amount: testOrder.buyAmount, + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + const ethersV5Result = await ethersV5Api.estimateTradeAmount(query) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + const ethersV6Result = await ethersV6Api.estimateTradeAmount(query) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + const viemResult = await viemApi.estimateTradeAmount(query) + + // Results should be consistent + expect(String(ethersV5Result)).toBe(mockQuoteResponse.quote.sellAmount) + expect(String(ethersV6Result)).toBe(mockQuoteResponse.quote.sellAmount) + expect(String(viemResult)).toBe(mockQuoteResponse.quote.sellAmount) + }) + + test('should throw error when quote token mismatch occurs', async () => { + const mockQuoteResponse = { + quote: { + ...testOrder, + buyToken: '0x1234567890123456789012345678901234567890', // Different token + }, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + const query: EstimateTradeAmountQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + amount: testOrder.sellAmount, + } + + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api('mainnet', Environment.Prod) + + await expect(api.estimateTradeAmount(query)).rejects.toThrow(/incorrect quote token/i) + }) + }) + + describe('placeOrder', () => { + test('should place order consistently across different adapters', async () => { + const mockOrderId = 'order-123-abc' + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockOrderId), + } as Response) + + const query: PlaceOrderQuery = { + order: testOrder, + signature: testSignature, + from: TEST_ADDRESS, + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + const ethersV5Result = await ethersV5Api.placeOrder(query) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + const ethersV6Result = await ethersV6Api.placeOrder(query) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + const viemResult = await viemApi.placeOrder(query) + + // Results should be consistent + expect(ethersV5Result).toBe(mockOrderId) + expect(ethersV6Result).toBe(mockOrderId) + expect(viemResult).toBe(mockOrderId) + + // Verify fetch was called with correct parameters + expect(mockFetch).toHaveBeenCalledTimes(3) + const lastCall = mockFetch.mock.calls[mockFetch.mock.calls.length - 1]! + expect(lastCall[0]).toBe('https://api.cow.fi/mainnet/api/v1/orders') + expect(lastCall[1]?.method).toBe('post') + expect(lastCall[1]?.headers).toEqual({ 'Content-Type': 'application/json' }) + }) + + test('should handle different signing schemes correctly', async () => { + const mockOrderId = 'order-456-def' + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockOrderId), + } as Response) + + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api('mainnet', Environment.Prod) + + // Test EIP712 signature + const eip712Signature: ContractsEcdsaSignature = { + scheme: SigningScheme.EIP712, + data: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b', + } + + let result = await api.placeOrder({ + order: testOrder, + signature: eip712Signature, + from: TEST_ADDRESS, + }) + expect(result).toBe(mockOrderId) + + // Test ETHSIGN signature + const ethsignSignature: ContractsEcdsaSignature = { + scheme: SigningScheme.ETHSIGN, + data: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1b', + } + + result = await api.placeOrder({ + order: testOrder, + signature: ethsignSignature, + from: TEST_ADDRESS, + }) + expect(result).toBe(mockOrderId) + + // Test EIP1271 signature + const eip1271Signature: Eip1271Signature = { + scheme: SigningScheme.EIP1271, + data: { + verifier: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + signature: '0x1234567890abcdef', + } as Eip1271SignatureData, + } + + result = await api.placeOrder({ + order: testOrder, + signature: eip1271Signature, + from: TEST_ADDRESS, + }) + expect(result).toBe(mockOrderId) + + // Test PRESIGN signature + const presignSignature: PreSignSignature = { + scheme: SigningScheme.PRESIGN, + data: TEST_ADDRESS, + } + + result = await api.placeOrder({ + order: testOrder, + signature: presignSignature, + from: TEST_ADDRESS, + }) + expect(result).toBe(mockOrderId) + }) + }) + + describe('getExecutedSellAmount', () => { + test('should get executed sell amount consistently across different adapters', async () => { + const mockResponse = { + executedSellAmount: '500000000000000000', // 0.5 WETH + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockResponse), + } as Response) + + const query: GetExecutedSellAmountQuery = { + uid: 'order-uid-123', + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + const ethersV5Result = (await ethersV5Api.getExecutedSellAmount(query)) as bigint + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + const ethersV6Result = (await ethersV6Api.getExecutedSellAmount(query)) as bigint + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + const viemResult = (await viemApi.getExecutedSellAmount(query)) as bigint + + // Results should be consistent + expect(ethersV5Result.toString()).toBe(mockResponse.executedSellAmount) + expect(ethersV6Result.toString()).toBe(mockResponse.executedSellAmount) + expect(viemResult.toString()).toBe(mockResponse.executedSellAmount) + }) + }) + + describe('getQuote', () => { + test('should get quotes consistently across different adapters', async () => { + const mockQuoteResponse = { + quote: testOrder, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + id: 12345, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + const query: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountAfterFee: testOrder.sellAmount, + from: TEST_ADDRESS, + priceQuality: QuotePriceQuality.OPTIMAL, + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + const ethersV5Result = await ethersV5Api.getQuote(query) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + const ethersV6Result = await ethersV6Api.getQuote(query) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + const viemResult = await viemApi.getQuote(query) + + // Results should be consistent + expect(ethersV5Result).toEqual(mockQuoteResponse) + expect(ethersV6Result).toEqual(mockQuoteResponse) + expect(viemResult).toEqual(mockQuoteResponse) + }) + + test('should handle different quote types (sell before fee, sell after fee, buy)', async () => { + const mockQuoteResponse = { + quote: testOrder, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api('mainnet', Environment.Prod) + + // Test sell amount before fee + const sellBeforeFeeQuery: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountBeforeFee: testOrder.sellAmount, + from: TEST_ADDRESS, + } + + // Test sell amount after fee + const sellAfterFeeQuery: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountAfterFee: testOrder.sellAmount, + from: TEST_ADDRESS, + } + + // Test buy amount + const buyQuery: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.BUY, + buyAmountAfterFee: testOrder.buyAmount, + from: TEST_ADDRESS, + } + + const result1 = await api.getQuote(sellBeforeFeeQuery) + const result2 = await api.getQuote(sellAfterFeeQuery) + const result3 = await api.getQuote(buyQuery) + + expect(result1).toEqual(mockQuoteResponse) + expect(result2).toEqual(mockQuoteResponse) + expect(result3).toEqual(mockQuoteResponse) + }) + + test('should handle optional parameters correctly', async () => { + const mockQuoteResponse = { + quote: testOrder, + from: TEST_ADDRESS, + expiration: Math.floor(Date.now() / 1000) + 600, + } + + mockFetch.mockResolvedValue({ + ok: true, + text: async () => JSON.stringify(mockQuoteResponse), + } as Response) + + const queryWithOptionals: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountAfterFee: testOrder.sellAmount, + from: TEST_ADDRESS, + receiver: TEST_ADDRESS, + validTo: testOrder.validTo, + appData: testOrder.appData, + partiallyFillable: true, + sellTokenBalance: OrderBalance.EXTERNAL, + buyTokenBalance: OrderBalance.INTERNAL, + priceQuality: QuotePriceQuality.FAST, + } + + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api('mainnet', Environment.Prod) + const result = await api.getQuote(queryWithOptionals) + + expect(result).toEqual(mockQuoteResponse) + }) + }) + + describe('Error Handling', () => { + test('should handle API errors consistently across adapters', async () => { + const mockApiError = { + errorType: GetQuoteErrorType.NoLiquidity, + description: 'No liquidity available for this trade', + } + + mockFetch.mockResolvedValue({ + ok: false, + status: 400, + text: async () => JSON.stringify(mockApiError), + } as Response) + + const query: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountAfterFee: testOrder.sellAmount, + from: TEST_ADDRESS, + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Api = new Api('mainnet', Environment.Prod) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Api = new Api('mainnet', Environment.Prod) + + setGlobalAdapter(adapters.viemAdapter) + const viemApi = new Api('mainnet', Environment.Prod) + + // All should throw similar errors + await expect(ethersV5Api.getQuote(query)).rejects.toThrow() + await expect(ethersV6Api.getQuote(query)).rejects.toThrow() + await expect(viemApi.getQuote(query)).rejects.toThrow() + + // Test that the error contains API error information + try { + await ethersV5Api.getQuote(query) + } catch (error: any) { + expect(error.apiError).toEqual(mockApiError) + } + }) + + test('should handle malformed JSON responses', async () => { + mockFetch.mockResolvedValue({ + ok: false, + status: 500, + text: async () => 'Not JSON', + } as Response) + + const query: QuoteQuery = { + sellToken: testOrder.sellToken, + buyToken: testOrder.buyToken, + kind: OrderKind.SELL, + sellAmountAfterFee: testOrder.sellAmount, + from: TEST_ADDRESS, + } + + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api('mainnet', Environment.Prod) + + await expect(api.getQuote(query)).rejects.toThrow() + }) + }) + + describe('Network and Environment Combinations', () => { + test('should work with different network and environment combinations', () => { + const networks = ['mainnet', 'goerli', 'sepolia'] + const environments = [Environment.Dev, Environment.Prod] + + for (const network of networks) { + for (const environment of environments) { + setGlobalAdapter(adapters.ethersV5Adapter) + const api = new Api(network, environment) + + expect(api.network).toBe(network) + expect(api.baseUrl).toBe(apiUrl(environment, network)) + } + } + }) + }) +}) diff --git a/packages/contracts-ts/tests/deployment.test.ts b/packages/contracts-ts/tests/deployment.test.ts new file mode 100644 index 000000000..b7ffa02c1 --- /dev/null +++ b/packages/contracts-ts/tests/deployment.test.ts @@ -0,0 +1,240 @@ +import { createAdapters, TEST_ADDRESS } from './setup' +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + ContractsTs, + CONTRACT_NAMES, + SALT, + deterministicDeploymentAddress, + proxyInterface, + implementationAddress, + ownerAddress, +} from '../src' +import { concat, getCreate2Address, Hex, keccak256 } from 'viem' + +describe('Deployment and Proxy', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + concat(['0x1234', '0x4567']) + }) + + describe('deterministicDeploymentAddress', () => { + test('should compute deployment addresses consistently across different adapters', () => { + // Mock ABI and bytecode for testing + const testArtifact = { + abi: [ + { + inputs: [ + { name: 'authenticator', type: 'address' }, + { name: 'allowListConfig', type: 'address' }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + ], + bytecode: '0x608060405234801561001057600080fd5b506040516102c73803806102c78339', + contractName: CONTRACT_NAMES.settlement, + } + + // Deploy arguments for the settlement contract + const deployArgs = [ + '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', // authenticator + '0x1234567890123456789012345678901234567890', // allowListConfig + ] as [string, string] + + // Compute deployment address with each adapter + const addresses: string[] = [] + const adapterNames = Object.keys(adapters) as Array + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const address = deterministicDeploymentAddress(testArtifact, deployArgs) + addresses.push(address) + } + + // All addresses should be identical + const [firstAddress, ...remainingAddresses] = addresses + remainingAddresses.forEach((address) => { + expect(address).toEqual(firstAddress) + }) + + // Verify the address is a valid Ethereum address + expect(firstAddress).toMatch(/^0x[0-9a-f]{40}$/i) + + // Check that we're actually using the SALT and DEPLOYER_CONTRACT constants + // by mocking an alternate implementation and ensuring results differ + const mockHashFunction = jest + .fn() + .mockReturnValue('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef') + const originalKeccak256 = adapters.ethersV5Adapter.utils.keccak256 + adapters.ethersV5Adapter.utils.keccak256 = mockHashFunction + + try { + setGlobalAdapter(adapters.ethersV5Adapter) + const mockedAddress = deterministicDeploymentAddress(testArtifact, deployArgs) + + // Address should be different with the mocked hash function + expect(mockedAddress).not.toEqual(firstAddress) + + // The mockHashFunction should be called with data containing the SALT + expect(mockHashFunction).toHaveBeenCalled() + const args = mockHashFunction.mock.calls[0][0] + expect(typeof args).toBe('string') + } finally { + // Restore original function + adapters.ethersV5Adapter.utils.keccak256 = originalKeccak256 + } + }) + + test('should compute different addresses for different contracts and args', () => { + // Two different artifacts + const testArtifact1 = { + abi: [{ inputs: [], stateMutability: 'nonpayable', type: 'constructor' }], + bytecode: '0x608060405234801561001057600080fd5b506040516102c73803806102c78339', + contractName: CONTRACT_NAMES.authenticator, + } + const deployerAddress = '0xa90914762709441d557De208bAcE1edB1A3968b2' + + // Deploy args for second artifact + const deployArgs = [ + '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + '0x1234567890123456789012345678901234567890', + ] as [string, string] + + // Ethers v5 + const ethersV5Address = ethersV5.utils.getCreate2Address( + deployerAddress, + SALT, + ethersV5.utils.keccak256(ethersV5.utils.hexConcat([testArtifact1.bytecode, ...deployArgs])), + ) + + // Ethers v5 + const ethersV6Address = ethersV6.getCreate2Address( + deployerAddress, + SALT, + ethersV6.keccak256(ethersV6.concat([testArtifact1.bytecode, ...deployArgs])), + ) + + // Viem + const viemAddress = getCreate2Address({ + from: deployerAddress, + salt: SALT, + bytecodeHash: keccak256(concat([testArtifact1.bytecode as Hex, ...(deployArgs as Hex[])])), + }) + + expect(ethersV5Address).toEqual(ethersV6Address) + expect(ethersV5Address).toEqual(viemAddress) + }) + }) + + describe('Proxy interfaces', () => { + test('should mock implementation and owner addresses consistently', async () => { + // Mock a provider for testing + const mockProvider = { + getStorageAt: jest.fn().mockResolvedValue('0x000000000000000000000000' + TEST_ADDRESS.substring(2)), + } + + // proxy contract address + const proxyAddress = '0x1234567890123456789012345678901234567890' + + // Mock contract objects + const mockContract = { + address: proxyAddress, + provider: mockProvider, + } + + // Test implementation address with different adapters + const implementationPromises: Promise[] = [] + const adapterNames = Object.keys(adapters) as Array + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + implementationPromises.push(implementationAddress(mockProvider as any, proxyAddress)) + } + + // All calls should resolve to the same address + const implementations = await Promise.all(implementationPromises) + const [firstImplementation, ...remainingImplementations] = implementations + remainingImplementations.forEach((implementation) => { + expect(implementation).toEqual(firstImplementation) + }) + + // Test owner address + const ownerPromises: Promise[] = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + ownerPromises.push(ownerAddress(mockProvider as any, proxyAddress)) + } + + // All calls should resolve to the same address + const owners = await Promise.all(ownerPromises) + const [firstOwner, ...remainingOwners] = owners + remainingOwners.forEach((owner) => { + expect(owner).toEqual(firstOwner) + }) + expect(firstOwner).toEqual(TEST_ADDRESS) + }) + + test('should create proxy interfaces consistently', () => { + // Mock getContract implementations for each adapter + const originalGetContracts = {} as Record + const adapterNames = Object.keys(adapters) as Array + + // Store original functions and mock them + for (const adapterName of adapterNames) { + originalGetContracts[adapterName] = adapters[adapterName].getContract + } + + const mockContract = { address: '0x1234567890123456789012345678901234567890' } + const mockProxyContract = { mock: 'proxy-interface' } + + for (const adapterName of adapterNames) { + adapters[adapterName].getContract = jest.fn().mockReturnValue(mockProxyContract) + } + + try { + // Get proxy interface with each adapter + const proxyInterfaces = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const proxyInterfaceResult = proxyInterface(mockContract as any) + proxyInterfaces.push(proxyInterfaceResult) + } + + // All interfaces should be the same mock object + proxyInterfaces.forEach((proxyInterfaceResult) => { + expect(proxyInterfaceResult).toEqual(mockProxyContract) + }) + + // Verify getContract was called with the right arguments for each adapter + for (const adapterName of adapterNames) { + expect(adapters[adapterName].getContract).toHaveBeenCalledWith( + mockContract.address, + expect.anything(), + undefined, + ) + } + } finally { + // Restore original functions + for (const adapterName of adapterNames) { + adapters[adapterName].getContract = originalGetContracts[adapterName] + } + } + }) + }) +}) diff --git a/packages/contracts-ts/tests/order-processing.test.ts b/packages/contracts-ts/tests/order-processing.test.ts new file mode 100644 index 000000000..aced39474 --- /dev/null +++ b/packages/contracts-ts/tests/order-processing.test.ts @@ -0,0 +1,365 @@ +import { createAdapters, TEST_ADDRESS } from './setup' +import { setGlobalAdapter, TypedDataDomain } from '@cowprotocol/sdk-common' +import { + ContractsTs, + ContractsOrder as Order, + ContractsOrderKind as OrderKind, + OrderBalance, + normalizeOrder, + timestamp, + hashify, + normalizeBuyTokenBalance, + packOrderUidParams, + extractOrderUidParams, + decodeOrder, + TokenRegistry, + ContractsTrade as Trade, +} from '../src' +import { getAddress } from 'viem' + +describe('Order Processing Functions', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + // Test data + const testDomain: TypedDataDomain = { + name: 'Cow Protocol', + version: '1', + chainId: 1, + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + } + + const testOrder: Order = { + sellToken: getAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), // WETH + buyToken: getAddress('0x6b175474e89094c44da98b954eedeac495271d0f'), // DAI + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + validTo: (Math.floor(Date.now() / 1000) + 3600) as number, // 1 hour from now + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + feeAmount: '5000000000000000', // 0.005 WETH + kind: OrderKind.SELL, + partiallyFillable: false, + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + }) + + describe('normalizeOrder', () => { + test('should normalize orders consistently across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + const normalizedOrders: any[] = [] + + // Normalize with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const normalized = normalizeOrder(testOrder) + normalizedOrders.push(normalized) + } + + // All normalized orders should be identical + const [firstNormalized, ...remainingNormalized] = normalizedOrders + remainingNormalized.forEach((normalized) => { + expect(normalized).toEqual(firstNormalized) + }) + + // Check specific properties + expect(firstNormalized.receiver).toEqual('0x0000000000000000000000000000000000000000') + expect(firstNormalized.sellTokenBalance).toEqual(OrderBalance.ERC20) + expect(firstNormalized.buyTokenBalance).toEqual(OrderBalance.ERC20) + expect(firstNormalized.validTo).toEqual(testOrder.validTo) + + // When we provide a receiver, it should be preserved + const orderWithReceiver = { ...testOrder, receiver: TEST_ADDRESS } + + setGlobalAdapter(adapters[adapterNames[0]!!]) + const normalizedWithReceiver = normalizeOrder(orderWithReceiver) + expect(normalizedWithReceiver.receiver).toEqual(TEST_ADDRESS) + + // Test error case - receiver cannot be zero address + setGlobalAdapter(adapters[adapterNames[0]!!]) + const orderWithZeroReceiver = { ...testOrder, receiver: '0x0000000000000000000000000000000000000000' } + expect(() => normalizeOrder(orderWithZeroReceiver)).toThrow(/receiver cannot be address\(0\)/) + }) + + test('should handle different balance types correctly', () => { + const orderVariations = [ + { ...testOrder }, // Default + { ...testOrder, sellTokenBalance: OrderBalance.ERC20 }, + { ...testOrder, sellTokenBalance: OrderBalance.EXTERNAL }, + { ...testOrder, sellTokenBalance: OrderBalance.INTERNAL }, + { ...testOrder, buyTokenBalance: OrderBalance.ERC20 }, + { ...testOrder, buyTokenBalance: OrderBalance.INTERNAL }, + { ...testOrder, buyTokenBalance: OrderBalance.EXTERNAL }, // Should be normalized to ERC20 + ] + + for (const order of orderVariations) { + const adapterNames = Object.keys(adapters) as Array + setGlobalAdapter(adapters[adapterNames[0]!!]) + const normalized = normalizeOrder(order) + + // Sell token balance should match what was provided or default to ERC20 + expect(normalized.sellTokenBalance).toEqual(order.sellTokenBalance || OrderBalance.ERC20) + + // Buy token balance handling is special - EXTERNAL gets converted to ERC20 + if (order.buyTokenBalance === OrderBalance.EXTERNAL) { + expect(normalized.buyTokenBalance).toEqual(OrderBalance.ERC20) + } else { + expect(normalized.buyTokenBalance).toEqual(order.buyTokenBalance || OrderBalance.ERC20) + } + } + }) + }) + + describe('timestamp', () => { + test('should convert various timestamp formats consistently', () => { + const testCases = [ + { input: 1609459200, expected: 1609459200 }, // Unix timestamp (seconds) + { input: new Date('2021-01-01T00:00:00Z'), expected: 1609459200 }, // Date object + ] + + for (const { input, expected } of testCases) { + const adapterNames = Object.keys(adapters) as Array + const results: number[] = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const result = timestamp(input) + results.push(result) + } + + // All results should be identical and match expected + results.forEach((result) => { + expect(result).toEqual(expected) + }) + } + }) + }) + + describe('hashify', () => { + test('should convert app data to 32-byte hash consistently', () => { + const testCases = [ + { input: 123, expected: '0x000000000000000000000000000000000000000000000000000000000000007b' }, // Number + { input: '0xabcd', expected: '0x000000000000000000000000000000000000000000000000000000000000abcd' }, // Short hex + { + input: '0xabcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789', + expected: '0xabcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789', + }, // Full 32-byte hash + ] + + for (const { input, expected } of testCases) { + const adapterNames = Object.keys(adapters) as Array + const results: string[] = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const result = hashify(input) + results.push(result) + } + + // All results should be identical and match expected + results.forEach((result) => { + expect(result).toEqual(expected) + }) + } + }) + }) + + describe('normalizeBuyTokenBalance', () => { + test('should normalize buy token balance types correctly', () => { + const testCases = [ + { input: undefined, expected: OrderBalance.ERC20 }, + { input: OrderBalance.ERC20, expected: OrderBalance.ERC20 }, + { input: OrderBalance.EXTERNAL, expected: OrderBalance.ERC20 }, // EXTERNAL normalized to ERC20 for buy + { input: OrderBalance.INTERNAL, expected: OrderBalance.INTERNAL }, + ] + + for (const { input, expected } of testCases) { + const adapterNames = Object.keys(adapters) as Array + const results: OrderBalance[] = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const result = normalizeBuyTokenBalance(input) + results.push(result) + } + + // All results should be identical and match expected + results.forEach((result) => { + expect(result).toEqual(expected) + }) + } + }) + + test('should throw on invalid balance type', () => { + const adapterNames = Object.keys(adapters) as Array + setGlobalAdapter(adapters[adapterNames[0]!]) + expect(() => normalizeBuyTokenBalance('invalid' as any)).toThrow(/invalid order balance/) + }) + }) + + describe('OrderUid packing and extraction', () => { + test('should pack and extract order UIDs consistently', () => { + const params = { + orderDigest: '0x1234567890123456789012345678901234567890123456789012345678901234', + owner: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + validTo: 1609459200, // Unix timestamp + } + + const adapterNames = Object.keys(adapters) as Array + const packedUIDs: string[] = [] + + // Pack with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const packed = packOrderUidParams(params) + packedUIDs.push(packed) + } + + // All packed UIDs should be identical + const [firstPacked, ...remainingPacked] = packedUIDs + remainingPacked.forEach((packed) => { + expect(packed).toEqual(firstPacked) + }) + + // Extract with each adapter + const extractedParams: any[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const extracted = extractOrderUidParams(firstPacked!) + extractedParams.push(extracted) + } + + // All extracted params should be identical and match input + extractedParams.forEach((extracted) => { + expect(extracted).toEqual(params) + }) + + // Test error case - invalid UID length + setGlobalAdapter(adapters[adapterNames[0]!]) + expect(() => extractOrderUidParams('0x1234')).toThrow(/invalid order UID length/) + }) + }) + + describe('decodeOrder', () => { + test('should decode trade data back into an order consistently', () => { + const adapterNames = Object.keys(adapters) as Array + + // First create a token registry and encode a trade + setGlobalAdapter(adapters[adapterNames[0]!]) + const tokenRegistry = new TokenRegistry() + + // Add tokens to the registry + const sellTokenIndex = tokenRegistry.index(testOrder.sellToken) + const buyTokenIndex = tokenRegistry.index(testOrder.buyToken) + + // Create mock trade data + const trade = { + sellTokenIndex, + buyTokenIndex, + receiver: testOrder.receiver || '0x0000000000000000000000000000000000000000', + sellAmount: testOrder.sellAmount, + buyAmount: testOrder.buyAmount, + validTo: testOrder.validTo.valueOf(), + appData: testOrder.appData, + feeAmount: testOrder.feeAmount, + flags: 0, // Encode as a sell order, not partially fillable, ERC20 balances + executedAmount: '0', + signature: '0x', + } as Trade + + // Decode with each adapter + const decodedOrders: any[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const decoded = decodeOrder(trade, tokenRegistry.addresses) + decodedOrders.push(decoded) + } + + // All decoded orders should be identical + const [firstDecoded, ...remainingDecoded] = decodedOrders + remainingDecoded.forEach((decoded) => { + expect(decoded).toEqual(firstDecoded) + }) + + // Decoded order should match original order + // (ignoring receiver which is added by the contract if not provided) + expect(firstDecoded.sellToken).toEqual(testOrder.sellToken) + expect(firstDecoded.buyToken).toEqual(testOrder.buyToken) + expect(firstDecoded.sellAmount).toEqual(testOrder.sellAmount) + expect(firstDecoded.buyAmount).toEqual(testOrder.buyAmount) + expect(firstDecoded.validTo).toEqual(testOrder.validTo) + expect(firstDecoded.appData).toEqual(testOrder.appData) + expect(firstDecoded.feeAmount).toEqual(testOrder.feeAmount) + expect(firstDecoded.kind).toEqual(testOrder.kind) + expect(firstDecoded.partiallyFillable).toEqual(testOrder.partiallyFillable) + + // Test error case - invalid token indices + const invalidTrade = { + ...trade, + sellTokenIndex: 99, // Index that doesn't exist + } + + setGlobalAdapter(adapters[adapterNames[0]!]) + expect(() => decodeOrder(invalidTrade, tokenRegistry.addresses)).toThrow(/Invalid trade/) + }) + }) + + describe('TokenRegistry', () => { + test('should track tokens consistently across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + const registries: TokenRegistry[] = [] + + // Create registries with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const registry = new TokenRegistry() + registries.push(registry) + } + + // Add some tokens + const tokens = [ + getAddress('0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'), // WETH + getAddress('0x6b175474e89094c44da98b954eedeac495271d0f'), // DAI + getAddress('0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'), // USDC + ] + + // Add tokens and get indices for all registries + const allIndices: number[][] = [] + for (const registry of registries) { + const indices = tokens.map((token) => registry.index(token)) + allIndices.push(indices) + } + + // All indices should be sequential starting from 0 + allIndices.forEach((indices) => { + expect(indices).toEqual([0, 1, 2]) + }) + + // Adding same token again should return the same index + registries.forEach((registry) => { + expect(registry.index(tokens[0]!)).toEqual(0) + }) + + // Token addresses should be stored in all registries + registries.forEach((registry) => { + expect(registry.addresses).toEqual(tokens) + }) + + // Test that case normalization works + const mixedCaseToken = '0xC02aaA39b223FE8D0A0e5C4F27ead9083C756Cc2' // WETH with mixed case + registries.forEach((registry) => { + expect(registry.index(mixedCaseToken)).toEqual(0) // Should map to same index as lowercase + }) + }) + }) +}) diff --git a/packages/contracts-ts/tests/order.test.ts b/packages/contracts-ts/tests/order.test.ts new file mode 100644 index 000000000..7e89da709 --- /dev/null +++ b/packages/contracts-ts/tests/order.test.ts @@ -0,0 +1,256 @@ +import { sepolia } from 'viem/chains' +import { createAdapters, TEST_ADDRESS, TEST_PRIVATE_KEY, TEST_RPC_URL } from './setup' +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { setGlobalAdapter, TypedDataDomain } from '@cowprotocol/sdk-common' +import { + ContractsTs, + ContractsOrder as Order, + ContractsOrderKind as OrderKind, + ContractsSigningScheme as SigningScheme, + hashOrder, + computeOrderUid, + extractOrderUidParams, + signOrder, + ContractsSignature as Signature, + decodeSigningScheme, + encodeSigningScheme, + decodeTradeFlags, + encodeTradeFlags, +} from '../src' +import { privateKeyToAccount } from 'viem/accounts' +import { createWalletClient, http } from 'viem' + +describe('Order Hashing and Signing', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + // Test data + const testDomain: TypedDataDomain = { + name: 'Cow Protocol', + version: '1', + chainId: 1, + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + } + + const testOrder: Order = { + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + buyToken: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + validTo: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + feeAmount: '5000000000000000', // 0.005 WETH + kind: OrderKind.SELL, + partiallyFillable: false, + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + }) + + describe('hashOrder', () => { + test('should hash orders consistently across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + const hashes: string[] = [] + + // Hash order with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const hash = hashOrder(testDomain, testOrder) + hashes.push(hash) + } + + // All hashes should be identical + const [firstHash, ...remainingHashes] = hashes + remainingHashes.forEach((hash) => { + expect(hash).toEqual(firstHash) + }) + + // Verify hash format (should be 0x-prefixed 32 byte hash) + expect(firstHash).toMatch(/^0x[0-9a-f]{64}$/i) + }) + }) + + describe('computeOrderUid and extractOrderUidParams', () => { + test('should compute and extract order UIDs consistently across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + const uids: string[] = [] + + // Compute order UID with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const uid = computeOrderUid(testDomain, testOrder, TEST_ADDRESS) + uids.push(uid) + } + + // All UIDs should be identical + const [firstUid, ...remainingUids] = uids + remainingUids.forEach((uid) => { + expect(uid).toEqual(firstUid) + }) + + // Verify UID format (56 bytes) + expect(firstUid).toMatch(/^0x[0-9a-f]{112}$/i) + + // Extract parameters from the UID with each adapter + const extractedParams: any[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const params = extractOrderUidParams(firstUid!) + extractedParams.push(params) + } + + // All extracted parameters should be identical + const [firstParams, ...remainingParams] = extractedParams + remainingParams.forEach((params) => { + expect(params).toEqual(firstParams) + }) + + // Verify the extracted parameters match the input + expect(firstParams.owner).toEqual(TEST_ADDRESS) + expect(firstParams.validTo).toEqual(testOrder.validTo) + + // The order digest should match the hash + setGlobalAdapter(adapters[adapterNames[0]!]) + const orderHash = hashOrder(testDomain, testOrder) + expect(firstParams.orderDigest).toEqual(orderHash) + }) + }) + + describe('signOrder', () => { + test('should sign orders consistently across different adapters', async () => { + const adapterNames = Object.keys(adapters) as Array + + // Setup wallets for each adapter (following the same pattern as contracts) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const viemAccount = privateKeyToAccount(TEST_PRIVATE_KEY as `0x${string}`) + + const wallets = { + ethersV5Adapter: new ethersV5.Wallet(TEST_PRIVATE_KEY, ethersV5Provider), + ethersV6Adapter: new ethersV6.Wallet(TEST_PRIVATE_KEY, ethersV6Provider), + viemAdapter: createWalletClient({ + chain: sepolia, + transport: http(), + account: viemAccount, + }), + } + + // Sign the order with each adapter + const signatures: Signature[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const sig = await signOrder(testDomain, testOrder, wallets[adapterName], SigningScheme.EIP712) + signatures.push(sig) + } + + // All signatures should have the same scheme + signatures.forEach((sig) => { + expect(sig.scheme).toEqual(SigningScheme.EIP712) + }) + + // The signatures may differ slightly in format, but all should be valid ECDSA signatures + const isValidSignature = (sig: Signature) => { + expect(sig.data).toBeDefined() + + // For EIP712 and ETHSIGN, data should be a string or Bytes + if (sig.scheme === SigningScheme.EIP712 || sig.scheme === SigningScheme.ETHSIGN) { + expect(typeof sig.data === 'string' || sig.data instanceof Uint8Array).toBeTruthy() + } + } + + signatures.forEach(isValidSignature) + }) + }) + + describe('SigningScheme encoding/decoding', () => { + test('should encode and decode signing schemes consistently', () => { + const schemes = [SigningScheme.EIP712, SigningScheme.ETHSIGN, SigningScheme.EIP1271, SigningScheme.PRESIGN] + const adapterNames = Object.keys(adapters) as Array + + for (const scheme of schemes) { + const encodedValues: any[] = [] + const decodedValues: any[] = [] + + // For each adapter, encode the scheme + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const encoded = encodeSigningScheme(scheme) + encodedValues.push(encoded) + } + + // All encoded values should be the same + const [firstEncoded, ...remainingEncoded] = encodedValues + remainingEncoded.forEach((encoded) => { + expect(encoded).toEqual(firstEncoded) + }) + + // Decode and verify with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const decoded = decodeSigningScheme(firstEncoded) + decodedValues.push(decoded) + } + + // All decoded values should match the original scheme + decodedValues.forEach((decoded) => { + expect(decoded).toEqual(scheme) + }) + } + }) + }) + + describe('TradeFlags encoding/decoding', () => { + test('should encode and decode trade flags consistently', () => { + const adapterNames = Object.keys(adapters) as Array + + // Create trade flags for testing + const tradeFlags = { + ...testOrder, + signingScheme: SigningScheme.EIP712, + } + + const encodedValues: any[] = [] + const decodedValues: any[] = [] + + // For each adapter, encode the flags + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const encoded = encodeTradeFlags(tradeFlags) + encodedValues.push(encoded) + } + + // All encoded values should be the same + const [firstEncoded, ...remainingEncoded] = encodedValues + remainingEncoded.forEach((encoded) => { + expect(encoded).toEqual(firstEncoded) + }) + + // Decode and verify with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const decoded = decodeTradeFlags(firstEncoded) + decodedValues.push(decoded) + } + + // Verify that all decoded properties match + const checkFlags = (decoded: any) => { + expect(decoded.kind).toEqual(tradeFlags.kind) + expect(decoded.partiallyFillable).toEqual(tradeFlags.partiallyFillable) + expect(decoded.signingScheme).toEqual(tradeFlags.signingScheme) + } + + decodedValues.forEach(checkFlags) + }) + }) +}) diff --git a/packages/contracts-ts/tests/reader.test.ts b/packages/contracts-ts/tests/reader.test.ts new file mode 100644 index 000000000..0b8986912 --- /dev/null +++ b/packages/contracts-ts/tests/reader.test.ts @@ -0,0 +1,593 @@ +import { createAdapters, TEST_ADDRESS, TEST_RPC_URL } from './setup' +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { createPublicClient, http } from 'viem' +import { sepolia } from 'viem/chains' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + AllowListReader, + SettlementReader, + TradeSimulator, + TradeSimulation, + TradeSimulationResult, + InteractionStage, + OrderBalance, +} from '../src' + +describe('Reader Classes and Storage Functions', () => { + let adapters: ReturnType + + // Mock contract addresses and ABIs + const mockAllowListAddress = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41' + const mockSettlementAddress = '0x9008D19f58AAbD9eD0D60971565AA8510560ab42' + const mockReaderAddress = '0x9008D19f58AAbD9eD0D60971565AA8510560ab43' + const mockSimulatorAddress = '0x9008D19f58AAbD9eD0D60971565AA8510560ab44' + + // Simple mock ABIs + const mockAllowListAbi = ['function areSolvers(bytes[] calldata orderUids) external view returns (bool)'] + const mockSettlementAbi = [ + 'function filledAmountsForOrders(bytes[] calldata orderUids) external view returns (uint256[])', + ] + const mockReaderAbi = [ + 'function areSolvers(bytes[] calldata orderUids) external view returns (bool)', + 'function filledAmountsForOrders(bytes[] calldata orderUids) external view returns (uint256[])', + ] + const mockSimulatorAbi = ['function simulateTrade(tuple trade, tuple[3] interactions) external view returns (tuple)'] + + // Test data + const testOrderUids = [ + '0x' + '01'.repeat(56), // Valid 56-byte order UID + '0x' + '02'.repeat(56), // Another valid order UID + ] + + const testSolvers = ['0x1111111111111111111111111111111111111111', '0x2222222222222222222222222222222222222222'] + + const testTradeSimulation: TradeSimulation = { + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + buyToken: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + receiver: TEST_ADDRESS, + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + sellTokenBalance: OrderBalance.ERC20, + buyTokenBalance: OrderBalance.ERC20, + owner: TEST_ADDRESS, + } + + beforeAll(() => { + adapters = createAdapters() + }) + + describe('AllowListReader', () => { + test('should construct AllowListReader consistently across different adapters', () => { + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Reader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Reader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemReader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + viemProvider, + ) + + // All should have the same properties + expect(ethersV5Reader.allowListAddress).toBe(mockAllowListAddress) + expect(ethersV5Reader.readerAddress).toBe(mockReaderAddress) + expect(ethersV6Reader.allowListAddress).toBe(mockAllowListAddress) + expect(ethersV6Reader.readerAddress).toBe(mockReaderAddress) + expect(viemReader.allowListAddress).toBe(mockAllowListAddress) + expect(viemReader.readerAddress).toBe(mockReaderAddress) + + // ABIs should be identical + expect(ethersV5Reader.allowListAbi).toEqual(mockAllowListAbi) + expect(ethersV6Reader.allowListAbi).toEqual(mockAllowListAbi) + expect(viemReader.allowListAbi).toEqual(mockAllowListAbi) + }) + + test('should handle areSolvers method consistently across adapters', async () => { + // Mock the readStorage function to return a consistent result + const mockReadStorage = jest.fn().mockResolvedValue(true) + + // Mock the adapter's utils.readStorage method + const originalReadStorage = adapters.ethersV5Adapter.utils.readStorage + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + adapters.ethersV6Adapter.utils.readStorage = mockReadStorage + adapters.viemAdapter.utils.readStorage = mockReadStorage + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Reader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Reader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemReader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + viemProvider, + ) + + // Call areSolvers with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Result = await ethersV5Reader.areSolvers(testSolvers) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Result = await ethersV6Reader.areSolvers(testSolvers) + + setGlobalAdapter(adapters.viemAdapter) + const viemResult = await viemReader.areSolvers(testSolvers) + + // Results should be consistent + expect(ethersV5Result).toBe('true') + expect(ethersV6Result).toBe('true') + expect(viemResult).toBe('true') + + // Verify readStorage was called correctly + expect(mockReadStorage).toHaveBeenCalledTimes(3) + expect(mockReadStorage).toHaveBeenCalledWith( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + expect.any(Object), // provider + 'areSolvers', + [testSolvers], + ) + }) + }) + + describe('SettlementReader', () => { + test('should construct SettlementReader consistently across different adapters', () => { + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Reader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Reader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemReader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + viemProvider, + ) + + // All should have the same properties + expect(ethersV5Reader.settlementAddress).toBe(mockSettlementAddress) + expect(ethersV5Reader.readerAddress).toBe(mockReaderAddress) + expect(ethersV6Reader.settlementAddress).toBe(mockSettlementAddress) + expect(ethersV6Reader.readerAddress).toBe(mockReaderAddress) + expect(viemReader.settlementAddress).toBe(mockSettlementAddress) + expect(viemReader.readerAddress).toBe(mockReaderAddress) + }) + + test('should handle filledAmountsForOrders method consistently across adapters', async () => { + const mockFilledAmounts = ['500000000000000000', '750000000000000000'] // 0.5 and 0.75 ETH + const mockReadStorage = jest.fn().mockResolvedValue(mockFilledAmounts) + + // Mock the adapter's utils.readStorage method + const originalReadStorage = adapters.ethersV5Adapter.utils.readStorage + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + adapters.ethersV6Adapter.utils.readStorage = mockReadStorage + adapters.viemAdapter.utils.readStorage = mockReadStorage + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Reader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Reader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemReader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + viemProvider, + ) + + // Call filledAmountsForOrders with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Result = await ethersV5Reader.filledAmountsForOrders(testOrderUids) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Result = await ethersV6Reader.filledAmountsForOrders(testOrderUids) + + setGlobalAdapter(adapters.viemAdapter) + const viemResult = await viemReader.filledAmountsForOrders(testOrderUids) + + // Results should be consistent + expect(ethersV5Result).toEqual(mockFilledAmounts) + expect(ethersV6Result).toEqual(mockFilledAmounts) + expect(viemResult).toEqual(mockFilledAmounts) + + // Verify readStorage was called correctly + expect(mockReadStorage).toHaveBeenCalledTimes(3) + expect(mockReadStorage).toHaveBeenCalledWith( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + expect.any(Object), // provider + 'filledAmountsForOrders', + [testOrderUids], + ) + }) + }) + + describe('TradeSimulator', () => { + test('should construct TradeSimulator consistently across different adapters', () => { + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemSimulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + viemProvider, + ) + + // All should have the same properties + expect(ethersV5Simulator.settlementAddress).toBe(mockSettlementAddress) + expect(ethersV5Simulator.simulatorAddress).toBe(mockSimulatorAddress) + expect(ethersV6Simulator.settlementAddress).toBe(mockSettlementAddress) + expect(ethersV6Simulator.simulatorAddress).toBe(mockSimulatorAddress) + expect(viemSimulator.settlementAddress).toBe(mockSettlementAddress) + expect(viemSimulator.simulatorAddress).toBe(mockSimulatorAddress) + }) + + test('should simulate trade consistently across different adapters', async () => { + const mockSimulationResult: TradeSimulationResult = { + gasUsed: '21000', + executedBuyAmount: '1980000000000000000000', // 1980 DAI (after slippage) + contractBalance: { + sellTokenDelta: '1000000000000000000', + buyTokenDelta: '-1980000000000000000000', + }, + ownerBalance: { + sellTokenDelta: '-1000000000000000000', + buyTokenDelta: '1980000000000000000000', + }, + } + + const mockReadStorage = jest.fn().mockResolvedValue(mockSimulationResult) + + // Mock the adapter's utils.readStorage method + const originalReadStorage = adapters.ethersV5Adapter.utils.readStorage + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + adapters.ethersV6Adapter.utils.readStorage = mockReadStorage + adapters.viemAdapter.utils.readStorage = mockReadStorage + + // Mock adapter ZERO_ADDRESS and utils.id + const mockZeroAddress = '0x0000000000000000000000000000000000000000' + adapters.ethersV5Adapter.ZERO_ADDRESS = mockZeroAddress + adapters.ethersV6Adapter.ZERO_ADDRESS = mockZeroAddress + adapters.viemAdapter.ZERO_ADDRESS = mockZeroAddress + + const mockId = jest.fn().mockReturnValue('mocked_id_value') + adapters.ethersV5Adapter.utils.id = mockId + adapters.ethersV6Adapter.utils.id = mockId + adapters.viemAdapter.utils.id = mockId + + const testInteractions = { + [InteractionStage.PRE]: [{ target: '0x1111111111111111111111111111111111111111', callData: '0x1234' }], + [InteractionStage.INTRA]: [{ target: '0x2222222222222222222222222222222222222222', callData: '0x5678' }], + [InteractionStage.POST]: [{ target: '0x3333333333333333333333333333333333333333', callData: '0x9abc' }], + } + + // Test with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + ethersV5Provider, + ) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + ethersV6Provider, + ) + + setGlobalAdapter(adapters.viemAdapter) + const viemProvider = createPublicClient({ + chain: sepolia, + transport: http(TEST_RPC_URL), + }) + const viemSimulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + viemProvider, + ) + + // Call simulateTrade with each adapter + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Result = await ethersV5Simulator.simulateTrade(testTradeSimulation, testInteractions) + + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Result = await ethersV6Simulator.simulateTrade(testTradeSimulation, testInteractions) + + setGlobalAdapter(adapters.viemAdapter) + const viemResult = await viemSimulator.simulateTrade(testTradeSimulation, testInteractions) + + // Results should be consistent + expect(ethersV5Result).toEqual(mockSimulationResult) + expect(ethersV6Result).toEqual(mockSimulationResult) + expect(viemResult).toEqual(mockSimulationResult) + + // Verify readStorage was called correctly + expect(mockReadStorage).toHaveBeenCalledTimes(3) + + // Verify the normalized trade structure + const expectedNormalizedTrade = { + ...testTradeSimulation, + receiver: testTradeSimulation.receiver, // Should use provided receiver + sellTokenBalance: 'mocked_id_value', + buyTokenBalance: 'mocked_id_value', + } + + expect(mockReadStorage).toHaveBeenCalledWith( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + expect.any(Object), // provider + 'simulateTrade', + [expectedNormalizedTrade, expect.any(Array)], // normalized interactions + ) + }) + + test('should handle trade simulation with default values', async () => { + const mockSimulationResult: TradeSimulationResult = { + gasUsed: '21000', + executedBuyAmount: '2000000000000000000000', + contractBalance: { + sellTokenDelta: '0', + buyTokenDelta: '0', + }, + ownerBalance: { + sellTokenDelta: '0', + buyTokenDelta: '0', + }, + } + + const mockReadStorage = jest.fn().mockResolvedValue(mockSimulationResult) + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + + const mockZeroAddress = '0x0000000000000000000000000000000000000000' + adapters.ethersV5Adapter.ZERO_ADDRESS = mockZeroAddress + + const mockId = jest.fn().mockReturnValue('default_balance_id') + adapters.ethersV5Adapter.utils.id = mockId + + setGlobalAdapter(adapters.ethersV5Adapter) + const provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + provider, + ) + + // Test with minimal trade simulation (no receiver, no token balances) + const minimalTrade: TradeSimulation = { + sellToken: testTradeSimulation.sellToken, + buyToken: testTradeSimulation.buyToken, + sellAmount: testTradeSimulation.sellAmount, + buyAmount: testTradeSimulation.buyAmount, + owner: testTradeSimulation.owner, + // receiver, sellTokenBalance, buyTokenBalance are undefined + } as TradeSimulation + + const result = await simulator.simulateTrade(minimalTrade, {}) + + // Should use default values + expect(result).toEqual(mockSimulationResult) + + // Verify the normalized trade uses defaults + const expectedNormalizedTrade = { + ...minimalTrade, + receiver: mockZeroAddress, // Should use ZERO_ADDRESS as default + sellTokenBalance: 'default_balance_id', // Should use ERC20 default + buyTokenBalance: 'default_balance_id', // Should use ERC20 default + } + + expect(mockReadStorage).toHaveBeenCalledWith( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + provider, + 'simulateTrade', + [expectedNormalizedTrade, [[], [], []]], // empty interactions for all stages + ) + }) + }) + + describe('Edge Cases and Error Handling', () => { + test('should handle empty order UIDs arrays', async () => { + const mockReadStorage = jest.fn().mockResolvedValue([]) + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + + setGlobalAdapter(adapters.ethersV5Adapter) + const provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const reader = new SettlementReader( + mockSettlementAddress, + mockSettlementAbi, + mockReaderAddress, + mockReaderAbi, + provider, + ) + + const result = await reader.filledAmountsForOrders([]) + expect(result).toEqual([]) + }) + + test('should handle empty solvers arrays', async () => { + const mockReadStorage = jest.fn().mockResolvedValue(false) + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + + setGlobalAdapter(adapters.ethersV5Adapter) + const provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const reader = new AllowListReader( + mockAllowListAddress, + mockAllowListAbi, + mockReaderAddress, + mockReaderAbi, + provider, + ) + + const result = await reader.areSolvers([]) + expect(result).toBe('false') + }) + + test('should handle interactions with missing stages', async () => { + const mockSimulationResult: TradeSimulationResult = { + gasUsed: '21000', + executedBuyAmount: '2000000000000000000000', + contractBalance: { sellTokenDelta: '0', buyTokenDelta: '0' }, + ownerBalance: { sellTokenDelta: '0', buyTokenDelta: '0' }, + } + + const mockReadStorage = jest.fn().mockResolvedValue(mockSimulationResult) + adapters.ethersV5Adapter.utils.readStorage = mockReadStorage + adapters.ethersV5Adapter.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' + adapters.ethersV5Adapter.utils.id = jest.fn().mockReturnValue('balance_id') + + setGlobalAdapter(adapters.ethersV5Adapter) + const provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const simulator = new TradeSimulator( + mockSettlementAddress, + mockSettlementAbi, + mockSimulatorAddress, + mockSimulatorAbi, + provider, + ) + + // Test with partial interactions (only PRE stage) + const partialInteractions = { + [InteractionStage.PRE]: [{ target: '0x1111111111111111111111111111111111111111', callData: '0x1234' }], + // INTRA and POST stages are missing + } + + const result = await simulator.simulateTrade(testTradeSimulation, partialInteractions) + expect(result).toEqual(mockSimulationResult) + }) + }) +}) diff --git a/packages/contracts-ts/tests/settlement.test.ts b/packages/contracts-ts/tests/settlement.test.ts new file mode 100644 index 000000000..69afd3c3a --- /dev/null +++ b/packages/contracts-ts/tests/settlement.test.ts @@ -0,0 +1,342 @@ +import { sepolia } from 'viem/chains' +import { createAdapters, TEST_ADDRESS, TEST_PRIVATE_KEY, TEST_RPC_URL } from './setup' +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + ContractsTs, + ContractsOrder as Order, + ContractsOrderKind as OrderKind, + ContractsSigningScheme as SigningScheme, + SettlementEncoder, + InteractionStage, + Prices, + TradeExecution, +} from '../src' +import { privateKeyToAccount } from 'viem/accounts' +import { createWalletClient, http } from 'viem' + +describe('SettlementEncoder', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + // Test data + const testDomain = { + name: 'Cow Protocol', + version: '1', + chainId: 1, + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + } + + const testOrder: Order = { + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + buyToken: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + validTo: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + feeAmount: '5000000000000000', // 0.005 WETH + kind: OrderKind.SELL, + partiallyFillable: false, + } + + const testInteraction = { + target: '0xdef1c0ded9bec7f1a1670819833240f027b25eff', // Example CoW Swap contract + callData: '0x12345678', + } + + const testPrices: Prices = { + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2': BigInt('1000000000000000000'), // 1 ETH + '0x6B175474E89094C44Da98b954EedeAC495271d0F': BigInt('500000000000000'), // 0.0005 ETH (2000 DAI per ETH) + } + + const tradeExecution: TradeExecution = { + executedAmount: '1000000000000000000', // 1 WETH + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + }) + + describe('settlement encoding consistency', () => { + test('should consistently encode settlements across different adapters', async () => { + const adapterNames = Object.keys(adapters) as Array + + // Setup wallets for each adapter (following the same pattern as contracts) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const viemAccount = privateKeyToAccount(TEST_PRIVATE_KEY as `0x${string}`) + + const wallets = { + ethersV5Adapter: new ethersV5.Wallet(TEST_PRIVATE_KEY, ethersV5Provider), + ethersV6Adapter: new ethersV6.Wallet(TEST_PRIVATE_KEY, ethersV6Provider), + viemAdapter: createWalletClient({ + chain: sepolia, + transport: http(), + account: viemAccount, + }), + } + + // Create encoders for each adapter + const encoders: Record = {} + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + encoders[adapterName] = new SettlementEncoder(testDomain) + } + + // Add the same interactions to each encoder + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + encoders[adapterName]!.encodeInteraction(testInteraction, InteractionStage.PRE) + } + + // Add the same trades to each encoder + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + await encoders[adapterName]!.signEncodeTrade( + testOrder, + wallets[adapterName], + SigningScheme.EIP712, + tradeExecution, + ) + } + + // Get the encoded settlements + const settlements: any[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const settlement = encoders[adapterName]!.encodedSettlement(testPrices) + settlements.push(settlement) + } + + // Compare the token addresses + const [firstSettlement, ...remainingSettlements] = settlements + remainingSettlements.forEach((settlement) => { + expect(settlement[0]).toEqual(firstSettlement[0]) + }) + + // Compare the clearing prices + remainingSettlements.forEach((settlement) => { + expect(settlement[1]).toEqual(firstSettlement[1]) + }) + + // Compare the encoded trades + // Note: We can't directly compare signature data which may differ by adapter, + // so we compare the trade structure without the signature field + const compareTrades = (trades1: any[], trades2: any[]) => { + expect(trades1.length).toEqual(trades2.length) + for (let i = 0; i < trades1.length; i++) { + const trade1 = { ...trades1[i] } + const trade2 = { ...trades2[i] } + // Don't compare signature directly + delete trade1.signature + delete trade2.signature + expect(trade1).toEqual(trade2) + } + } + + remainingSettlements.forEach((settlement) => { + compareTrades(firstSettlement[2], settlement[2]) + }) + + // Compare the interactions + const compareInteractions = (interactions1: any[], interactions2: any[]) => { + expect(interactions1.length).toEqual(interactions2.length) + for (let i = 0; i < interactions1.length; i++) { + expect(interactions1[i]).toEqual(interactions2[i]) + } + } + + // Compare all interaction stages + remainingSettlements.forEach((settlement) => { + for (let i = 0; i < 3; i++) { + compareInteractions(firstSettlement[3][i]!, settlement[3][i]!) + } + }) + }) + }) + + describe('encodedSetup', () => { + test('should consistently encode setup interactions across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + + // Test multiple interactions + const interactions = [ + { + target: '0xdef1c0ded9bec7f1a1670819833240f027b25eff', + callData: '0x12345678', + }, + { + target: '0x1234567890123456789012345678901234567890', + callData: '0x87654321', + value: '1000000000000000', + }, + ] + + // Encode setup with each adapter + const setups: any[] = [] + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const setup = SettlementEncoder.encodedSetup(...interactions) + setups.push(setup) + } + + // Compare results - all should be identical + const [firstSetup, ...remainingSetups] = setups + remainingSetups.forEach((setup) => { + expect(JSON.stringify(setup)).toEqual(JSON.stringify(firstSetup)) + }) + + // Verify structure - token arrays should be empty + expect(firstSetup[0]).toEqual([]) + + // Prices should be empty + expect(firstSetup[1]).toEqual([]) + + // Trades should be empty + expect(firstSetup[2]).toEqual([]) + + // Compare interactions - they should be in the INTRA stage (index 1) + expect(firstSetup[3][0]).toEqual([]) + expect(firstSetup[3][2]).toEqual([]) + + // The INTRA interactions should match our input + expect(firstSetup[3][1].length).toEqual(interactions.length) + + // Verify each interaction was encoded correctly + for (let i = 0; i < interactions.length; i++) { + expect(firstSetup[3][1][i]!.target).toEqual(interactions[i]!.target) + expect(firstSetup[3][1][i]!.callData).toEqual(interactions[i]!.callData) + } + }) + }) + + describe('clearingPrices', () => { + test('should correctly extract clearing prices', () => { + const adapterNames = Object.keys(adapters) as Array + const testTokens = [ + '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH + '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI + ] + + // Create an encoder and manually set tokens (using first adapter) + setGlobalAdapter(adapters[adapterNames[0]!]) + const encoder = new SettlementEncoder(testDomain) + + // Add orders that use these tokens + encoder.encodeTrade( + testOrder, + { + scheme: SigningScheme.PRESIGN, + data: TEST_ADDRESS, + }, + tradeExecution, + ) + + // Get clearing prices + const prices = encoder.clearingPrices(testPrices) + + // Verify the prices are in the correct order + expect(prices.length).toEqual(testTokens.length) + expect(prices[0]).toEqual(testPrices[testTokens[0]!]) + expect(prices[1]).toEqual(testPrices[testTokens[1]!]) + }) + + test('should throw when missing prices', () => { + const adapterNames = Object.keys(adapters) as Array + + // Create an encoder with incomplete price data + setGlobalAdapter(adapters[adapterNames[0]!]) + const encoder = new SettlementEncoder(testDomain) + + // Add an order that uses WETH and DAI + encoder.encodeTrade( + testOrder, + { + scheme: SigningScheme.PRESIGN, + data: TEST_ADDRESS, + }, + tradeExecution, + ) + + // Try to get clearing prices with incomplete data + const incompletePrices = { + '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2': '1000000000000000000', // Only WETH, missing DAI + } + + // Should throw an error about missing price + expect(() => encoder.clearingPrices(incompletePrices)).toThrow(/missing price for token/) + }) + }) + + describe('encodeOrderRefunds', () => { + test('should correctly encode order refunds', () => { + const adapterNames = Object.keys(adapters) as Array + + // Create realistic order UIDs (using first adapter) + setGlobalAdapter(adapters[adapterNames[0]!]) + const key = (1).toString(16).padStart(2, '0') + const orderUids = [ + contracts.ethersV5Contracts.packOrderUidParams({ + orderDigest: `0x${key}${'42'.repeat(31)}`, + owner: `0x${'01'.repeat(20)}`, + validTo: 0, + }), + contracts.ethersV5Contracts.packOrderUidParams({ + orderDigest: `0x${key}${'40'.repeat(31)}`, + owner: `0x${'02'.repeat(20)}`, + validTo: 0, + }), + ] + + // Create encoder with verifying contract set in domain + const encoder = new SettlementEncoder(testDomain) + + // Encode order refunds + encoder.encodeOrderRefunds({ + filledAmounts: [orderUids[0]], + preSignatures: [orderUids[1]], + }) + + // Verify the order refunds were encoded + const interactions = encoder.encodedOrderRefunds + + // Should have 2 interactions (one for filledAmounts, one for preSignatures) + expect(interactions.length).toBe(2) + + // Each interaction should target the settlement contract + expect(interactions[0]!.target).toBe(testDomain.verifyingContract) + expect(interactions[1]!.target).toBe(testDomain.verifyingContract) + + // callData should be non-empty for both + expect(interactions[0]!.callData).not.toBe('0x') + expect(interactions[1]!.callData).not.toBe('0x') + }) + + test('should throw with invalid order UIDs', () => { + const adapterNames = Object.keys(adapters) as Array + + setGlobalAdapter(adapters[adapterNames[0]!]) + const encoder = new SettlementEncoder(testDomain) + + // Create invalid order UID (wrong length) + const invalidOrderUid = '0x1234567890' + + // Should throw error about invalid order UID + expect(() => + encoder.encodeOrderRefunds({ + filledAmounts: [invalidOrderUid], + }), + ).toThrow(/invalid order UIDs/) + }) + }) +}) diff --git a/packages/contracts-ts/tests/setup.test.ts b/packages/contracts-ts/tests/setup.test.ts new file mode 100644 index 000000000..0fae7bc0e --- /dev/null +++ b/packages/contracts-ts/tests/setup.test.ts @@ -0,0 +1,183 @@ +import { createAdapters, TEST_ADDRESS } from './setup' + +describe('Adapter Setup', () => { + let adapters: ReturnType + + beforeAll(() => { + adapters = createAdapters() + }) + + // Close connections specifically for each adapter + afterAll(async () => { + // For ethers v5 + try { + const ethersV5Wallet = (adapters.ethersV5Adapter as any)._wallet || (adapters.ethersV5Adapter as any).wallet + const ethersV5Provider = ethersV5Wallet?.provider + + if (ethersV5Provider) { + // Try different ways to close the connection + if (typeof ethersV5Provider.disconnect === 'function') { + ethersV5Provider.disconnect() + } + if (typeof ethersV5Provider.destroy === 'function') { + ethersV5Provider.destroy() + } + // Force the provider to remove all listeners + if (typeof ethersV5Provider.removeAllListeners === 'function') { + ethersV5Provider.removeAllListeners() + } + } + } catch (e) { + console.error('Error closing ethersV5 provider:', e) + } + + // For ethers v6 + try { + const ethersV6Wallet = (adapters.ethersV6Adapter as any)._wallet || (adapters.ethersV6Adapter as any).wallet + const ethersV6Provider = ethersV6Wallet?.provider + + if (ethersV6Provider) { + // Try to close any open connections + if (typeof ethersV6Provider.destroy === 'function') { + await ethersV6Provider.destroy() + } + // Some ethers v6 providers have a different method name + if (typeof ethersV6Provider.disconnect === 'function') { + await ethersV6Provider.disconnect() + } + + // If there's a specific connection property, try to close it directly + if (ethersV6Provider.connection) { + if (typeof ethersV6Provider.connection.close === 'function') { + await ethersV6Provider.connection.close() + } + } + + // Make sure no listeners remain + if (typeof ethersV6Provider.removeAllListeners === 'function') { + ethersV6Provider.removeAllListeners() + } + } + } catch (e) { + console.error('Error closing ethersV6 provider:', e) + } + + // For viem + try { + // Access the client or transport directly + const viemClient = (adapters.viemAdapter as any)._client || (adapters.viemAdapter as any).client + const viemTransport = (adapters.viemAdapter as any)._transport || (adapters.viemAdapter as any).transport + + // Close the client if it exists + if (viemClient && typeof viemClient.destroy === 'function') { + await viemClient.destroy() + } + + // Close the transport if it exists + if (viemTransport && typeof viemTransport.destroy === 'function') { + await viemTransport.destroy() + } + } catch (e) { + console.error('Error closing viem adapter:', e) + } + + // Give some time for connections to fully close + await new Promise((resolve) => setTimeout(resolve, 1000)) + }, 10000) // 10 second timeout for cleanup + + test('adapters should be created without errors', () => { + expect(adapters.ethersV5Adapter).toBeDefined() + expect(adapters.ethersV6Adapter).toBeDefined() + expect(adapters.viemAdapter).toBeDefined() + }) + + describe('Provider tests', () => { + test('all adapters should have valid providers with the same chain ID', async () => { + const adapterEntries = [ + ['ethersV5Adapter', adapters.ethersV5Adapter], + ['ethersV6Adapter', adapters.ethersV6Adapter], + ['viemAdapter', adapters.viemAdapter], + ] as const + + // Get chain IDs from all adapters + const results = await Promise.all( + adapterEntries.map(async ([name, adapter]) => { + const chainId = await adapter.getChainId() + return { name, chainId } + }), + ) + + // Verify all chain IDs are valid + for (const result of results) { + expect(result.chainId).toBeGreaterThan(0) + expect(typeof result.chainId).toBe('number') + } + + // Verify all chain IDs are the same + const firstChainId = results[0]?.chainId + for (let i = 1; i < results.length; i++) { + expect(results[i]?.chainId).toBe(firstChainId) + } + }) + }) + + describe('Signer tests', () => { + test('all adapters should have valid signers with the same correct address', async () => { + const adapterEntries = [ + ['ethersV5Adapter', adapters.ethersV5Adapter], + ['ethersV6Adapter', adapters.ethersV6Adapter], + ['viemAdapter', adapters.viemAdapter], + ] as const + + // Get addresses from all adapters + const results = await Promise.all( + adapterEntries.map(async ([name, adapter]) => { + const address = await adapter.getAddress() + return { name, address } + }), + ) + + // Verify all addresses are correct + for (const result of results) { + expect(result.address.toLowerCase()).toBe(TEST_ADDRESS.toLowerCase()) + } + + // Additional verification that all adapters return the same address + const firstAddress = results[0]?.address.toLowerCase() + for (let i = 1; i < results.length; i++) { + expect(results[i]?.address.toLowerCase()).toBe(firstAddress) + } + }) + + test('all adapters should be able to sign messages with the same signature', async () => { + const adapterEntries = [ + ['ethersV5Adapter', adapters.ethersV5Adapter], + ['ethersV6Adapter', adapters.ethersV6Adapter], + ['viemAdapter', adapters.viemAdapter], + ] as const + + const testMessage = 'Test message' + + // Get signatures from all adapters + const results = await Promise.all( + adapterEntries.map(async ([name, adapter]) => { + const signature = await adapter.signMessage(testMessage) + return { name, signature } + }), + ) + + // Verify all signatures are in the correct format + for (const result of results) { + expect(result.signature).toBeTruthy() + expect(result.signature.startsWith('0x')).toBe(true) + expect(result.signature.length).toBeGreaterThan(65) // Signatures should be at least 65 bytes + } + + // Additional verification that all adapters return the same signature + const firstSignature = results[0]?.signature.toLowerCase() + for (let i = 1; i < results.length; i++) { + expect(results[i]?.signature.toLowerCase()).toBe(firstSignature) + } + }) + }) +}) diff --git a/packages/contracts-ts/tests/setup.ts b/packages/contracts-ts/tests/setup.ts new file mode 100644 index 000000000..798c62599 --- /dev/null +++ b/packages/contracts-ts/tests/setup.ts @@ -0,0 +1,50 @@ +import { sepolia as sepoliaConfig } from '@cowprotocol/sdk-config' + +import { EthersV5Adapter } from '@cowprotocol/sdk-ethers-v5-adapter' +import { EthersV6Adapter } from '@cowprotocol/sdk-ethers-v6-adapter' +import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter' + +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { http } from 'viem' +import { privateKeyToAccount } from 'viem/accounts' +import { sepolia } from 'viem/chains' + +// Configuration +// SOME RANDOM GENERATED PRIVATE KEY +export const TEST_PRIVATE_KEY = '0x4de4739ebdab31d6a36e5ecef027c6ab2fd1a80cf2692c3861ba1ccfeb6cf8b8' +export const TEST_RPC_URL = sepoliaConfig.rpcUrls.default.http[0] +export const TEST_CHAIN_ID = 11155111 +export const ethersV5Wallet = new ethersV5.Wallet(TEST_PRIVATE_KEY) +export const TEST_ADDRESS = ethersV5Wallet.address +export const MOCK_TX_PARAMS = { + to: '0x1234567890123456789012345678901234567890', + data: '0x', + value: '1000000000000000000', +} + +// Helper function to create all adapters with the same configuration +export function createAdapters(): { + ethersV5Adapter: EthersV5Adapter + ethersV6Adapter: EthersV6Adapter + viemAdapter: ViemAdapter +} { + // EthersV5 setup + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Wallet = new ethersV5.Wallet(TEST_PRIVATE_KEY, ethersV5Provider) + const ethersV5Adapter = new EthersV5Adapter(ethersV5Wallet) + + // EthersV6 setup + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Wallet = new ethersV6.Wallet(TEST_PRIVATE_KEY, ethersV6Provider) + const ethersV6Adapter = new EthersV6Adapter(ethersV6Wallet) + + const viemAccount = privateKeyToAccount(TEST_PRIVATE_KEY as `0x${string}`) + const viemAdapter = new ViemAdapter(sepolia, http(), viemAccount) + + return { + ethersV5Adapter, + ethersV6Adapter, + viemAdapter, + } +} diff --git a/packages/contracts-ts/tests/sign-order.test.ts b/packages/contracts-ts/tests/sign-order.test.ts new file mode 100644 index 000000000..f9992bab6 --- /dev/null +++ b/packages/contracts-ts/tests/sign-order.test.ts @@ -0,0 +1,125 @@ +import { sepolia } from 'viem/chains' +import { createAdapters, TEST_ADDRESS, TEST_PRIVATE_KEY, TEST_RPC_URL } from './setup' +import { ethers as ethersV5 } from 'ethers-v5' +import * as ethersV6 from 'ethers-v6' +import { setGlobalAdapter, TypedDataDomain } from '@cowprotocol/sdk-common' +import { + ContractsTs, + ContractsOrder as Order, + ContractsSignature as Signature, + Swap, + SwapEncoder, + ContractsOrderKind as OrderKind, + ContractsSigningScheme as SigningScheme, + EncodedSwap, +} from '../src' +import { privateKeyToAccount } from 'viem/accounts' + +import { createWalletClient, http } from 'viem' + +describe('SwapEncoder', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + }) + + describe('encodeSwap', () => { + // Test data for swaps and orders + const testDomain: TypedDataDomain = { + name: 'Cow Protocol', + version: '1', + chainId: 1, + verifyingContract: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', // Example address + } + + const testSwap: Swap = { + poolId: '0x0000000000000000000000000000000000000000000000000000000000000001', + assetIn: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + assetOut: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + amount: '1000000000000000000', // 1 WETH + userData: '0x', + } + + const testOrder: Order = { + sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', // WETH + buyToken: '0x6b175474e89094c44da98b954eedeac495271d0f', // DAI + sellAmount: '1000000000000000000', // 1 WETH + buyAmount: '2000000000000000000000', // 2000 DAI + validTo: Math.floor(Date.now() / 1000) + 3600, // 1 hour from now + appData: '0x0000000000000000000000000000000000000000000000000000000000000000', + feeAmount: '5000000000000000', // 0.005 WETH + kind: OrderKind.SELL, + partiallyFillable: false, + } + + const mockSignature: Signature = { + scheme: SigningScheme.EIP712, + data: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef00', + } + + test('should consistently encode swaps across different adapters', async () => { + // Encode the swap with each adapter + const encodedSwaps = {} as { + ethersV5: EncodedSwap + ethersV6: EncodedSwap + viem: EncodedSwap + } + + // EthersV5 order + setGlobalAdapter(adapters.ethersV5Adapter) + const ethersV5Provider = new ethersV5.providers.JsonRpcProvider(TEST_RPC_URL) + const ethersV5Wallet = new ethersV5.Wallet(TEST_PRIVATE_KEY, ethersV5Provider) + encodedSwaps.ethersV5 = await SwapEncoder.encodeSwap( + ContractsTs.domain(sepolia.id, '0x9008D19f58AAbD9eD0D60971565AA8510560ab41'), + [testSwap], + testOrder, + ethersV5Wallet, + SigningScheme.EIP712, + ) + + // EthersV6 order + setGlobalAdapter(adapters.ethersV6Adapter) + const ethersV6Provider = new ethersV6.JsonRpcProvider(TEST_RPC_URL) + const ethersV6Wallet = new ethersV6.Wallet(TEST_PRIVATE_KEY, ethersV6Provider) + encodedSwaps.ethersV6 = await SwapEncoder.encodeSwap( + ContractsTs.domain(sepolia.id, '0x9008D19f58AAbD9eD0D60971565AA8510560ab41'), + [testSwap], + testOrder, + ethersV6Wallet, + SigningScheme.EIP712, + ) + + // Viem order + setGlobalAdapter(adapters.viemAdapter) + const viemAccount = privateKeyToAccount(TEST_PRIVATE_KEY as `0x${string}`) + const walletClient = createWalletClient({ + chain: sepolia, + transport: http(), + account: viemAccount, + }) + encodedSwaps.viem = await SwapEncoder.encodeSwap( + ContractsTs.domain(sepolia.id, '0x9008D19f58AAbD9eD0D60971565AA8510560ab41'), + [testSwap], + testOrder, + walletClient, + SigningScheme.EIP712, + ) + + // Expect the swaps to be the equal across adapters + expect(encodedSwaps.ethersV5).toBeDefined() + expect(JSON.stringify(encodedSwaps.ethersV5)).toEqual(JSON.stringify(encodedSwaps.ethersV6)) + expect(JSON.stringify(encodedSwaps.ethersV5)).toEqual(JSON.stringify(encodedSwaps.viem)) + }) + }) +}) diff --git a/packages/contracts-ts/tests/signature.test.ts b/packages/contracts-ts/tests/signature.test.ts new file mode 100644 index 000000000..ba80faaeb --- /dev/null +++ b/packages/contracts-ts/tests/signature.test.ts @@ -0,0 +1,250 @@ +import { createAdapters } from './setup' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { + ContractsTs, + InteractionLike, + normalizeInteraction, + normalizeInteractions, + Eip1271SignatureData, + encodeEip1271SignatureData, + decodeEip1271SignatureData, + EIP1271_MAGICVALUE, +} from '../src' +//@ts-ignore +import { log } from 'console' + +describe('Interactions and EIP-1271 Signatures', () => { + let adapters: ReturnType + let contracts: { + ethersV5Contracts: ContractsTs + ethersV6Contracts: ContractsTs + viemContracts: ContractsTs + } + + beforeAll(() => { + adapters = createAdapters() + contracts = { + ethersV5Contracts: new ContractsTs(adapters.ethersV5Adapter), + ethersV6Contracts: new ContractsTs(adapters.ethersV6Adapter), + viemContracts: new ContractsTs(adapters.viemAdapter), + } + }) + + describe('normalizeInteraction', () => { + test('should normalize interactions consistently across different adapters', () => { + const adapterNames = Object.keys(adapters) as Array + + // Test cases + const testCases: InteractionLike[] = [ + { + target: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + }, + { + target: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + callData: '0x12345678', + }, + { + target: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + value: '1000000000000000000', + }, + { + target: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + callData: '0x12345678', + value: '1000000000000000000', + }, + ] + + for (const testCase of testCases) { + const normalizedResults: any[] = [] + + // Normalize with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const normalized = normalizeInteraction(testCase) + normalizedResults.push(normalized) + } + + // All normalized interactions should be identical + const [firstNormalized, ...remainingNormalized] = normalizedResults + remainingNormalized.forEach((normalized) => { + expect(normalized).toEqual(firstNormalized) + }) + + // Verify defaults were applied + expect(firstNormalized.target).toEqual(testCase.target) + expect(firstNormalized.callData).toEqual(testCase.callData || '0x') + expect(firstNormalized.value).toEqual(testCase.value || 0) + } + }) + }) + + describe('normalizeInteractions', () => { + test('should normalize multiple interactions consistently', () => { + const adapterNames = Object.keys(adapters) as Array + + // Test batch of interactions + const interactions: InteractionLike[] = [ + { + target: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + }, + { + target: '0x1234567890123456789012345678901234567890', + callData: '0x12345678', + }, + { + target: '0xabcdef0123456789abcdef0123456789abcdef01', + value: '1000000000000000000', + }, + ] + + const normalizedResults: any[] = [] + + // Normalize batch with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const normalized = normalizeInteractions(interactions) + normalizedResults.push(normalized) + } + + // All normalized interactions should be identical + const [firstNormalized, ...remainingNormalized] = normalizedResults + remainingNormalized.forEach((normalized) => { + expect(normalized).toEqual(firstNormalized) + }) + + // Verify length and content + expect(firstNormalized.length).toEqual(interactions.length) + + for (let i = 0; i < interactions.length; i++) { + expect(firstNormalized[i]!.target).toEqual(interactions[i]!.target) + expect(firstNormalized[i]!.callData).toEqual(interactions[i]!.callData || '0x') + expect(firstNormalized[i]!.value).toEqual(interactions[i]!.value || 0) + } + }) + }) + + describe('EIP-1271 signature encoding/decoding', () => { + test('should encode and decode EIP-1271 signatures consistently', () => { + const adapterNames = Object.keys(adapters) as Array + + // Test signature data + const signatureData: Eip1271SignatureData = { + verifier: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + signature: + '0x29a674dfc87f8c78fc2bfbcbe8ffdd435091a6a84bc7761db72a45da453d73ac41c5ce28eceb34be73fddc12a5d04af6e736405e41b613aeefeed3db8122420c1b', + } + + const encodedResults: string[] = [] + const decodedResults: Eip1271SignatureData[] = [] + + // Encode with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const encoded = encodeEip1271SignatureData(signatureData) + encodedResults.push(encoded) + } + + // All encoded signatures should be identical + const [firstEncoded, ...remainingEncoded] = encodedResults + remainingEncoded.forEach((encoded) => { + expect(encoded).toEqual(firstEncoded) + }) + + // Decode with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const decoded = decodeEip1271SignatureData(firstEncoded) + decodedResults.push(decoded) + } + + // All decoded signatures should be identical and match input + decodedResults.forEach((decoded) => { + expect(decoded).toEqual(signatureData) + }) + + // Test with different signature lengths + const signatures = [ + '0x', // Empty + '0x1234', // Short + '0x' + '1234'.repeat(32), // Long + ] + + for (const signature of signatures) { + const testData: Eip1271SignatureData = { + verifier: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + signature, + } + + // Encode and decode with each adapter and verify consistency + const encodeResults: string[] = [] + const decodeResults: Eip1271SignatureData[] = [] + + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const encoded = encodeEip1271SignatureData(testData) + const decoded = decodeEip1271SignatureData(encoded) + encodeResults.push(encoded) + decodeResults.push(decoded) + } + + // All encoded results should be identical + const [firstEncode, ...remainingEncode] = encodeResults + remainingEncode.forEach((encoded) => { + expect(encoded).toEqual(firstEncode) + }) + + // All decoded results should be identical and match input + decodeResults.forEach((decoded) => { + expect(decoded.verifier).toEqual(testData.verifier) + expect(decoded.signature).toEqual(testData.signature) + }) + } + }) + + test('should handle different verifier address formats', () => { + const adapterNames = Object.keys(adapters) as Array + + // Test with addresses in different formats (lowercase, uppercase, mixed) + const verifiers = [ + '0x9008d19f58aabd9ed0d60971565aa8510560ab41', // lowercase + '0x9008D19F58AABD9ED0D60971565AA8510560AB41', // uppercase + '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', // mixed + ] + + for (const verifier of verifiers) { + const testData: Eip1271SignatureData = { + verifier, + signature: '0x1234', + } + + const encodedResults: string[] = [] + const decodedResults: Eip1271SignatureData[] = [] + + // Encode and decode with each adapter + for (const adapterName of adapterNames) { + setGlobalAdapter(adapters[adapterName]) + const encoded = encodeEip1271SignatureData(testData) + const decoded = decodeEip1271SignatureData(encoded) + encodedResults.push(encoded) + decodedResults.push(decoded) + } + + // All encoded results should be identical + const [firstEncoded, ...remainingEncoded] = encodedResults + remainingEncoded.forEach((encoded) => { + expect(encoded).toEqual(firstEncoded) + }) + + // All decoded verifiers should be consistent (lowercase comparison) + decodedResults.forEach((decoded) => { + expect(decoded.verifier.toLowerCase()).toEqual(verifier.toLowerCase()) + }) + } + }) + + test('EIP1271_MAGICVALUE should be consistent with the standard', () => { + // The EIP-1271 magic value should be 0x1626ba7e + expect(EIP1271_MAGICVALUE).toEqual('0x1626ba7e') + }) + }) +}) diff --git a/packages/contracts-ts/tests/vault.test.ts b/packages/contracts-ts/tests/vault.test.ts new file mode 100644 index 000000000..5deaa2923 --- /dev/null +++ b/packages/contracts-ts/tests/vault.test.ts @@ -0,0 +1,174 @@ +// Improved test structure with better coverage and reduced duplication + +import { createAdapters } from './setup' +import { setGlobalAdapter } from '@cowprotocol/sdk-common' +import { grantRequiredRoles } from '../src' + +// Expected role identifiers - these should match what the function actually grants +const EXPECTED_VAULT_ROLES = { + MANAGE_USER_BALANCE: 'manageUserBalance', + BATCH_SWAP: 'batchSwap', +} as const + +// Common test data +const TEST_DATA = { + authorizerAddress: '0x1111111111111111111111111111111111111111', + vaultAddress: '0x9008D19f58AAbD9eD0D60971565AA8510560ab41', + vaultRelayerAddress: '0x1234567890123456789012345678901234567890', + mockAuthorizerAbi: [ + { + name: 'grantRole', + type: 'function', + inputs: [ + { name: 'role', type: 'bytes32' }, + { name: 'account', type: 'address' }, + ], + }, + ], +} + +describe('grantRequiredRoles', () => { + // Test each adapter type + const adapters = ['ethersV5', 'ethersV6', 'viem'] as const + + adapters.forEach((adapterType) => { + describe(`with ${adapterType} adapter`, () => { + let adapters: ReturnType + + beforeAll(() => { + adapters = createAdapters() + setGlobalAdapter(adapters[`${adapterType}Adapter`]) + }) + + describe('successful role granting', () => { + test('should grant exactly the required vault roles', async () => { + const mockContractCall = jest.fn().mockResolvedValue(undefined) + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + TEST_DATA.vaultAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall, + ) + + // Verify correct number of calls + expect(mockContractCall).toHaveBeenCalledTimes(Object.keys(EXPECTED_VAULT_ROLES).length) + + // Verify each call structure + mockContractCall.mock.calls.forEach((call) => { + expect(call[0]).toBe(TEST_DATA.authorizerAddress) + expect(call[1]).toBe(TEST_DATA.mockAuthorizerAbi) + expect(call[2]).toBe('grantRole') + expect(call[3]).toHaveLength(2) + expect(call[3][1]).toBe(TEST_DATA.vaultRelayerAddress) + + // Verify role hash format + const roleHash = call[3][0] + expect(typeof roleHash).toBe('string') + expect(roleHash).toMatch(/^0x[a-fA-F0-9]{64}$/) + }) + + // Verify unique role hashes + const roleHashes = new Set(mockContractCall.mock.calls.map((call) => call[3][0])) + expect(roleHashes.size).toBe(Object.keys(EXPECTED_VAULT_ROLES).length) + }) + + test('should generate consistent role hashes across calls', async () => { + const mockContractCall1 = jest.fn().mockResolvedValue(undefined) + const mockContractCall2 = jest.fn().mockResolvedValue(undefined) + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + TEST_DATA.vaultAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall1, + ) + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + TEST_DATA.vaultAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall2, + ) + + const roleHashes1 = mockContractCall1.mock.calls.map((call) => call[3][0]).sort() + const roleHashes2 = mockContractCall2.mock.calls.map((call) => call[3][0]).sort() + + expect(roleHashes1).toEqual(roleHashes2) + }) + + test('should generate different role hashes for different vault addresses', async () => { + const mockContractCall1 = jest.fn().mockResolvedValue(undefined) + const mockContractCall2 = jest.fn().mockResolvedValue(undefined) + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + TEST_DATA.vaultAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall1, + ) + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + '0x5555555555555555555555555555555555555555', // Different vault + TEST_DATA.vaultRelayerAddress, + mockContractCall2, + ) + + const roleHashes1 = new Set(mockContractCall1.mock.calls.map((call) => call[3][0])) + const roleHashes2 = new Set(mockContractCall2.mock.calls.map((call) => call[3][0])) + + // Should have no overlap in role hashes + const intersection = new Set([...roleHashes1].filter((x) => roleHashes2.has(x))) + expect(intersection.size).toBe(0) + }) + }) + + describe('error handling', () => { + test('should propagate contractCall errors', async () => { + const mockError = new Error('Contract call failed') + const mockContractCall = jest.fn().mockRejectedValue(mockError) + + await expect( + grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + TEST_DATA.vaultAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall, + ), + ).rejects.toThrow('Contract call failed') + }) + }) + }) + }) + + // Adapter-specific tests only where behavior differs + describe('adapter-specific behavior', () => { + test('viem adapter should handle checksummed addresses correctly', async () => { + const adapters = createAdapters() + setGlobalAdapter(adapters.viemAdapter) + + const mockContractCall = jest.fn().mockResolvedValue(undefined) + + // Use mixed-case address to test checksum handling + const checksummedAddress = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41' + + await grantRequiredRoles( + TEST_DATA.authorizerAddress, + TEST_DATA.mockAuthorizerAbi, + checksummedAddress, + TEST_DATA.vaultRelayerAddress, + mockContractCall, + ) + + expect(mockContractCall).toHaveBeenCalled() + // Verify the address was handled correctly (implementation specific) + }) + }) +}) diff --git a/packages/contracts-ts/tsconfig.json b/packages/contracts-ts/tsconfig.json index 4f20a54d8..6173d9fb9 100644 --- a/packages/contracts-ts/tsconfig.json +++ b/packages/contracts-ts/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../packages/typescript-config/base.json", "compilerOptions": { - "outDir": "./dist" + "outDir": "./dist", + "types": ["jest"] }, "include": ["src/**/*", "tests/**/*"], "exclude": ["node_modules", "dist"] diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json index ee44aeaea..7000836a3 100644 --- a/packages/typescript-config/base.json +++ b/packages/typescript-config/base.json @@ -6,7 +6,7 @@ "esModuleInterop": true, "incremental": false, "isolatedModules": true, - "lib": ["es2022"], + "lib": ["es2022", "DOM"], "module": "NodeNext", "moduleDetection": "force", "moduleResolution": "NodeNext", From 68360fc030cd269d13d5aee8f2e89b53c4b4fc74 Mon Sep 17 00:00:00 2001 From: Jean Neiverth Date: Thu, 29 May 2025 10:27:40 -0300 Subject: [PATCH 25/33] chore: update contracts-ts config --- packages/contracts-ts/package.json | 1 + packages/contracts-ts/tsconfig.json | 2 +- pnpm-lock.yaml | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/contracts-ts/package.json b/packages/contracts-ts/package.json index 3f5e1d122..303827dfa 100644 --- a/packages/contracts-ts/package.json +++ b/packages/contracts-ts/package.json @@ -23,6 +23,7 @@ "@cowprotocol/sdk-config": "workspace:*" }, "devDependencies": { + "@repo/typescript-config": "workspace:*", "@cowprotocol/sdk-ethers-v5-adapter": "workspace:*", "@cowprotocol/sdk-ethers-v6-adapter": "workspace:*", "@cowprotocol/sdk-viem-adapter": "workspace:*", diff --git a/packages/contracts-ts/tsconfig.json b/packages/contracts-ts/tsconfig.json index 6173d9fb9..005a574a4 100644 --- a/packages/contracts-ts/tsconfig.json +++ b/packages/contracts-ts/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../packages/typescript-config/base.json", + "extends": "@repo/typescript-config/base.json", "compilerOptions": { "outDir": "./dist", "types": ["jest"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f6c31506b..9fb670955 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,6 +164,9 @@ importers: '@cowprotocol/sdk-viem-adapter': specifier: workspace:* version: link:../providers/viem-adapter + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config '@types/jest': specifier: ^29.5.5 version: 29.5.14 From fd2dea15cc17d8f5d3366e3623957b62aa555a1a Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 11:27:45 -0300 Subject: [PATCH 26/33] chore(order-book): move order-book to monorepo package --- .../{cow-sdk/src/order-book => order-book/src}/__mock__/api.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/api.spec.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/api.ts | 0 .../{cow-sdk/src/order-book => order-book/src}/generated/index.ts | 0 .../src/order-book => order-book/src}/generated/models/Address.ts | 0 .../src/order-book => order-book/src}/generated/models/AppData.ts | 0 .../order-book => order-book/src}/generated/models/AppDataHash.ts | 0 .../src}/generated/models/AppDataObject.ts | 0 .../src/order-book => order-book/src}/generated/models/Auction.ts | 0 .../src}/generated/models/AuctionOrder.ts | 0 .../src}/generated/models/AuctionPrices.ts | 0 .../src/order-book => order-book/src}/generated/models/BigUint.ts | 0 .../src}/generated/models/BuyTokenDestination.ts | 0 .../order-book => order-book/src}/generated/models/CallData.ts | 0 .../src}/generated/models/CompetitionAuction.ts | 0 .../src}/generated/models/CompetitionOrderStatus.ts | 0 .../src}/generated/models/EcdsaSignature.ts | 0 .../src}/generated/models/EcdsaSigningScheme.ts | 0 .../order-book => order-book/src}/generated/models/EthflowData.ts | 0 .../src}/generated/models/ExecutedAmounts.ts | 0 .../src}/generated/models/ExecutedProtocolFee.ts | 0 .../order-book => order-book/src}/generated/models/FeePolicy.ts | 0 .../src}/generated/models/InteractionData.ts | 0 .../src}/generated/models/NativePriceResponse.ts | 0 .../src}/generated/models/OnchainOrderData.ts | 0 .../src/order-book => order-book/src}/generated/models/Order.ts | 0 .../src}/generated/models/OrderCancellation.ts | 0 .../src}/generated/models/OrderCancellationError.ts | 0 .../src}/generated/models/OrderCancellations.ts | 0 .../order-book => order-book/src}/generated/models/OrderClass.ts | 0 .../src}/generated/models/OrderCreation.ts | 0 .../order-book => order-book/src}/generated/models/OrderKind.ts | 0 .../src}/generated/models/OrderMetaData.ts | 0 .../src}/generated/models/OrderParameters.ts | 0 .../src}/generated/models/OrderPostError.ts | 0 .../src}/generated/models/OrderQuoteRequest.ts | 0 .../src}/generated/models/OrderQuoteResponse.ts | 0 .../src}/generated/models/OrderQuoteSide.ts | 0 .../src}/generated/models/OrderQuoteSideKindBuy.ts | 0 .../src}/generated/models/OrderQuoteSideKindSell.ts | 0 .../src}/generated/models/OrderQuoteValidity.ts | 0 .../order-book => order-book/src}/generated/models/OrderStatus.ts | 0 .../src}/generated/models/PreSignature.ts | 0 .../src}/generated/models/PriceEstimationError.ts | 0 .../src}/generated/models/PriceImprovement.ts | 0 .../src}/generated/models/PriceQuality.ts | 0 .../src/order-book => order-book/src}/generated/models/Quote.ts | 0 .../src}/generated/models/SellTokenSource.ts | 0 .../order-book => order-book/src}/generated/models/Signature.ts | 0 .../src}/generated/models/SigningScheme.ts | 0 .../src}/generated/models/SolverCompetitionResponse.ts | 0 .../src}/generated/models/SolverSettlement.ts | 0 .../src/order-book => order-book/src}/generated/models/Surplus.ts | 0 .../order-book => order-book/src}/generated/models/TokenAmount.ts | 0 .../src}/generated/models/TotalSurplus.ts | 0 .../src/order-book => order-book/src}/generated/models/Trade.ts | 0 .../src}/generated/models/TransactionHash.ts | 0 .../src/order-book => order-book/src}/generated/models/UID.ts | 0 .../src/order-book => order-book/src}/generated/models/Volume.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/index.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/mock.ts | 0 .../src}/quoteAmountsAndCostsUtils.test.ts | 0 .../order-book => order-book/src}/quoteAmountsAndCostsUtils.ts | 0 .../{cow-sdk/src/order-book => order-book/src}/request.test.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/request.ts | 0 .../src/order-book => order-book/src}/transformOrder.test.ts | 0 .../{cow-sdk/src/order-book => order-book/src}/transformOrder.ts | 0 packages/{cow-sdk/src/order-book => order-book/src}/types.ts | 0 68 files changed, 0 insertions(+), 0 deletions(-) rename packages/{cow-sdk/src/order-book => order-book/src}/__mock__/api.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/api.spec.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/api.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/index.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Address.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/AppData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/AppDataHash.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/AppDataObject.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Auction.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/AuctionOrder.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/AuctionPrices.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/BigUint.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/BuyTokenDestination.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/CallData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/CompetitionAuction.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/CompetitionOrderStatus.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/EcdsaSignature.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/EcdsaSigningScheme.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/EthflowData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/ExecutedAmounts.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/ExecutedProtocolFee.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/FeePolicy.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/InteractionData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/NativePriceResponse.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OnchainOrderData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Order.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderCancellation.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderCancellationError.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderCancellations.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderClass.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderCreation.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderKind.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderMetaData.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderParameters.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderPostError.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteRequest.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteResponse.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteSide.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteSideKindBuy.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteSideKindSell.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderQuoteValidity.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/OrderStatus.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/PreSignature.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/PriceEstimationError.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/PriceImprovement.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/PriceQuality.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Quote.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/SellTokenSource.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Signature.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/SigningScheme.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/SolverCompetitionResponse.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/SolverSettlement.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Surplus.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/TokenAmount.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/TotalSurplus.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Trade.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/TransactionHash.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/UID.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/generated/models/Volume.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/index.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/mock.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/quoteAmountsAndCostsUtils.test.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/quoteAmountsAndCostsUtils.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/request.test.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/request.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/transformOrder.test.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/transformOrder.ts (100%) rename packages/{cow-sdk/src/order-book => order-book/src}/types.ts (100%) diff --git a/packages/cow-sdk/src/order-book/__mock__/api.ts b/packages/order-book/src/__mock__/api.ts similarity index 100% rename from packages/cow-sdk/src/order-book/__mock__/api.ts rename to packages/order-book/src/__mock__/api.ts diff --git a/packages/cow-sdk/src/order-book/api.spec.ts b/packages/order-book/src/api.spec.ts similarity index 100% rename from packages/cow-sdk/src/order-book/api.spec.ts rename to packages/order-book/src/api.spec.ts diff --git a/packages/cow-sdk/src/order-book/api.ts b/packages/order-book/src/api.ts similarity index 100% rename from packages/cow-sdk/src/order-book/api.ts rename to packages/order-book/src/api.ts diff --git a/packages/cow-sdk/src/order-book/generated/index.ts b/packages/order-book/src/generated/index.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/index.ts rename to packages/order-book/src/generated/index.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Address.ts b/packages/order-book/src/generated/models/Address.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Address.ts rename to packages/order-book/src/generated/models/Address.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/AppData.ts b/packages/order-book/src/generated/models/AppData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/AppData.ts rename to packages/order-book/src/generated/models/AppData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/AppDataHash.ts b/packages/order-book/src/generated/models/AppDataHash.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/AppDataHash.ts rename to packages/order-book/src/generated/models/AppDataHash.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/AppDataObject.ts b/packages/order-book/src/generated/models/AppDataObject.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/AppDataObject.ts rename to packages/order-book/src/generated/models/AppDataObject.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Auction.ts b/packages/order-book/src/generated/models/Auction.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Auction.ts rename to packages/order-book/src/generated/models/Auction.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/AuctionOrder.ts b/packages/order-book/src/generated/models/AuctionOrder.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/AuctionOrder.ts rename to packages/order-book/src/generated/models/AuctionOrder.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/AuctionPrices.ts b/packages/order-book/src/generated/models/AuctionPrices.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/AuctionPrices.ts rename to packages/order-book/src/generated/models/AuctionPrices.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/BigUint.ts b/packages/order-book/src/generated/models/BigUint.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/BigUint.ts rename to packages/order-book/src/generated/models/BigUint.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts b/packages/order-book/src/generated/models/BuyTokenDestination.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/BuyTokenDestination.ts rename to packages/order-book/src/generated/models/BuyTokenDestination.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/CallData.ts b/packages/order-book/src/generated/models/CallData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/CallData.ts rename to packages/order-book/src/generated/models/CallData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts b/packages/order-book/src/generated/models/CompetitionAuction.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/CompetitionAuction.ts rename to packages/order-book/src/generated/models/CompetitionAuction.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts b/packages/order-book/src/generated/models/CompetitionOrderStatus.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/CompetitionOrderStatus.ts rename to packages/order-book/src/generated/models/CompetitionOrderStatus.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts b/packages/order-book/src/generated/models/EcdsaSignature.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/EcdsaSignature.ts rename to packages/order-book/src/generated/models/EcdsaSignature.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts b/packages/order-book/src/generated/models/EcdsaSigningScheme.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/EcdsaSigningScheme.ts rename to packages/order-book/src/generated/models/EcdsaSigningScheme.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/EthflowData.ts b/packages/order-book/src/generated/models/EthflowData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/EthflowData.ts rename to packages/order-book/src/generated/models/EthflowData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts b/packages/order-book/src/generated/models/ExecutedAmounts.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/ExecutedAmounts.ts rename to packages/order-book/src/generated/models/ExecutedAmounts.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts b/packages/order-book/src/generated/models/ExecutedProtocolFee.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/ExecutedProtocolFee.ts rename to packages/order-book/src/generated/models/ExecutedProtocolFee.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/FeePolicy.ts b/packages/order-book/src/generated/models/FeePolicy.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/FeePolicy.ts rename to packages/order-book/src/generated/models/FeePolicy.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/InteractionData.ts b/packages/order-book/src/generated/models/InteractionData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/InteractionData.ts rename to packages/order-book/src/generated/models/InteractionData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts b/packages/order-book/src/generated/models/NativePriceResponse.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/NativePriceResponse.ts rename to packages/order-book/src/generated/models/NativePriceResponse.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts b/packages/order-book/src/generated/models/OnchainOrderData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OnchainOrderData.ts rename to packages/order-book/src/generated/models/OnchainOrderData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Order.ts b/packages/order-book/src/generated/models/Order.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Order.ts rename to packages/order-book/src/generated/models/Order.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderCancellation.ts b/packages/order-book/src/generated/models/OrderCancellation.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderCancellation.ts rename to packages/order-book/src/generated/models/OrderCancellation.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts b/packages/order-book/src/generated/models/OrderCancellationError.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderCancellationError.ts rename to packages/order-book/src/generated/models/OrderCancellationError.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderCancellations.ts b/packages/order-book/src/generated/models/OrderCancellations.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderCancellations.ts rename to packages/order-book/src/generated/models/OrderCancellations.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderClass.ts b/packages/order-book/src/generated/models/OrderClass.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderClass.ts rename to packages/order-book/src/generated/models/OrderClass.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderCreation.ts b/packages/order-book/src/generated/models/OrderCreation.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderCreation.ts rename to packages/order-book/src/generated/models/OrderCreation.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderKind.ts b/packages/order-book/src/generated/models/OrderKind.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderKind.ts rename to packages/order-book/src/generated/models/OrderKind.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderMetaData.ts b/packages/order-book/src/generated/models/OrderMetaData.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderMetaData.ts rename to packages/order-book/src/generated/models/OrderMetaData.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderParameters.ts b/packages/order-book/src/generated/models/OrderParameters.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderParameters.ts rename to packages/order-book/src/generated/models/OrderParameters.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderPostError.ts b/packages/order-book/src/generated/models/OrderPostError.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderPostError.ts rename to packages/order-book/src/generated/models/OrderPostError.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts b/packages/order-book/src/generated/models/OrderQuoteRequest.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteRequest.ts rename to packages/order-book/src/generated/models/OrderQuoteRequest.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts b/packages/order-book/src/generated/models/OrderQuoteResponse.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteResponse.ts rename to packages/order-book/src/generated/models/OrderQuoteResponse.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts b/packages/order-book/src/generated/models/OrderQuoteSide.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteSide.ts rename to packages/order-book/src/generated/models/OrderQuoteSide.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts b/packages/order-book/src/generated/models/OrderQuoteSideKindBuy.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindBuy.ts rename to packages/order-book/src/generated/models/OrderQuoteSideKindBuy.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts b/packages/order-book/src/generated/models/OrderQuoteSideKindSell.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteSideKindSell.ts rename to packages/order-book/src/generated/models/OrderQuoteSideKindSell.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts b/packages/order-book/src/generated/models/OrderQuoteValidity.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderQuoteValidity.ts rename to packages/order-book/src/generated/models/OrderQuoteValidity.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/OrderStatus.ts b/packages/order-book/src/generated/models/OrderStatus.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/OrderStatus.ts rename to packages/order-book/src/generated/models/OrderStatus.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/PreSignature.ts b/packages/order-book/src/generated/models/PreSignature.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/PreSignature.ts rename to packages/order-book/src/generated/models/PreSignature.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts b/packages/order-book/src/generated/models/PriceEstimationError.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/PriceEstimationError.ts rename to packages/order-book/src/generated/models/PriceEstimationError.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/PriceImprovement.ts b/packages/order-book/src/generated/models/PriceImprovement.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/PriceImprovement.ts rename to packages/order-book/src/generated/models/PriceImprovement.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/PriceQuality.ts b/packages/order-book/src/generated/models/PriceQuality.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/PriceQuality.ts rename to packages/order-book/src/generated/models/PriceQuality.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Quote.ts b/packages/order-book/src/generated/models/Quote.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Quote.ts rename to packages/order-book/src/generated/models/Quote.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/SellTokenSource.ts b/packages/order-book/src/generated/models/SellTokenSource.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/SellTokenSource.ts rename to packages/order-book/src/generated/models/SellTokenSource.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Signature.ts b/packages/order-book/src/generated/models/Signature.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Signature.ts rename to packages/order-book/src/generated/models/Signature.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/SigningScheme.ts b/packages/order-book/src/generated/models/SigningScheme.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/SigningScheme.ts rename to packages/order-book/src/generated/models/SigningScheme.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts b/packages/order-book/src/generated/models/SolverCompetitionResponse.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/SolverCompetitionResponse.ts rename to packages/order-book/src/generated/models/SolverCompetitionResponse.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/SolverSettlement.ts b/packages/order-book/src/generated/models/SolverSettlement.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/SolverSettlement.ts rename to packages/order-book/src/generated/models/SolverSettlement.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Surplus.ts b/packages/order-book/src/generated/models/Surplus.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Surplus.ts rename to packages/order-book/src/generated/models/Surplus.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/TokenAmount.ts b/packages/order-book/src/generated/models/TokenAmount.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/TokenAmount.ts rename to packages/order-book/src/generated/models/TokenAmount.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/TotalSurplus.ts b/packages/order-book/src/generated/models/TotalSurplus.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/TotalSurplus.ts rename to packages/order-book/src/generated/models/TotalSurplus.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Trade.ts b/packages/order-book/src/generated/models/Trade.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Trade.ts rename to packages/order-book/src/generated/models/Trade.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/TransactionHash.ts b/packages/order-book/src/generated/models/TransactionHash.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/TransactionHash.ts rename to packages/order-book/src/generated/models/TransactionHash.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/UID.ts b/packages/order-book/src/generated/models/UID.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/UID.ts rename to packages/order-book/src/generated/models/UID.ts diff --git a/packages/cow-sdk/src/order-book/generated/models/Volume.ts b/packages/order-book/src/generated/models/Volume.ts similarity index 100% rename from packages/cow-sdk/src/order-book/generated/models/Volume.ts rename to packages/order-book/src/generated/models/Volume.ts diff --git a/packages/cow-sdk/src/order-book/index.ts b/packages/order-book/src/index.ts similarity index 100% rename from packages/cow-sdk/src/order-book/index.ts rename to packages/order-book/src/index.ts diff --git a/packages/cow-sdk/src/order-book/mock.ts b/packages/order-book/src/mock.ts similarity index 100% rename from packages/cow-sdk/src/order-book/mock.ts rename to packages/order-book/src/mock.ts diff --git a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts b/packages/order-book/src/quoteAmountsAndCostsUtils.test.ts similarity index 100% rename from packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.test.ts rename to packages/order-book/src/quoteAmountsAndCostsUtils.test.ts diff --git a/packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts b/packages/order-book/src/quoteAmountsAndCostsUtils.ts similarity index 100% rename from packages/cow-sdk/src/order-book/quoteAmountsAndCostsUtils.ts rename to packages/order-book/src/quoteAmountsAndCostsUtils.ts diff --git a/packages/cow-sdk/src/order-book/request.test.ts b/packages/order-book/src/request.test.ts similarity index 100% rename from packages/cow-sdk/src/order-book/request.test.ts rename to packages/order-book/src/request.test.ts diff --git a/packages/cow-sdk/src/order-book/request.ts b/packages/order-book/src/request.ts similarity index 100% rename from packages/cow-sdk/src/order-book/request.ts rename to packages/order-book/src/request.ts diff --git a/packages/cow-sdk/src/order-book/transformOrder.test.ts b/packages/order-book/src/transformOrder.test.ts similarity index 100% rename from packages/cow-sdk/src/order-book/transformOrder.test.ts rename to packages/order-book/src/transformOrder.test.ts diff --git a/packages/cow-sdk/src/order-book/transformOrder.ts b/packages/order-book/src/transformOrder.ts similarity index 100% rename from packages/cow-sdk/src/order-book/transformOrder.ts rename to packages/order-book/src/transformOrder.ts diff --git a/packages/cow-sdk/src/order-book/types.ts b/packages/order-book/src/types.ts similarity index 100% rename from packages/cow-sdk/src/order-book/types.ts rename to packages/order-book/src/types.ts From a0159cf6a78170a11cdefe8e9c8b3021feb7ec67 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 12:41:48 -0300 Subject: [PATCH 27/33] restore: bring back deleted type files with their history --- packages/{cow-sdk/src/common => common/src}/utils/log.ts | 0 .../{cow-sdk/src/common => common/src}/utils/serialize.ts | 0 packages/config/src/types/cow-error.ts | 8 ++++++++ packages/config/src/types/ethereum.ts | 5 +++++ packages/config/src/types/index.ts | 3 +++ packages/config/src/types/wallets.ts | 6 ++++++ 6 files changed, 22 insertions(+) rename packages/{cow-sdk/src/common => common/src}/utils/log.ts (100%) rename packages/{cow-sdk/src/common => common/src}/utils/serialize.ts (100%) create mode 100644 packages/config/src/types/cow-error.ts create mode 100644 packages/config/src/types/ethereum.ts create mode 100644 packages/config/src/types/wallets.ts diff --git a/packages/cow-sdk/src/common/utils/log.ts b/packages/common/src/utils/log.ts similarity index 100% rename from packages/cow-sdk/src/common/utils/log.ts rename to packages/common/src/utils/log.ts diff --git a/packages/cow-sdk/src/common/utils/serialize.ts b/packages/common/src/utils/serialize.ts similarity index 100% rename from packages/cow-sdk/src/common/utils/serialize.ts rename to packages/common/src/utils/serialize.ts diff --git a/packages/config/src/types/cow-error.ts b/packages/config/src/types/cow-error.ts new file mode 100644 index 000000000..b6e79445c --- /dev/null +++ b/packages/config/src/types/cow-error.ts @@ -0,0 +1,8 @@ +export class CowError extends Error { + error_code?: string + + constructor(message: string, error_code?: string) { + super(message) + this.error_code = error_code + } +} diff --git a/packages/config/src/types/ethereum.ts b/packages/config/src/types/ethereum.ts new file mode 100644 index 000000000..ad776b03e --- /dev/null +++ b/packages/config/src/types/ethereum.ts @@ -0,0 +1,5 @@ +export interface EvmCall { + to: string + data: string + value: bigint +} diff --git a/packages/config/src/types/index.ts b/packages/config/src/types/index.ts index 13f554e00..82d795da7 100644 --- a/packages/config/src/types/index.ts +++ b/packages/config/src/types/index.ts @@ -1,2 +1,5 @@ export * from './configs' export * from './tokens' +export * from './cow-error' +export * from './ethereum' +export * from './wallets' diff --git a/packages/config/src/types/wallets.ts b/packages/config/src/types/wallets.ts new file mode 100644 index 000000000..895021ade --- /dev/null +++ b/packages/config/src/types/wallets.ts @@ -0,0 +1,6 @@ +import { Signer } from 'ethers' +import type { ExternalProvider } from '@ethersproject/providers' + +export type PrivateKey = string // 64 characters +export type AccountAddress = `0x${string}` // 42 characters +export type SignerLike = Signer | ExternalProvider | PrivateKey From 066749bd5146f84564a577302e83b4f761f3ed79 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 12:49:04 -0300 Subject: [PATCH 28/33] restore: bring back deleted config and path files with their history --- packages/config/src/chains/const/path.ts | 3 +++ packages/config/src/constants/config.ts | 15 +++++++++++++++ packages/config/src/constants/index.ts | 1 + packages/config/src/constants/path.ts | 1 + 4 files changed, 20 insertions(+) create mode 100644 packages/config/src/chains/const/path.ts create mode 100644 packages/config/src/constants/config.ts create mode 100644 packages/config/src/constants/path.ts diff --git a/packages/config/src/chains/const/path.ts b/packages/config/src/chains/const/path.ts new file mode 100644 index 000000000..e8993c089 --- /dev/null +++ b/packages/config/src/chains/const/path.ts @@ -0,0 +1,3 @@ +import { RAW_FILES_PATH } from '../../common/consts/path' + +export const RAW_CHAINS_FILES_PATH = `${RAW_FILES_PATH}/src/chains` diff --git a/packages/config/src/constants/config.ts b/packages/config/src/constants/config.ts new file mode 100644 index 000000000..d2b700fa8 --- /dev/null +++ b/packages/config/src/constants/config.ts @@ -0,0 +1,15 @@ +import { SupportedChainId } from '../../chains/types' +import { ApiContext, CowEnv } from '../types/config' + +/** + * The list of available environments. + */ +export const ENVS_LIST: CowEnv[] = ['prod', 'staging'] + +/** + * The default CoW Protocol API context. + */ +export const DEFAULT_COW_API_CONTEXT: ApiContext = { + env: 'prod', + chainId: SupportedChainId.MAINNET, +} diff --git a/packages/config/src/constants/index.ts b/packages/config/src/constants/index.ts index 005cd3114..da154e955 100644 --- a/packages/config/src/constants/index.ts +++ b/packages/config/src/constants/index.ts @@ -1,2 +1,3 @@ export * from './ipfs' export * from './paths' +export * from './config' diff --git a/packages/config/src/constants/path.ts b/packages/config/src/constants/path.ts new file mode 100644 index 000000000..4a60f32d4 --- /dev/null +++ b/packages/config/src/constants/path.ts @@ -0,0 +1 @@ +export const RAW_FILES_PATH = 'https://raw.githubusercontent.com/cowprotocol/cow-sdk/refs/heads/main' From 4a7e5d6d035ccebf05cce437f0409220f39b643a Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 13:11:57 -0300 Subject: [PATCH 29/33] refactor: move cow-error and wallets.ts and remove duplicate types --- packages/common/src/index.ts | 1 + .../src/types => common/src/utils}/cow-error.ts | 0 packages/common/src/utils/index.ts | 3 +++ packages/config/src/chains/const/path.ts | 3 --- packages/config/src/constants/config.ts | 15 --------------- packages/config/src/constants/index.ts | 1 - packages/config/src/types/index.ts | 2 -- .../src => cow-sdk/src/common}/types/wallets.ts | 0 8 files changed, 4 insertions(+), 21 deletions(-) rename packages/{config/src/types => common/src/utils}/cow-error.ts (100%) create mode 100644 packages/common/src/utils/index.ts delete mode 100644 packages/config/src/chains/const/path.ts delete mode 100644 packages/config/src/constants/config.ts rename packages/{config/src => cow-sdk/src/common}/types/wallets.ts (100%) diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index c13c48132..c8d32e0b7 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -4,3 +4,4 @@ */ export * from './adapters' +export * from './utils' diff --git a/packages/config/src/types/cow-error.ts b/packages/common/src/utils/cow-error.ts similarity index 100% rename from packages/config/src/types/cow-error.ts rename to packages/common/src/utils/cow-error.ts diff --git a/packages/common/src/utils/index.ts b/packages/common/src/utils/index.ts new file mode 100644 index 000000000..1129a390e --- /dev/null +++ b/packages/common/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './cow-error' +export * from './log' +export * from './serialize' diff --git a/packages/config/src/chains/const/path.ts b/packages/config/src/chains/const/path.ts deleted file mode 100644 index e8993c089..000000000 --- a/packages/config/src/chains/const/path.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { RAW_FILES_PATH } from '../../common/consts/path' - -export const RAW_CHAINS_FILES_PATH = `${RAW_FILES_PATH}/src/chains` diff --git a/packages/config/src/constants/config.ts b/packages/config/src/constants/config.ts deleted file mode 100644 index d2b700fa8..000000000 --- a/packages/config/src/constants/config.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { SupportedChainId } from '../../chains/types' -import { ApiContext, CowEnv } from '../types/config' - -/** - * The list of available environments. - */ -export const ENVS_LIST: CowEnv[] = ['prod', 'staging'] - -/** - * The default CoW Protocol API context. - */ -export const DEFAULT_COW_API_CONTEXT: ApiContext = { - env: 'prod', - chainId: SupportedChainId.MAINNET, -} diff --git a/packages/config/src/constants/index.ts b/packages/config/src/constants/index.ts index da154e955..005cd3114 100644 --- a/packages/config/src/constants/index.ts +++ b/packages/config/src/constants/index.ts @@ -1,3 +1,2 @@ export * from './ipfs' export * from './paths' -export * from './config' diff --git a/packages/config/src/types/index.ts b/packages/config/src/types/index.ts index 82d795da7..573e301a1 100644 --- a/packages/config/src/types/index.ts +++ b/packages/config/src/types/index.ts @@ -1,5 +1,3 @@ export * from './configs' export * from './tokens' -export * from './cow-error' export * from './ethereum' -export * from './wallets' diff --git a/packages/config/src/types/wallets.ts b/packages/cow-sdk/src/common/types/wallets.ts similarity index 100% rename from packages/config/src/types/wallets.ts rename to packages/cow-sdk/src/common/types/wallets.ts From 6ff4954a7750f92a62ccaa430447b52bbb29843d Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 15:15:35 -0300 Subject: [PATCH 30/33] feat(order-book): setup order-book package, jest and tsconfig --- packages/order-book/jest.config.cjs | 13 ++++++++++ packages/order-book/package.json | 38 +++++++++++++++++++++++++++++ packages/order-book/setupTests.js | 13 ++++++++++ packages/order-book/tsconfig.json | 10 ++++++++ 4 files changed, 74 insertions(+) create mode 100644 packages/order-book/jest.config.cjs create mode 100644 packages/order-book/package.json create mode 100644 packages/order-book/setupTests.js create mode 100644 packages/order-book/tsconfig.json diff --git a/packages/order-book/jest.config.cjs b/packages/order-book/jest.config.cjs new file mode 100644 index 000000000..13ed1c057 --- /dev/null +++ b/packages/order-book/jest.config.cjs @@ -0,0 +1,13 @@ +/** @type {import('jest').Config} */ +module.exports = { + preset: 'ts-jest/presets/js-with-ts-esm', + testEnvironment: 'node', + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + setupFiles: ['./setupTests.js'], + collectCoverageFrom: ['src/**/*.{ts,tsx}'], + coveragePathIgnorePatterns: ['src/generated'], + moduleDirectories: ['node_modules'], + modulePaths: ['/'], +} diff --git a/packages/order-book/package.json b/packages/order-book/package.json new file mode 100644 index 000000000..be03d13ea --- /dev/null +++ b/packages/order-book/package.json @@ -0,0 +1,38 @@ +{ + "name": "@cowprotocol/sdk-order-book", + "version": "0.1.0", + "description": "CowProtocol Order Book package", + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "sideEffects": false, + "license": "MIT", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup src/index.ts --format esm,cjs --dts", + "lint": "eslint src/**/*.ts", + "test": "jest", + "clean": "rm -rf dist/*" + }, + "devDependencies": { + "@repo/typescript-config": "workspace:*", + "@types/jest": "^29.4.0", + "@types/node": "^20.17.31", + "@types/semver-sort": "^0.0.1", + "jest": "^29.4.2", + "jest-fetch-mock": "^3.0.3", + "ts-jest": "^29.0.0", + "tsup": "^7.2.0", + "tsx": "^4.19.4", + "typescript": "^5.2.2" + }, + "dependencies": { + "@cowprotocol/sdk-config": "workspace:*", + "@cowprotocol/sdk-common": "workspace:*", + "cross-fetch": "^3.2.0", + "exponential-backoff": "^3.1.2", + "limiter": "^3.0.0" + } +} diff --git a/packages/order-book/setupTests.js b/packages/order-book/setupTests.js new file mode 100644 index 000000000..63a20caa1 --- /dev/null +++ b/packages/order-book/setupTests.js @@ -0,0 +1,13 @@ +jest.mock('cross-fetch', () => { + const fetchMock = require('jest-fetch-mock') + + const originalFetch = jest.requireActual('cross-fetch') + + return { + __esModule: true, + ...originalFetch, + default: fetchMock, + } +}) + +global.window = global diff --git a/packages/order-book/tsconfig.json b/packages/order-book/tsconfig.json new file mode 100644 index 000000000..968a9ff4b --- /dev/null +++ b/packages/order-book/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@repo/typescript-config/base.json", + "compilerOptions": { + "outDir": "./dist", + "baseUrl": "src", + "types": ["jest"] + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} From fd74389aa22b52d260c38cde9b639ebac2d33997 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 15:29:14 -0300 Subject: [PATCH 31/33] feat(order-book): refact order-book --- packages/order-book/src/api.spec.ts | 29 +++++++++++------------ packages/order-book/src/api.ts | 18 ++++++++------ packages/order-book/src/request.test.ts | 2 +- packages/order-book/src/request.ts | 7 ++---- packages/order-book/src/transformOrder.ts | 2 +- 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/packages/order-book/src/api.spec.ts b/packages/order-book/src/api.spec.ts index 5895da5f2..eb0743a42 100644 --- a/packages/order-book/src/api.spec.ts +++ b/packages/order-book/src/api.spec.ts @@ -1,9 +1,8 @@ import fetchMock, { enableFetchMocks } from 'jest-fetch-mock' -import { CowError } from '../common/types/cow-error' +import { CowError } from '@cowprotocol/sdk-common' import { OrderBookApi } from './api' import { BuyTokenDestination, EcdsaSigningScheme, OrderKind, SellTokenSource, SigningScheme } from './generated' -import { SupportedChainId } from '../chains/types' -import { ETH_ADDRESS } from '../common/consts/contracts' +import { SupportedChainId, ETH_ADDRESS } from '@cowprotocol/sdk-config' import { AUCTION } from './mock' enableFetchMocks() @@ -539,13 +538,13 @@ describe('CoW Api', () => { // then // eth flow order - expect(orders[0].owner).toEqual(orders[0].onchainUser) - expect(orders[0].validTo).toEqual(orders[0].ethflowData?.userValidTo) - expect(orders[0].sellToken).toEqual(ETH_ADDRESS) + expect(orders[0]?.owner).toEqual(orders[0]?.onchainUser) + expect(orders[0]?.validTo).toEqual(orders[0]?.ethflowData?.userValidTo) + expect(orders[0]?.sellToken).toEqual(ETH_ADDRESS) // regular order - expect(orders[1].owner).toEqual(ORDER_RESPONSE.owner) - expect(orders[1].validTo).toEqual(ORDER_RESPONSE.validTo) - expect(orders[1].sellToken).toEqual(ORDER_RESPONSE.sellToken) + expect(orders[1]?.owner).toEqual(ORDER_RESPONSE.owner) + expect(orders[1]?.validTo).toEqual(ORDER_RESPONSE.validTo) + expect(orders[1]?.sellToken).toEqual(ORDER_RESPONSE.sellToken) }) test('getTxOrders', async () => { @@ -559,13 +558,13 @@ describe('CoW Api', () => { // then // eth flow order - expect(txOrders[0].owner).toEqual(txOrders[0].onchainUser) - expect(txOrders[0].validTo).toEqual(txOrders[0].ethflowData?.userValidTo) - expect(txOrders[0].sellToken).toEqual(ETH_ADDRESS) + expect(txOrders[0]?.owner).toEqual(txOrders[0]?.onchainUser) + expect(txOrders[0]?.validTo).toEqual(txOrders[0]?.ethflowData?.userValidTo) + expect(txOrders[0]?.sellToken).toEqual(ETH_ADDRESS) // regular order - expect(txOrders[1].owner).toEqual(ORDER_RESPONSE.owner) - expect(txOrders[1].validTo).toEqual(ORDER_RESPONSE.validTo) - expect(txOrders[1].sellToken).toEqual(ORDER_RESPONSE.sellToken) + expect(txOrders[1]?.owner).toEqual(ORDER_RESPONSE.owner) + expect(txOrders[1]?.validTo).toEqual(ORDER_RESPONSE.validTo) + expect(txOrders[1]?.sellToken).toEqual(ORDER_RESPONSE.sellToken) }) }) diff --git a/packages/order-book/src/api.ts b/packages/order-book/src/api.ts index f2e7d29e4..7c4050acd 100644 --- a/packages/order-book/src/api.ts +++ b/packages/order-book/src/api.ts @@ -1,8 +1,15 @@ import 'cross-fetch/polyfill' import { RateLimiter } from 'limiter' -import { SupportedChainId } from '../chains/types' -import { ApiBaseUrls, ApiContext, CowEnv, PartialApiContext } from '../common/types/config' -import { CowError } from '../common/types/cow-error' +import { + SupportedChainId, + DEFAULT_COW_API_CONTEXT, + ENVS_LIST, + ApiBaseUrls, + ApiContext, + CowEnv, + PartialApiContext, +} from '@cowprotocol/sdk-config' +import { CowError, log, jsonWithBigintReplacer } from '@cowprotocol/sdk-common' import { Address, AppDataHash, @@ -23,9 +30,6 @@ import { import { DEFAULT_BACKOFF_OPTIONS, DEFAULT_LIMITER_OPTIONS, FetchParams, OrderBookApiError, request } from './request' import { transformOrder } from './transformOrder' import { EnrichedOrder } from './types' -import { DEFAULT_COW_API_CONTEXT, ENVS_LIST } from '../common' -import { log } from '../common/utils/log' -import { jsonWithBigintReplacer } from 'src/common/utils/serialize' /** * An object containing *production* environment base URLs for each supported `chainId`. @@ -73,7 +77,7 @@ export type GetOrdersRequest = { offset?: number limit?: number } - +// TODO: Review and update the documentation /** * The CoW Protocol OrderBook API client. * diff --git a/packages/order-book/src/request.test.ts b/packages/order-book/src/request.test.ts index 4a62b0202..914cacca5 100644 --- a/packages/order-book/src/request.test.ts +++ b/packages/order-book/src/request.test.ts @@ -20,7 +20,7 @@ beforeEach(() => { fetchMock.mockClear() }) -function mockAndFailUntilAttempt(attempt: number) { +function mockAndFailUntilAttempt(attempt: number): void { let count = 0 // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore diff --git a/packages/order-book/src/request.ts b/packages/order-book/src/request.ts index 4dd5714ed..cf4a685bd 100644 --- a/packages/order-book/src/request.ts +++ b/packages/order-book/src/request.ts @@ -11,10 +11,7 @@ export class OrderBookApiError extends Error { * @param body The body of the response. * @constructor */ - constructor( - public readonly response: Response, - public readonly body: T, - ) { + constructor(public readonly response: Response, public readonly body: T) { super(typeof body === 'string' ? body : response.statusText) } } @@ -108,7 +105,7 @@ export async function request( baseUrl: string, { path, query, method, body }: FetchParams, rateLimiter: RateLimiter, - backoffOpts: BackoffOptions, + backoffOpts: BackoffOptions ): Promise { const queryString = query ? '?' + query : '' const headers = { diff --git a/packages/order-book/src/transformOrder.ts b/packages/order-book/src/transformOrder.ts index 5f8c43d6c..412c3c7dd 100644 --- a/packages/order-book/src/transformOrder.ts +++ b/packages/order-book/src/transformOrder.ts @@ -1,4 +1,4 @@ -import { ETH_ADDRESS } from '../common/consts/contracts' +import { ETH_ADDRESS } from '@cowprotocol/sdk-config' import { Order } from './generated' import { EnrichedOrder } from './types' From 23dc2a5db02ce3734b55e1151c8579f9a42a4bc5 Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 16:11:44 -0300 Subject: [PATCH 32/33] feat(monorepo-config): adjust all package.json and scripts --- eslint.config.js | 2 +- package.json | 5 +- packages/app-data/package.json | 4 +- packages/common/package.json | 3 - packages/config/package.json | 1 - packages/contracts-ts/package.json | 5 +- packages/order-book/package.json | 4 +- pnpm-lock.yaml | 251 ++++++----------------------- turbo.json | 3 + 9 files changed, 65 insertions(+), 213 deletions(-) diff --git a/eslint.config.js b/eslint.config.js index 281b15566..ced197c7e 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -4,7 +4,7 @@ import unusedImports from 'eslint-plugin-unused-imports' export default [ { - ignores: ['**/generated/*', '**/jest.config.ts'], + ignores: ['**/generated/*', '**/jest.config.ts', '**/generated/**/*'], }, eslint.configs.recommended, ...tseslint.configs.recommended, diff --git a/package.json b/package.json index 9c1a966d6..9c9d2b22c 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,9 @@ "build": "turbo run build --filter='!@cowprotocol/cow-sdk'", "dev": "turbo run dev", "lint": "turbo run lint --filter=!@cowprotocol/cow-sdk -- --fix", - "test": "turbo run test", - "format": "prettier --write \"**/*.{ts,tsx,md}\"" + "test": "turbo run test --filter=!@cowprotocol/cow-sdk", + "format": "prettier --write \"**/*.{ts,tsx,md}\"", + "clean": "turbo run clean --filter=!@cowprotocol/cow-sdk && rm -rf .turbo" }, "devDependencies": { "@eslint/js": "^9.18.0", diff --git a/packages/app-data/package.json b/packages/app-data/package.json index 70b736f53..81a77dab2 100644 --- a/packages/app-data/package.json +++ b/packages/app-data/package.json @@ -13,9 +13,9 @@ "schemas/**" ], "scripts": { - "clean": "rm -rf dist/* && rm -rf src/generatedTypes/* && rm -rf schemas/", + "clean": "rm -rf dist/* && rm -rf .turbo && rm -rf node_modules && rm -rf schemas/", "compile": "tsx src/scripts/compile.ts", - "prebuild": "pnpm run clean && pnpm run compile", + "prebuild": "pnpm run clean && pnpm install && pnpm run compile", "build": "tsup src/index.ts --format esm,cjs --dts --external multiformats", "dev": "pnpm run compile && tsup src/index.ts --format esm,cjs --watch --dts --external multiformats", "lint": "eslint src/**/*.ts", diff --git a/packages/common/package.json b/packages/common/package.json index bdb1fffa8..90266a664 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -18,9 +18,6 @@ "devDependencies": { "@repo/typescript-config": "workspace:*", "@types/node": "^20.17.31", - "@typescript-eslint/eslint-plugin": "^8.32.1", - "@typescript-eslint/parser": "^8.32.1", - "eslint": "^9.27.0", "tsup": "^7.2.0", "typescript": "^5.2.2" } diff --git a/packages/config/package.json b/packages/config/package.json index c5004810a..8d6bb054d 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -18,7 +18,6 @@ "devDependencies": { "@repo/typescript-config": "workspace:*", "@types/node": "^20.17.31", - "eslint": "^8.48.0", "tsup": "^7.2.0", "typescript": "^5.2.2" }, diff --git a/packages/contracts-ts/package.json b/packages/contracts-ts/package.json index 303827dfa..aef92a66f 100644 --- a/packages/contracts-ts/package.json +++ b/packages/contracts-ts/package.json @@ -29,13 +29,12 @@ "@cowprotocol/sdk-viem-adapter": "workspace:*", "@types/jest": "^29.5.5", "@types/node": "^20.17.31", - "eslint": "^8.48.0", + "tsup": "^7.2.0", + "typescript": "^5.2.2", "ethers-v5": "npm:ethers@^5.7.2", "ethers-v6": "npm:ethers@^6.13.7", "jest": "^29.7.0", "ts-jest": "^29.1.1", - "tsup": "^7.2.0", - "typescript": "^5.2.2", "viem": "^2.28.4" } } diff --git a/packages/order-book/package.json b/packages/order-book/package.json index be03d13ea..d16e8803f 100644 --- a/packages/order-book/package.json +++ b/packages/order-book/package.json @@ -12,9 +12,9 @@ ], "scripts": { "build": "tsup src/index.ts --format esm,cjs --dts", - "lint": "eslint src/**/*.ts", + "lint": "eslint src/**/*.ts --quiet", "test": "jest", - "clean": "rm -rf dist/*" + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist" }, "devDependencies": { "@repo/typescript-config": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45b57596b..23b6ec113 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,15 +117,6 @@ importers: '@types/node': specifier: ^20.17.31 version: 20.17.52 - '@typescript-eslint/eslint-plugin': - specifier: ^8.32.1 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': - specifier: ^8.32.1 - version: 8.33.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint: - specifier: ^9.27.0 - version: 9.27.0(jiti@2.4.2) tsup: specifier: ^7.2.0 version: 7.3.0(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.52)(typescript@5.8.3))(typescript@5.8.3) @@ -148,9 +139,6 @@ importers: '@types/node': specifier: ^20.17.31 version: 20.17.52 - eslint: - specifier: ^8.48.0 - version: 8.57.1 tsup: specifier: ^7.2.0 version: 7.3.0(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.52)(typescript@5.8.3))(typescript@5.8.3) @@ -185,9 +173,6 @@ importers: '@types/node': specifier: ^20.17.31 version: 20.17.52 - eslint: - specifier: ^8.48.0 - version: 8.57.1 ethers-v5: specifier: npm:ethers@^5.7.2 version: ethers@5.8.0 @@ -352,6 +337,55 @@ importers: specifier: ^8.32.1 version: 8.33.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) + packages/order-book: + dependencies: + '@cowprotocol/sdk-common': + specifier: workspace:* + version: link:../common + '@cowprotocol/sdk-config': + specifier: workspace:* + version: link:../config + cross-fetch: + specifier: ^3.2.0 + version: 3.2.0 + exponential-backoff: + specifier: ^3.1.2 + version: 3.1.2 + limiter: + specifier: ^3.0.0 + version: 3.0.0 + devDependencies: + '@repo/typescript-config': + specifier: workspace:* + version: link:../typescript-config + '@types/jest': + specifier: ^29.4.0 + version: 29.5.14 + '@types/node': + specifier: ^20.17.31 + version: 20.17.52 + '@types/semver-sort': + specifier: ^0.0.1 + version: 0.0.1 + jest: + specifier: ^29.4.2 + version: 29.7.0(@types/node@20.17.52)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.52)(typescript@5.8.3)) + jest-fetch-mock: + specifier: ^3.0.3 + version: 3.0.3 + ts-jest: + specifier: ^29.0.0 + version: 29.3.4(@babel/core@7.27.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.1))(esbuild@0.19.12)(jest@29.7.0(@types/node@20.17.52)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.17.52)(typescript@5.8.3)))(typescript@5.8.3) + tsup: + specifier: ^7.2.0 + version: 7.3.0(postcss@8.5.4)(ts-node@10.9.2(@types/node@20.17.52)(typescript@5.8.3))(typescript@5.8.3) + tsx: + specifier: ^4.19.4 + version: 4.19.4 + typescript: + specifier: ^5.2.2 + version: 5.8.3 + packages/providers/ether-v5-adapter: dependencies: '@cowprotocol/sdk-common': @@ -1446,18 +1480,10 @@ packages: resolution: {integrity: sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@2.1.4': - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.1': resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.27.0': resolution: {integrity: sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1822,19 +1848,10 @@ packages: resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} - engines: {node: '>=10.10.0'} - deprecated: Use @eslint/config-array instead - '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.3': - resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - deprecated: Use @eslint/object-schema instead - '@humanwhocodes/retry@0.3.1': resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} @@ -2397,9 +2414,6 @@ packages: resolution: {integrity: sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@ungap/structured-clone@1.3.0': - resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@weiroll/weiroll.js@0.3.0': resolution: {integrity: sha512-RV+iKtY/V/Oc0zoPFPaNGAkOOOV89uGdiocxWd4HT5XNdGob0/XI+07GtP0Dv3B7QLwLTs8QMNKPvsH846svrw==} engines: {node: '>=14'} @@ -3244,10 +3258,6 @@ packages: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -3391,10 +3401,6 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.3.0: resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3407,12 +3413,6 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. - hasBin: true - eslint@9.27.0: resolution: {integrity: sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3431,10 +3431,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3592,10 +3588,6 @@ packages: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} - file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -3645,10 +3637,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3824,10 +3812,6 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -4274,10 +4258,6 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -5797,11 +5777,6 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - rollup-plugin-bundle-size@1.0.3: resolution: {integrity: sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==} @@ -6241,9 +6216,6 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -6466,10 +6438,6 @@ packages: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} engines: {node: '>=10'} - type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -7867,11 +7835,6 @@ snapshots: '@esbuild/win32-x64@0.25.5': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': - dependencies: - eslint: 8.57.1 - eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.7.0(eslint@9.27.0(jiti@2.4.2))': dependencies: eslint: 9.27.0(jiti@2.4.2) @@ -7893,20 +7856,6 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@2.1.4': - dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 @@ -7921,8 +7870,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} - '@eslint/js@9.27.0': {} '@eslint/object-schema@2.1.6': {} @@ -8658,18 +8605,8 @@ snapshots: '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 - '@humanwhocodes/config-array@0.13.0': - dependencies: - '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.3': {} - '@humanwhocodes/retry@0.3.1': {} '@humanwhocodes/retry@0.4.3': {} @@ -9279,7 +9216,7 @@ snapshots: '@types/resolve@1.17.1': dependencies: - '@types/node': 22.15.24 + '@types/node': 20.17.52 '@types/semver-sort@0.0.1': {} @@ -9287,7 +9224,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.24 + '@types/node': 20.17.52 '@types/yargs-parser@21.0.3': {} @@ -9387,8 +9324,6 @@ snapshots: '@typescript-eslint/types': 8.33.0 eslint-visitor-keys: 4.2.0 - '@ungap/structured-clone@1.3.0': {} - '@weiroll/weiroll.js@0.3.0': dependencies: ethers: 5.8.0 @@ -10351,10 +10286,6 @@ snapshots: dependencies: path-type: 4.0.0 - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 @@ -10600,11 +10531,6 @@ snapshots: optionalDependencies: '@typescript-eslint/eslint-plugin': 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.27.0(jiti@2.4.2))(typescript@5.8.3) - eslint-scope@7.2.2: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-scope@8.3.0: dependencies: esrecurse: 4.3.0 @@ -10614,49 +10540,6 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@8.57.1: - dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.12.1 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.3.0 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.1 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - find-up: 5.0.0 - glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - eslint@9.27.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.27.0(jiti@2.4.2)) @@ -10712,12 +10595,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.1) eslint-visitor-keys: 4.2.0 - espree@9.6.1: - dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) - eslint-visitor-keys: 3.4.3 - esprima@4.0.1: {} esquery@1.6.0: @@ -10959,10 +10836,6 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 - file-entry-cache@6.0.1: - dependencies: - flat-cache: 3.2.0 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -11019,12 +10892,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -11228,10 +11095,6 @@ snapshots: globals@11.12.0: {} - globals@13.24.0: - dependencies: - type-fest: 0.20.2 - globals@14.0.0: {} globalthis@1.0.4: @@ -11706,8 +11569,6 @@ snapshots: is-number@7.0.0: {} - is-path-inside@3.0.3: {} - is-plain-obj@1.1.0: {} is-plain-obj@2.1.0: {} @@ -12259,7 +12120,7 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.15.24 + '@types/node': 20.17.52 merge-stream: 2.0.0 supports-color: 7.2.0 @@ -13584,10 +13445,6 @@ snapshots: rfdc@1.4.1: {} - rimraf@3.0.2: - dependencies: - glob: 7.2.3 - rollup-plugin-bundle-size@1.0.3: dependencies: chalk: 1.1.3 @@ -14132,8 +13989,6 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -14401,8 +14256,6 @@ snapshots: type-fest@0.18.1: {} - type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@0.6.0: {} diff --git a/turbo.json b/turbo.json index 46ae1d671..a6072c9f8 100644 --- a/turbo.json +++ b/turbo.json @@ -17,6 +17,9 @@ "dev": { "cache": false, "persistent": true + }, + "clean": { + "cache": false } } } From 881e3451add9d911047daebe4e36fe777d95927a Mon Sep 17 00:00:00 2001 From: Jefferson Bastos Date: Thu, 29 May 2025 16:12:25 -0300 Subject: [PATCH 33/33] chore(lint): lint --- packages/app-data/src/generatedTypes/index.ts | 31 ++++++++++--------- packages/contracts-ts/src/proxy.ts | 2 +- .../src/EthersV5SignerAdapter.ts | 2 +- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/packages/app-data/src/generatedTypes/index.ts b/packages/app-data/src/generatedTypes/index.ts index a51f9e374..a23d58232 100644 --- a/packages/app-data/src/generatedTypes/index.ts +++ b/packages/app-data/src/generatedTypes/index.ts @@ -17,21 +17,21 @@ import * as v1_2_0 from './v1.2.0' import * as v1_3_0 from './v1.3.0' import * as v1_4_0 from './v1.4.0' -export * from './latest' + export * from './latest' -export const LATEST_APP_DATA_VERSION = '1.4.0' -export const LATEST_QUOTE_METADATA_VERSION = '1.1.0' -export const LATEST_REFERRER_METADATA_VERSION = '0.2.0' -export const LATEST_ORDER_CLASS_METADATA_VERSION = '0.3.0' -export const LATEST_UTM_METADATA_VERSION = '0.2.0' -export const LATEST_HOOKS_METADATA_VERSION = '0.2.0' -export const LATEST_SIGNER_METADATA_VERSION = '0.1.0' -export const LATEST_WIDGET_METADATA_VERSION = '0.1.0' -export const LATEST_PARTNER_FEE_METADATA_VERSION = '1.0.0' -export const LATEST_REPLACED_ORDER_METADATA_VERSION = '0.1.0' + export const LATEST_APP_DATA_VERSION = '1.4.0' + export const LATEST_QUOTE_METADATA_VERSION = '1.1.0' + export const LATEST_REFERRER_METADATA_VERSION = '0.2.0' + export const LATEST_ORDER_CLASS_METADATA_VERSION = '0.3.0' + export const LATEST_UTM_METADATA_VERSION = '0.2.0' + export const LATEST_HOOKS_METADATA_VERSION = '0.2.0' + export const LATEST_SIGNER_METADATA_VERSION = '0.1.0' + export const LATEST_WIDGET_METADATA_VERSION = '0.1.0' + export const LATEST_PARTNER_FEE_METADATA_VERSION = '1.0.0' + export const LATEST_REPLACED_ORDER_METADATA_VERSION = '0.1.0' -export type LatestAppDataDocVersion = v1_4_0.AppDataRootSchema -export type AnyAppDataDocVersion = + export type LatestAppDataDocVersion = v1_4_0.AppDataRootSchema + export type AnyAppDataDocVersion = | v1_4_0.AppDataRootSchema | v1_3_0.AppDataRootSchema | v1_2_0.AppDataRootSchema @@ -49,7 +49,7 @@ export type AnyAppDataDocVersion = | v0_2_0.AppDataRootSchema | v0_1_0.AppDataRootSchema -export { + export { v1_4_0, v1_3_0, v1_2_0, @@ -66,4 +66,5 @@ export { v0_3_0, v0_2_0, v0_1_0 -} + } + diff --git a/packages/contracts-ts/src/proxy.ts b/packages/contracts-ts/src/proxy.ts index 1ad085827..ffbb84ea0 100644 --- a/packages/contracts-ts/src/proxy.ts +++ b/packages/contracts-ts/src/proxy.ts @@ -10,7 +10,7 @@ const OWNER_STORAGE_SLOT = '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6 * @param proxy Address of the proxy contract. * @returns The address of the contract storing the proxy implementation. */ -export async function implementationAddress(provider: Provider, proxy: string): Promise { +export async function implementationAddress(_provider: Provider, proxy: string): Promise { const adapter = getGlobalAdapter() const [implementation] = adapter.utils.decodeAbi( ['address'], diff --git a/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts b/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts index 8a96b91d3..676f065a6 100644 --- a/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts +++ b/packages/providers/ether-v5-adapter/src/EthersV5SignerAdapter.ts @@ -55,7 +55,7 @@ export class EthersV5SignerAdapter extends AbstractSigner { private _formatTxParams(txParams: TransactionParams) { // Convert bigint values to BigNumber for ethers v5 - // eslint-disable-next-line + const formatted: any = { ...txParams } if (typeof formatted.value === 'bigint') {