diff --git a/.eslintrc.json b/.eslintrc.json index b88a1f93..4deab454 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -6,19 +6,8 @@ "prettier", "plugin:prettier/recommended" ], - "plugins": ["@typescript-eslint", "prettier", "jest"], + "plugins": ["@typescript-eslint", "prettier"], "parser": "@typescript-eslint/parser", - "overrides": [ - { - "files": ["**/*.spec.ts"], - "env": { "jest/globals": true }, - "globals": { - "context": "readonly" - }, - "plugins": ["jest"], - "extends": ["plugin:jest/recommended"] - } - ], "parserOptions": { "project": "./tsconfig.json" }, diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index eacfcd17..ee354557 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -48,4 +48,4 @@ jobs: run: pnpm -F @ensdomains/ensjs lint - name: Type check - run: pnpm -F @ensdomains/ensjs exec tsc --project tsconfig.build.json --noEmit --emitDeclarationOnly false \ No newline at end of file + run: pnpm -F @ensdomains/ensjs build diff --git a/docs/dns/function.importDnsName.md b/docs/dns/function.importDnsName.md index 66b5cd08..79e47546 100644 --- a/docs/dns/function.importDnsName.md +++ b/docs/dns/function.importDnsName.md @@ -48,7 +48,7 @@ const hash = await importDnsName(wallet, { | Parameter | Type | Description | | :----------- | :-------------------------------------------------------------------- | :---------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `ImportDnsNameParameters`\< `TChain`, `TAccount`, `TChainOverride` \> | ImportDnsNameParameters | ## Returns diff --git a/docs/wallet/function.clearRecords.md b/docs/wallet/function.clearRecords.md index 6f83e3af..8b8aee18 100644 --- a/docs/wallet/function.clearRecords.md +++ b/docs/wallet/function.clearRecords.md @@ -41,7 +41,7 @@ const hash = await clearRecords(wallet, { | Parameter | Type | Description | | :--------------------------- | :--------------- | :---------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | ClearRecordsParameters | | `parameters.name` | `string` | The name to clear records for | | `parameters.resolverAddress` | \`0x$\{string}\` | The resolver address to use | diff --git a/docs/wallet/function.commitName.md b/docs/wallet/function.commitName.md index 3812f565..448578dd 100644 --- a/docs/wallet/function.commitName.md +++ b/docs/wallet/function.commitName.md @@ -45,7 +45,7 @@ const hash = await commitName(wallet, { | Parameter | Type | Description | | :---------------------------- | :---------------------------- | :---------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------ | -------------------------- | ------------- | -------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | CommitNameParameters | | `parameters.duration` | `number` | Duration of registration | | `parameters.fuses`? | `EncodeChildFusesInputObject` | Fuses to set upon registration | diff --git a/docs/wallet/function.createSubname.md b/docs/wallet/function.createSubname.md index ef1399d5..9b7aaa47 100644 --- a/docs/wallet/function.createSubname.md +++ b/docs/wallet/function.createSubname.md @@ -42,7 +42,7 @@ const hash = await createSubname(wallet, { | Parameter | Type | Description | | :----------- | :-------------------------------------------------------------------- | :---------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `CreateSubnameParameters`\< `TChain`, `TAccount`, `TChainOverride` \> | CreateSubnameParameters | ## Returns diff --git a/docs/wallet/function.deleteSubname.md b/docs/wallet/function.deleteSubname.md index 0393ae8e..58ec6c8c 100644 --- a/docs/wallet/function.deleteSubname.md +++ b/docs/wallet/function.deleteSubname.md @@ -41,7 +41,7 @@ const hash = await deleteSubname(wallet, { | Parameter | Type | Description | | :-------------------- | :------------------------------ | :--------------------------------------------------------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | DeleteSubnameParameters | | `parameters.asOwner`? | `boolean` | If true, deletes via owner methods, otherwise will delete via parent owner methods | | `parameters.contract` | `"nameWrapper"` \| `"registry"` | Contract to delete subname on | diff --git a/docs/wallet/function.registerName.md b/docs/wallet/function.registerName.md index 33f8b4e1..4aaf8d1d 100644 --- a/docs/wallet/function.registerName.md +++ b/docs/wallet/function.registerName.md @@ -62,7 +62,7 @@ const hash = await registerName(wallet, { ...params, value }) | Parameter | Type | Description | | :---------------------------- | :---------------------------- | :---------------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------ | -------------------------- | ------------- | -------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | RegisterNameParameters | | `parameters.duration` | `number` | Duration of registration | | `parameters.fuses`? | `EncodeChildFusesInputObject` | Fuses to set upon registration | diff --git a/docs/wallet/function.renewNames.md b/docs/wallet/function.renewNames.md index 724934ef..9b173a9a 100644 --- a/docs/wallet/function.renewNames.md +++ b/docs/wallet/function.renewNames.md @@ -55,7 +55,7 @@ const hash = await renewNames(wallet, { | Parameter | Type | Description | | :----------------------- | :--------------------- | :---------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | RenewNamesParameters | | `parameters.duration` | `number` \| `bigint` | Duration to renew name(s) for | | `parameters.nameOrNames` | `string` \| `string`[] | Name or names to renew | diff --git a/docs/wallet/function.setAbiRecord.md b/docs/wallet/function.setAbiRecord.md index aeb78110..f49d6ee8 100644 --- a/docs/wallet/function.setAbiRecord.md +++ b/docs/wallet/function.setAbiRecord.md @@ -46,7 +46,7 @@ const hash = await setAbiRecord(wallet, { | Parameter | Type | Description | | :--------------------------- | :--------------------- | :----------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetAbiRecordParameters | | `parameters.encodedAbi` | `null` \| `EncodedAbi` | Encoded ABI data to set | | `parameters.name` | `string` | Name to set ABI for | diff --git a/docs/wallet/function.setAddressRecord.md b/docs/wallet/function.setAddressRecord.md index 67d105ba..e2f5742b 100644 --- a/docs/wallet/function.setAddressRecord.md +++ b/docs/wallet/function.setAddressRecord.md @@ -43,7 +43,7 @@ const hash = await setAddressRecord(wallet, { | Parameter | Type | Description | | :--------------------------- | :------------------- | :---------------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetAddressRecordParameters | | `parameters.coin` | `string` \| `number` | Coin ticker or ID to set | | `parameters.name` | `string` | Name to set address record for | diff --git a/docs/wallet/function.setChildFuses.md b/docs/wallet/function.setChildFuses.md index 819c55f3..a609a115 100644 --- a/docs/wallet/function.setChildFuses.md +++ b/docs/wallet/function.setChildFuses.md @@ -45,7 +45,7 @@ const hash = await setChildFuses(wallet, { | Parameter | Type | Description | | :------------------- | :----------------------- | :------------------------------------ | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetChildFusesParameters | | `parameters.expiry`? | `number` \| `bigint` | Expiry to set for fuses | | `parameters.fuses` | `EncodeFusesInputObject` | Fuse object or number value to set to | diff --git a/docs/wallet/function.setContentHashRecord.md b/docs/wallet/function.setContentHashRecord.md index 25ac755e..c34e0b1a 100644 --- a/docs/wallet/function.setContentHashRecord.md +++ b/docs/wallet/function.setContentHashRecord.md @@ -43,7 +43,7 @@ const hash = await setContentHashRecord(wallet, { | Parameter | Type | Description | | :--------------------------- | :----------------- | :-------------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetContentHashRecordParameters | | `parameters.contentHash` | `null` \| `string` | Content hash value | | `parameters.name` | `string` | Name to set content hash for | diff --git a/docs/wallet/function.setFuses.md b/docs/wallet/function.setFuses.md index b6c79ab3..889d757e 100644 --- a/docs/wallet/function.setFuses.md +++ b/docs/wallet/function.setFuses.md @@ -43,7 +43,7 @@ const hash = await setFuses(wallet, { | Parameter | Type | Description | | :----------------- | :---------------------------- | :-------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetFusesParameters | | `parameters.fuses` | `EncodeChildFusesInputObject` | Fuse object to set to | | `parameters.name` | `string` | Name to set fuses for | diff --git a/docs/wallet/function.setPrimaryName.md b/docs/wallet/function.setPrimaryName.md index 5b9e2bf4..20161cb4 100644 --- a/docs/wallet/function.setPrimaryName.md +++ b/docs/wallet/function.setPrimaryName.md @@ -40,7 +40,7 @@ const hash = await setPrimaryName(wallet, { | Parameter | Type | Description | | :----------- | :--------------------------------------------------------------------- | :----------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `SetPrimaryNameParameters`\< `TChain`, `TAccount`, `TChainOverride` \> | SetPrimaryNameParameters | ## Returns diff --git a/docs/wallet/function.setRecords.md b/docs/wallet/function.setRecords.md index 08c6e3af..1463be5c 100644 --- a/docs/wallet/function.setRecords.md +++ b/docs/wallet/function.setRecords.md @@ -48,7 +48,7 @@ const hash = await setRecords(wallet, { | Parameter | Type | Description | | :--------------------------- | :---------------------------------------------------- | :------------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetRecordsParameters | | `parameters.abi`? | `Omit`\< `EncodeSetAbiParameters`, `"namehash"` \> | ABI value | | `parameters.clearRecords`? | `boolean` | Clears all current records | diff --git a/docs/wallet/function.setResolver.md b/docs/wallet/function.setResolver.md index c9bbe49a..d3e0724d 100644 --- a/docs/wallet/function.setResolver.md +++ b/docs/wallet/function.setResolver.md @@ -42,7 +42,7 @@ const hash = await setResolver(wallet, { | Parameter | Type | Description | | :--------------------------- | :------------------------------ | :-------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetResolverParameters | | `parameters.contract` | `"nameWrapper"` \| `"registry"` | Contract to set resolver on | | `parameters.name` | `string` | Name to set resolver for | diff --git a/docs/wallet/function.setTextRecord.md b/docs/wallet/function.setTextRecord.md index 485366cd..76679c65 100644 --- a/docs/wallet/function.setTextRecord.md +++ b/docs/wallet/function.setTextRecord.md @@ -43,7 +43,7 @@ const hash = await setTextRecord(wallet, { | Parameter | Type | Description | | :--------------------------- | :----------------- | :-------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | SetTextRecordParameters | | `parameters.key` | `string` | The text record key to set | | `parameters.name` | `string` | The name to set a text record for | diff --git a/docs/wallet/function.transferName.md b/docs/wallet/function.transferName.md index 9bb35db4..40ac6012 100644 --- a/docs/wallet/function.transferName.md +++ b/docs/wallet/function.transferName.md @@ -42,7 +42,7 @@ const hash = await transferName(wallet, { | Parameter | Type | Description | | :----------- | :------------------------------------------------------------------- | :--------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `TransferNameParameters`\< `TChain`, `TAccount`, `TChainOverride` \> | TransferNameParameters | ## Returns diff --git a/docs/wallet/function.unwrapName.md b/docs/wallet/function.unwrapName.md index 5fe84209..8c4210a8 100644 --- a/docs/wallet/function.unwrapName.md +++ b/docs/wallet/function.unwrapName.md @@ -43,7 +43,7 @@ const hash = await unwrapName(wallet, { | Parameter | Type | Description | | :----------- | :-------------------------------------------------------------------------- | :------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `UnwrapNameParameters`\< `TName`, `TChain`, `TAccount`, `TChainOverride` \> | UnwrapNameParameters | ## Returns diff --git a/docs/wallet/function.wrapName.md b/docs/wallet/function.wrapName.md index e41e17d9..8160bc76 100644 --- a/docs/wallet/function.wrapName.md +++ b/docs/wallet/function.wrapName.md @@ -42,7 +42,7 @@ const hash = await wrapName(wallet, { | Parameter | Type | Description | | :---------------------------- | :----------------------------------------------------------------------------------------- | :---------------------------------- | -| `wallet` | `object` | WalletWithEns | +| `wallet` | `object` | ClientWithAccount | | `parameters` | `object` | WrapNameParameters | | `parameters.fuses`? | `GetNameType`\< `TName` \> _extends_ `"eth-2ld"` ? `EncodeChildFusesInputObject` : `never` | Fuses to set on wrap (eth-2ld only) | | `parameters.name` | `TName` | The name to wrap | diff --git a/package.json b/package.json index 09900885..d37a54ef 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "eslint-plugin-prettier": "^4.0.0", "prettier": "^2.8.8", "ts-node": "^10.7.0", - "typescript": "^5.1.6" + "typescript": "^5.3.2" }, "resolutions": { "@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers@0.3.0-beta.13" diff --git a/packages/ensjs/.eslintrc.json b/packages/ensjs/.eslintrc.json index 2907f403..28e17e91 100644 --- a/packages/ensjs/.eslintrc.json +++ b/packages/ensjs/.eslintrc.json @@ -23,6 +23,11 @@ "leadingUnderscore": "allowSingleOrDouble", "trailingUnderscore": "allowSingleOrDouble" }, + { + "selector": "objectLiteralProperty", + "filter": { "regex": "\\d+", "match": true }, + "format": null + }, { "selector": "variable", "format": ["camelCase", "UPPER_CASE"], diff --git a/packages/ensjs/.gitignore b/packages/ensjs/.gitignore index 0e8119c0..fb75cb58 100644 --- a/packages/ensjs/.gitignore +++ b/packages/ensjs/.gitignore @@ -1,6 +1,7 @@ # hardhat /cache /artifacts +/coverage README.md LICENSE diff --git a/packages/ensjs/ens-test-env.config.cjs b/packages/ensjs/ens-test-env.config.cjs index ce0ede01..fa3e8cee 100644 --- a/packages/ensjs/ens-test-env.config.cjs +++ b/packages/ensjs/ens-test-env.config.cjs @@ -19,7 +19,7 @@ module.exports = { { command: process.env.STATIC_ENS === 'true' ? 'pnpm test:static' : 'pnpm test', - name: 'jest', + name: 'vitest', prefixColor: 'yellow.bold', finishOnExit: true, }, diff --git a/packages/ensjs/jest.config.js b/packages/ensjs/jest.config.js deleted file mode 100644 index f0dcc98e..00000000 --- a/packages/ensjs/jest.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -const config = { - verbose: true, - testEnvironment: 'node', - extensionsToTreatAsEsm: ['.ts'], - transform: { - '^.+\\.(t|j)sx?$': ['@swc/jest'], - }, - setupFilesAfterEnv: ['/jest.setup.ts'], - transformIgnorePatterns: [], - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - '^multiformats$': '/node_modules/multiformats/src/index.js', - '^multiformats/(.*)$': '/node_modules/multiformats/src/$1', - }, -} - -export default config diff --git a/packages/ensjs/jest.setup.ts b/packages/ensjs/jest.setup.ts deleted file mode 100644 index e0266d9e..00000000 --- a/packages/ensjs/jest.setup.ts +++ /dev/null @@ -1,8 +0,0 @@ -import crypto from 'crypto' -import 'jest-localstorage-mock' - -Object.defineProperty(global, 'crypto', { - value: { - getRandomValues: (arr: any) => crypto.randomBytes(arr.length), - }, -}) diff --git a/packages/ensjs/package.json b/packages/ensjs/package.json index f441e3c6..b0bd1afb 100644 --- a/packages/ensjs/package.json +++ b/packages/ensjs/package.json @@ -82,8 +82,8 @@ "denv": "pnpm tenv start -ns -nb --extra-time 11368000 --verbosity 1", "anvil": "pnpm denv --no-graph", "start": "ts-node --files src/index.test.ts", - "test": "jest --runInBand", - "test:watch": "jest --watch --run-in-band", + "test": "vitest --no-file-parallelism", + "test:watch": "vitest --watch --no-file-parallelism", "clean": "rm -rf ./dist ./README.md ./LICENSE", "lint": "eslint ./src/* --no-error-on-unmatched-pattern", "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", @@ -99,15 +99,15 @@ }, "dependencies": { "@adraffy/ens-normalize": "1.9.0", - "@ensdomains/address-encoder": "1.1.0", + "@ensdomains/address-encoder": "1.1.1", "@ensdomains/content-hash": "3.1.0-rc.1", "@ensdomains/dnsprovejs": "^0.5.1", - "abitype": "^0.8.0", + "abitype": "^1.0.0", "dns-packet": "^5.3.1", "graphql": "^16.3.0", "graphql-request": "6.1.0", "pako": "^2.1.0", - "traverse": "^0.6.6" + "traverse": "^0.6.8" }, "devDependencies": { "@ensdomains/buffer": "^0.0.13", @@ -117,37 +117,33 @@ "@openzeppelin/contracts": "^4.5.0", "@openzeppelin/test-helpers": "^0.5.16", "@swc/core": "^1.3.61", - "@swc/jest": "^0.2.26", "@types/bn.js": "^5.1.0", "@types/fs-extra": "^11.0.1", - "@types/jest": "^27.4.1", "@types/node": "^20.3.3", "@types/pako": "^2.0.0", - "@types/traverse": "^0.6.32", + "@types/traverse": "^0.6.36", + "@vitest/coverage-v8": "^1.3.1", "cbor": "^8.1.0", "dotenv": "^16.0.0", "esbuild": "^0.15.6", - "eslint-plugin-jest": "^27.0.1", "ethers": "^5.7.2", "fs-extra": "^10.0.1", "glob": "^8.0.3", + "happy-dom": "^13.3.8", "hardhat": "2.16.1", "hardhat-abi-exporter": "^2.8.0", "hardhat-deploy": "^0.11.12", - "jest": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-localstorage-mock": "^2.4.21", "multiformats": "^12.0.1", "solc": "^0.8.13", - "ts-jest": "^29.1.1", "ts-node": "^10.9.2", "typedoc": "^0.24.8", "typedoc-plugin-markdown": "^4.0.0-next.16", - "typescript": "^5.1.6", - "viem": "^1.16.4", + "typescript": "5.3.2", + "viem": "^2.5.0", + "vitest": "^1.3.1", "wait-on": "^6.0.1" }, "peerDependencies": { - "viem": "^1.16.4" + "viem": "^2.5.0" } } diff --git a/packages/ensjs/src/@types/@ensdomains/ens-contracts.d.ts b/packages/ensjs/src/@types/@ensdomains/ens-contracts.d.ts deleted file mode 100644 index 3a662388..00000000 --- a/packages/ensjs/src/@types/@ensdomains/ens-contracts.d.ts +++ /dev/null @@ -1 +0,0 @@ -declare module '@ensdomains/ens-contracts' diff --git a/packages/ensjs/src/ABIs/Multicall.json b/packages/ensjs/src/ABIs/Multicall.json deleted file mode 100644 index c0bfd122..00000000 --- a/packages/ensjs/src/ABIs/Multicall.json +++ /dev/null @@ -1,452 +0,0 @@ -{ - "abi": [ - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate", - "outputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - }, - { - "internalType": "bytes[]", - "name": "returnData", - "type": "bytes[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bool", - "name": "allowFailure", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call3[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate3", - "outputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bool", - "name": "allowFailure", - "type": "bool" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call3Value[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "aggregate3Value", - "outputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "blockAndAggregate", - "outputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "getBasefee", - "outputs": [ - { - "internalType": "uint256", - "name": "basefee", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "name": "getBlockHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getBlockNumber", - "outputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getChainId", - "outputs": [ - { - "internalType": "uint256", - "name": "chainid", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockCoinbase", - "outputs": [ - { - "internalType": "address", - "name": "coinbase", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockDifficulty", - "outputs": [ - { - "internalType": "uint256", - "name": "difficulty", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockGasLimit", - "outputs": [ - { - "internalType": "uint256", - "name": "gaslimit", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getCurrentBlockTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "addr", - "type": "address" - } - ], - "name": "getEthBalance", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "getLastBlockHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "requireSuccess", - "type": "bool" - }, - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "tryAggregate", - "outputs": [ - { - "components": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bool", - "name": "requireSuccess", - "type": "bool" - }, - { - "components": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "bytes", - "name": "callData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Call[]", - "name": "calls", - "type": "tuple[]" - } - ], - "name": "tryBlockAndAggregate", - "outputs": [ - { - "internalType": "uint256", - "name": "blockNumber", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "blockHash", - "type": "bytes32" - }, - { - "components": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - }, - { - "internalType": "bytes", - "name": "returnData", - "type": "bytes" - } - ], - "internalType": "struct Multicall3.Result[]", - "name": "returnData", - "type": "tuple[]" - } - ], - "stateMutability": "payable", - "type": "function" - } - ], - "bytecode": { - "object": "0x608060405234801561001057600080fd5b50610ee0806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea264697066735822122032840c46a1df3756b0617d292f07888692735eef24ff69bf4fe353d639a3b9fa64736f6c634300080c0033", - "sourceMap": "502:9107:5:-:0;;;;;;;;;;;;;;;;;;;", - "linkReferences": {} - }, - "deployedBytecode": { - "object": "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea264697066735822122032840c46a1df3756b0617d292f07888692735eef24ff69bf4fe353d639a3b9fa64736f6c634300080c0033", - "sourceMap": "502:9107:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8696:120;;;;;;;;;;-1:-1:-1;8794:15:5;8696:120;;;160:25:12;;;148:2;133:18;8696:120:5;;;;;;;;5771:1961;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1166:534::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;9060:158::-;;;;;;;;;;-1:-1:-1;9184:12:5;:16;;9174:27;9060:158;;9507:100;;;;;;;;;;-1:-1:-1;9587:13:5;9507:100;;2932:312;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;9364:100::-;;;;;;;;;;-1:-1:-1;9444:13:5;9364:100;;8029:111;;;;;;;;;;-1:-1:-1;8121:12:5;8029:111;;8883:114;;;;;;;;;;-1:-1:-1;8883:114:5;;;;;:::i;:::-;8978:12;;;;8883:114;8356:124;;;;;;;;;;-1:-1:-1;8457:16:5;8356:124;;4039:1494;;;;;;:::i;:::-;;:::i;8530:116::-;;;;;;;;;;-1:-1:-1;8625:14:5;8530:116;;8189;;;;;;;;;;-1:-1:-1;8189:116:5;;8284:14;6463:74:12;;6451:2;6436:18;8189:116:5;6317:226:12;1985:565:5;;;;;;:::i;:::-;;:::i;3626:231::-;;;;;;:::i;:::-;;:::i;7848:134::-;;;;;;;;;;-1:-1:-1;7848:134:5;;;;;:::i;:::-;7953:22;;7848:134;5771:1961;5849:26;5887:22;5936:5;;5971:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5971:20:5;;;;;;;;;;;;;;;;5958:33;;6001:25;6041:9;6036:1545;6060:6;6056:1;:10;6036:1545;;;6083:20;6106:10;6117:1;6106:13;;;;;;;;:::i;:::-;;;;;;;6083:36;;6141:5;;6147:1;6141:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;6177:11;;;;6389:21;;;;6133:16;;-1:-1:-1;6464:12:5;;;;6133:16;6464:12;:::i;:::-;:17;;6489:3;6494:14;;;;:5;:14;:::i;:::-;6464:45;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6443:17:5;;;;6426:83;;;;;;;;;;6746:16;;;6733:30;6730:49;6720:806;;6914:66;6908:4;6901:80;7054:66;7048:4;7041:80;7206:66;7200:4;7193:80;7402:66;7396:4;7389:80;7503:4;7497;7490:18;6720:806;-1:-1:-1;;7565:3:5;;6036:1545;;;;7680:14;7667:9;:27;7659:66;;;;;;;8565:2:12;7659:66:5;;;8547:21:12;8604:2;8584:18;;;8577:30;8643:28;8623:18;;;8616:56;8689:18;;7659:66:5;;;;;;;;;5877:1855;;;5771:1961;;;;:::o;1166:534::-;1304:12;1253:25;1343:5;;1378:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1365:32;;1407:18;1440:9;1435:259;1459:6;1455:1;:10;1435:259;;;1482:12;1515:5;;1521:1;1515:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;1508:15;-1:-1:-1;1564:11:5;;;;1508:15;1564:11;:::i;:::-;:16;;1581:13;;;;:4;:13;:::i;:::-;1564:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1547:10;1558:1;1547:13;;;;;;;;:::i;:::-;;;;;;;;;;1537:58;;-1:-1:-1;1537:58:5;1609:43;;;;;;;9305:2:12;1609:43:5;;;9287:21:12;9344:2;9324:18;;;9317:30;9383:25;9363:18;;;9356:53;9426:18;;1609:43:5;9103:347:12;1609:43:5;-1:-1:-1;1678:3:5;;1435:259;;;;1280:420;;1166:534;;;;;:::o;2932:312::-;3122:12;3156:23;;3070:26;3202:35;3215:14;3231:5;;3202:12;:35::i;:::-;3189:48;;2932:312;;;;;;;:::o;4039:1494::-;4107:26;4162:5;;4197:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4197:20:5;;;;;;;;;;;;;;;;4184:33;;4227:20;4262:9;4257:1270;4281:6;4277:1;:10;4257:1270;;;4304:20;4327:10;4338:1;4327:13;;;;;;;;:::i;:::-;;;;;;;4304:36;;4362:5;;4368:1;4362:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;4354:16;-1:-1:-1;4422:12:5;;;;4354:16;4422:12;:::i;:::-;:17;;4440:14;;;;:5;:14;:::i;:::-;4422:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4401:17:5;;;;4384:71;;;;;;;;;;4692:16;;;4679:30;4676:49;4666:806;;4860:66;4854:4;4847:80;5000:66;4994:4;4987:80;5152:66;5146:4;5139:80;5348:66;5342:4;5335:80;5449:4;5443;5436:18;4666:806;-1:-1:-1;5511:3:5;;4257:1270;;1985:565;2075:26;2130:5;;2165:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2165:20:5;;;;;;;;;;;;;;;;2152:33;;2195:18;2228:9;2223:321;2247:6;2243:1;:10;2223:321;;;2270:20;2293:10;2304:1;2293:13;;;;;;;;:::i;:::-;;;;;;;2270:36;;2327:5;;2333:1;2327:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2320:15;-1:-1:-1;2387:11:5;;;;2320:15;2387:11;:::i;:::-;:16;;2404:13;;;;:4;:13;:::i;:::-;2387:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2366:17:5;;;2349:69;;;;;2432:70;;;;2460:14;;2452:50;;;;;;;9305:2:12;2452:50:5;;;9287:21:12;9344:2;9324:18;;;9317:30;9383:25;9363:18;;;9356:53;9426:18;;2452:50:5;9103:347:12;2452:50:5;-1:-1:-1;2528:3:5;;2223:321;;;;2103:447;;1985:565;;;;;:::o;3626:231::-;3700:19;3721:17;3740:26;3817:33;3838:4;3844:5;;3817:20;:33::i;:::-;3778:72;;;;-1:-1:-1;3778:72:5;;-1:-1:-1;3626:231:5;-1:-1:-1;;;3626:231:5:o;196:386:12:-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:12;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;196:386;;;;;:::o;587:486::-;703:6;711;764:2;752:9;743:7;739:23;735:32;732:52;;;780:1;777;770:12;732:52;820:9;807:23;853:18;845:6;842:30;839:50;;;885:1;882;875:12;839:50;924:89;1005:7;996:6;985:9;981:22;924:89;:::i;:::-;1032:8;;898:115;;-1:-1:-1;587:486:12;-1:-1:-1;;;;587:486:12:o;1078:530::-;1119:3;1157:5;1151:12;1184:6;1179:3;1172:19;1209:1;1219:162;1233:6;1230:1;1227:13;1219:162;;;1295:4;1351:13;;;1347:22;;1341:29;1323:11;;;1319:20;;1312:59;1248:12;1219:162;;;1399:6;1396:1;1393:13;1390:87;;;1465:1;1458:4;1449:6;1444:3;1440:16;1436:27;1429:38;1390:87;-1:-1:-1;1522:2:12;1510:15;1527:66;1506:88;1497:98;;;;1597:4;1493:109;;1078:530;-1:-1:-1;;1078:530:12:o;1613:869::-;1672:3;1703;1735:5;1729:12;1762:6;1757:3;1750:19;1788:4;1817:2;1812:3;1808:12;1801:19;;1873:2;1863:6;1860:1;1856:14;1849:5;1845:26;1841:35;1910:2;1903:5;1899:14;1931:1;1941:515;1955:6;1952:1;1949:13;1941:515;;;2020:16;;;2038:66;2016:89;2004:102;;2129:13;;2209:9;;2202:17;2195:25;2182:39;;2260:11;;2254:18;2165:4;2292:13;;;2285:25;;;2331:45;2362:13;;;2254:18;2331:45;:::i;:::-;2434:12;;;;2323:53;-1:-1:-1;;;2399:15:12;;;;1977:1;1970:9;1941:515;;;-1:-1:-1;2472:4:12;;1613:869;-1:-1:-1;;;;;;;1613:869:12:o;2487:315::-;2714:2;2703:9;2696:21;2677:4;2734:62;2792:2;2781:9;2777:18;2769:6;2734:62;:::i;:::-;2726:70;2487:315;-1:-1:-1;;;2487:315:12:o;3292:930::-;3480:4;3528:2;3517:9;3513:18;3558:6;3547:9;3540:25;3584:2;3622;3617;3606:9;3602:18;3595:30;3645:6;3680;3674:13;3711:6;3703;3696:22;3749:2;3738:9;3734:18;3727:25;;3811:2;3801:6;3798:1;3794:14;3783:9;3779:30;3775:39;3761:53;;3849:2;3841:6;3837:15;3870:1;3880:313;3894:6;3891:1;3888:13;3880:313;;;3983:66;3971:9;3963:6;3959:22;3955:95;3950:3;3943:108;4074:39;4106:6;4097;4091:13;4074:39;:::i;:::-;4064:49;-1:-1:-1;4171:12:12;;;;4136:15;;;;3916:1;3909:9;3880:313;;;-1:-1:-1;4210:6:12;;3292:930;-1:-1:-1;;;;;;;;3292:930:12:o;4409:641::-;4525:6;4533;4541;4594:2;4582:9;4573:7;4569:23;4565:32;4562:52;;;4610:1;4607;4600:12;4562:52;4649:9;4636:23;4702:5;4695:13;4688:21;4681:5;4678:32;4668:60;;4724:1;4721;4714:12;4668:60;4747:5;-1:-1:-1;4803:2:12;4788:18;;4775:32;4830:18;4819:30;;4816:50;;;4862:1;4859;4852:12;4816:50;4901:89;4982:7;4973:6;4962:9;4958:22;4901:89;:::i;:::-;4409:641;;5009:8;;-1:-1:-1;4875:115:12;;-1:-1:-1;;;;4409:641:12:o;5055:457::-;5338:6;5327:9;5320:25;5381:6;5376:2;5365:9;5361:18;5354:34;5424:2;5419;5408:9;5404:18;5397:30;5301:4;5444:62;5502:2;5491:9;5487:18;5479:6;5444:62;:::i;:::-;5436:70;5055:457;-1:-1:-1;;;;;5055:457:12:o;5517:309::-;5576:6;5629:2;5617:9;5608:7;5604:23;5600:32;5597:52;;;5645:1;5642;5635:12;5597:52;5684:9;5671:23;5734:42;5727:5;5723:54;5716:5;5713:65;5703:93;;5792:1;5789;5782:12;6548:180;6607:6;6660:2;6648:9;6639:7;6635:23;6631:32;6628:52;;;6676:1;6673;6666:12;6628:52;-1:-1:-1;6699:23:12;;6548:180;-1:-1:-1;6548:180:12:o;6733:184::-;6785:77;6782:1;6775:88;6882:4;6879:1;6872:15;6906:4;6903:1;6896:15;6922:184;6974:77;6971:1;6964:88;7071:4;7068:1;7061:15;7095:4;7092:1;7085:15;7111:386;7207:4;7265:11;7252:25;7355:66;7344:8;7328:14;7324:29;7320:102;7300:18;7296:127;7286:155;;7437:1;7434;7427:12;7286:155;7458:33;;;;;7111:386;-1:-1:-1;;7111:386:12:o;7502:580::-;7579:4;7585:6;7645:11;7632:25;7735:66;7724:8;7708:14;7704:29;7700:102;7680:18;7676:127;7666:155;;7817:1;7814;7807:12;7666:155;7844:33;;7896:20;;;-1:-1:-1;7939:18:12;7928:30;;7925:50;;;7971:1;7968;7961:12;7925:50;8004:4;7992:17;;-1:-1:-1;8035:14:12;8031:27;;;8021:38;;8018:58;;;8072:1;8069;8062:12;8087:271;8270:6;8262;8257:3;8244:33;8226:3;8296:16;;8321:13;;;8296:16;8087:271;-1:-1:-1;8087:271:12:o;8718:380::-;8808:4;8866:11;8853:25;8956:66;8945:8;8929:14;8925:29;8921:102;8901:18;8897:127;8887:155;;9038:1;9035;9028:12;9455:381;9546:4;9604:11;9591:25;9694:66;9683:8;9667:14;9663:29;9659:102;9639:18;9635:127;9625:155;;9776:1;9773;9766:12", - "linkReferences": {} - } -} \ No newline at end of file diff --git a/packages/ensjs/src/clients/decorators/public.ts b/packages/ensjs/src/clients/decorators/public.ts index ee48ec19..509f3d18 100644 --- a/packages/ensjs/src/clients/decorators/public.ts +++ b/packages/ensjs/src/clients/decorators/public.ts @@ -102,6 +102,7 @@ export type EnsPublicActions = { name, gatewayUrls, strict, + supportedContentTypes, }: GetAbiRecordParameters) => Promise /** * Gets an address record for a name and specified coin diff --git a/packages/ensjs/src/contracts/addEnsContracts.ts b/packages/ensjs/src/contracts/addEnsContracts.ts index 7765f766..cacd7006 100644 --- a/packages/ensjs/src/contracts/addEnsContracts.ts +++ b/packages/ensjs/src/contracts/addEnsContracts.ts @@ -1,5 +1,5 @@ import type { Chain } from 'viem' -import { NoChainError, UnsupportedNetworkError } from '../errors/contracts.js' +import { NoChainError, UnsupportedChainError } from '../errors/contracts.js' import { addresses, subgraphs, @@ -24,19 +24,19 @@ import { */ export const addEnsContracts = (chain: TChain) => { if (!chain) throw new NoChainError() - if (!supportedChains.includes(chain.network as SupportedChain)) - throw new UnsupportedNetworkError({ - network: chain.network, - supportedNetworks: supportedChains, + if (!supportedChains.includes(chain.id as SupportedChain)) + throw new UnsupportedChainError({ + chainId: chain.id, + supportedChains, }) return { ...chain, contracts: { ...chain.contracts, - ...addresses[chain.network as SupportedChain], + ...addresses[chain.id as SupportedChain], }, subgraphs: { - ...subgraphs[chain.network as SupportedChain], + ...subgraphs[chain.id as SupportedChain], }, } as unknown as CheckedChainWithEns } diff --git a/packages/ensjs/src/contracts/consts.ts b/packages/ensjs/src/contracts/consts.ts index 2e227fbd..65426c25 100644 --- a/packages/ensjs/src/contracts/consts.ts +++ b/packages/ensjs/src/contracts/consts.ts @@ -1,11 +1,4 @@ -import type { - Account, - Address, - Chain, - Client, - Transport, - WalletClient, -} from 'viem' +import type { Account, Address, Chain, Client, Transport } from 'viem' import type { Assign, Prettify } from '../types.js' type ChainContract = { @@ -13,12 +6,7 @@ type ChainContract = { blockCreated?: number } -export const supportedChains = [ - 'homestead', - 'goerli', - 'sepolia', - 'holesky', -] as const +export const supportedChains = [1, 5, 17000, 11155111] as const export const supportedContracts = [ 'ensBaseRegistrarImplementation', 'ensBulkRenewal', @@ -36,7 +24,7 @@ export type SupportedChain = (typeof supportedChains)[number] export type SupportedContract = (typeof supportedContracts)[number] export const addresses = { - homestead: { + 1: { ensBaseRegistrarImplementation: { address: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', }, @@ -68,7 +56,7 @@ export const addresses = { address: '0xce01f8eee7E479C928F8919abD53E553a36CeF67', }, }, - goerli: { + 5: { ensBaseRegistrarImplementation: { address: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', }, @@ -100,68 +88,68 @@ export const addresses = { address: '0x898A1182F3C2BBBF0b16b4DfEf63E9c3e9eB4821', }, }, - sepolia: { + 17000: { ensBaseRegistrarImplementation: { address: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', }, ensBulkRenewal: { - address: '0x4EF77b90762Eddb33C8Eba5B5a19558DaE53D7a1', + address: '0xbc4cfB363F948E64Cd73Da6438F64CB37E2e33d1', }, ensDnsRegistrar: { - address: '0x5a07C75Ae469Bf3ee2657B588e8E6ABAC6741b4f', + address: '0x458d278AEd4cE82BAeC384170f39198b01B8351c', }, ensDnssecImpl: { - address: '0xe62E4b6cE018Ad6e916fcC24545e20a33b9d8653', + address: '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5', }, ensEthRegistrarController: { - address: '0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72', + address: '0x179Be112b24Ad4cFC392eF8924DfA08C20Ad8583', }, ensNameWrapper: { - address: '0x0635513f179D50A207757E05759CbD106d7dFcE8', + address: '0xab50971078225D365994dc1Edcb9b7FD72Bb4862', }, ensPublicResolver: { - address: '0x8FADE66B79cC9f707aB26799354482EB93a5B7dD', + address: '0x9010A27463717360cAD99CEA8bD39b8705CCA238', }, ensRegistry: { address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e', }, ensReverseRegistrar: { - address: '0xA0a1AbcDAe1a2a4A2EF8e9113Ff0e02DD81DC0C6', + address: '0x132AC0B116a73add4225029D1951A9A707Ef673f', }, ensUniversalResolver: { - address: '0xc8af999e38273d658be1b921b88a9ddf005769cc', + address: '0xa6ac935d4971e3cd133b950ae053becd16fe7f3b', }, }, - holesky: { + 11155111: { ensBaseRegistrarImplementation: { address: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', }, ensBulkRenewal: { - address: '0xbc4cfB363F948E64Cd73Da6438F64CB37E2e33d1', + address: '0x4EF77b90762Eddb33C8Eba5B5a19558DaE53D7a1', }, ensDnsRegistrar: { - address: '0x458d278AEd4cE82BAeC384170f39198b01B8351c', + address: '0x5a07C75Ae469Bf3ee2657B588e8E6ABAC6741b4f', }, ensDnssecImpl: { - address: '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5', + address: '0xe62E4b6cE018Ad6e916fcC24545e20a33b9d8653', }, ensEthRegistrarController: { - address: '0x179Be112b24Ad4cFC392eF8924DfA08C20Ad8583', + address: '0xFED6a969AaA60E4961FCD3EBF1A2e8913ac65B72', }, ensNameWrapper: { - address: '0xab50971078225D365994dc1Edcb9b7FD72Bb4862', + address: '0x0635513f179D50A207757E05759CbD106d7dFcE8', }, ensPublicResolver: { - address: '0x9010A27463717360cAD99CEA8bD39b8705CCA238', + address: '0x8FADE66B79cC9f707aB26799354482EB93a5B7dD', }, ensRegistry: { address: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e', }, ensReverseRegistrar: { - address: '0x132AC0B116a73add4225029D1951A9A707Ef673f', + address: '0xA0a1AbcDAe1a2a4A2EF8e9113Ff0e02DD81DC0C6', }, ensUniversalResolver: { - address: '0xa6ac935d4971e3cd133b950ae053becd16fe7f3b', + address: '0xc8af999e38273d658be1b921b88a9ddf005769cc', }, }, } as const satisfies Record< @@ -176,24 +164,24 @@ type Subgraphs = { } export const subgraphs = { - homestead: { + 1: { ens: { url: 'https://api.thegraph.com/subgraphs/name/ensdomains/ens', }, }, - goerli: { + 5: { ens: { url: 'https://api.thegraph.com/subgraphs/name/ensdomains/ensgoerli', }, }, - sepolia: { + 17000: { ens: { - url: 'https://api.studio.thegraph.com/query/49574/enssepolia/version/latest', + url: 'https://api.studio.thegraph.com/query/49574/ensholesky/version/latest', }, }, - holesky: { + 11155111: { ens: { - url: 'https://api.studio.thegraph.com/query/49574/ensholesky/version/latest', + url: 'https://api.studio.thegraph.com/query/49574/enssepolia/version/latest', }, }, } as const satisfies Record @@ -231,11 +219,11 @@ export type ChainWithBaseContracts = Assign< > export type CheckedChainWithEns = - TChain['network'] extends SupportedChain + TChain['id'] extends SupportedChain ? TChain['contracts'] extends BaseChainContracts ? TChain & { - contracts: Prettify<(typeof addresses)[TChain['network']]> - subgraphs: (typeof subgraphs)[TChain['network']] + contracts: Prettify<(typeof addresses)[TChain['id']]> + subgraphs: (typeof subgraphs)[TChain['id']] } : never : never @@ -245,8 +233,8 @@ export type ClientWithEns< TChain extends ChainWithEns = ChainWithEns, > = Client -export type WalletWithEns< +export type ClientWithAccount< TTransport extends Transport = Transport, TChain extends ChainWithEns = ChainWithEns, TAccount extends Account | undefined = Account | undefined, -> = WalletClient +> = Client diff --git a/packages/ensjs/src/contracts/index.ts b/packages/ensjs/src/contracts/index.ts index a74370f3..b998202a 100644 --- a/packages/ensjs/src/contracts/index.ts +++ b/packages/ensjs/src/contracts/index.ts @@ -18,10 +18,10 @@ export { supportedContracts, type ChainWithEns, type CheckedChainWithEns, + type ClientWithAccount, type ClientWithEns, type SupportedChain, type SupportedContract, - type WalletWithEns, } from './consts.js' export { dnsRegistrarErrors, diff --git a/packages/ensjs/src/contracts/universalResolver.ts b/packages/ensjs/src/contracts/universalResolver.ts index eaf71e87..d8a3fbd3 100644 --- a/packages/ensjs/src/contracts/universalResolver.ts +++ b/packages/ensjs/src/contracts/universalResolver.ts @@ -67,6 +67,10 @@ const universalResolverReverse = { export const universalResolverReverseSnippet = [ ...universalResolverErrors, universalResolverReverse, +] as const + +export const universalResolverReverseWithGatewaysSnippet = [ + ...universalResolverErrors, { ...universalResolverReverse, inputs: [ @@ -108,6 +112,10 @@ const universalResolverResolve = { export const universalResolverResolveSnippet = [ ...universalResolverErrors, universalResolverResolve, +] as const + +export const universalResolverResolveWithGatewaysSnippet = [ + ...universalResolverErrors, { ...universalResolverResolve, inputs: [ @@ -159,6 +167,10 @@ const universalResolverResolveArray = { export const universalResolverResolveArraySnippet = [ ...universalResolverErrors, universalResolverResolveArray, +] as const + +export const universalResolverResolveArrayWithGatewaysSnippet = [ + ...universalResolverErrors, { ...universalResolverResolveArray, inputs: [ diff --git a/packages/ensjs/src/errors/contracts.ts b/packages/ensjs/src/errors/contracts.ts index 092b38ca..594c0373 100644 --- a/packages/ensjs/src/errors/contracts.ts +++ b/packages/ensjs/src/errors/contracts.ts @@ -1,27 +1,27 @@ import { BaseError } from './base.js' -export class UnsupportedNetworkError extends BaseError { - network: string +export class UnsupportedChainError extends BaseError { + chainId: number - supportedNetworks: readonly string[] + supportedChains: readonly number[] - override name = 'UnsupportedNetworkError' + override name = 'UnsupportedChainError' constructor({ - network, - supportedNetworks, + chainId, + supportedChains, details, }: { - network: string - supportedNetworks: readonly string[] + chainId: number + supportedChains: readonly number[] details?: string }) { - super(`Unsupported network: ${network}`, { - metaMessages: [`- Supported networks: ${supportedNetworks.join(', ')}`], + super(`Unsupported chain: ${chainId}`, { + metaMessages: [`- Supported chains: ${supportedChains.join(', ')}`], details, }) - this.network = network - this.supportedNetworks = supportedNetworks + this.chainId = chainId + this.supportedChains = supportedChains } } diff --git a/packages/ensjs/src/errors/dns.ts b/packages/ensjs/src/errors/dns.ts index 6e50a55a..01dbbb26 100644 --- a/packages/ensjs/src/errors/dns.ts +++ b/packages/ensjs/src/errors/dns.ts @@ -22,6 +22,14 @@ export class DnsDnssecVerificationFailedError extends BaseError { } } +export class DnsDnssecWildcardExpansionError extends BaseError { + override name = 'DnsDnssecWildcardExpansionError' + + constructor() { + super('DNSSEC wildcard expansion not supported') + } +} + export class DnsNoTxtRecordError extends BaseError { override name = 'DnsNoTxtRecordError' diff --git a/packages/ensjs/src/errors/utils.ts b/packages/ensjs/src/errors/utils.ts index 6f28eaf9..55b0cac3 100644 --- a/packages/ensjs/src/errors/utils.ts +++ b/packages/ensjs/src/errors/utils.ts @@ -170,3 +170,16 @@ export class UnknownContentTypeError extends BaseError { super(`Unknown content type: ${contentType}`) } } + +export class ResolverAddressRequiredError extends BaseError { + override name = 'ResolverAddressRequiredError' + + constructor({ data }: { data: object }) { + super('Resolver address is required when data is supplied', { + metaMessages: [ + 'Supplied data:', + ...Object.entries(data).map(([k, v]) => `- ${k}: ${v}`), + ], + }) + } +} diff --git a/packages/ensjs/src/functions/dns/getDnsImportData.test.ts b/packages/ensjs/src/functions/dns/getDnsImportData.test.ts index 4e332893..5a48bf47 100644 --- a/packages/ensjs/src/functions/dns/getDnsImportData.test.ts +++ b/packages/ensjs/src/functions/dns/getDnsImportData.test.ts @@ -1,8 +1,13 @@ import { SignedSet } from '@ensdomains/dnsprovejs' import { toBytes } from 'viem' +import { expect, it, vi } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getDnsImportData, { type RrSetWithSig } from './getDnsImportData.js' +vi.setConfig({ + testTimeout: 10000, +}) + const decodeProofs = (proofs: RrSetWithSig[]) => proofs.map((proof) => SignedSet.fromWire( @@ -11,9 +16,6 @@ const decodeProofs = (proofs: RrSetWithSig[]) => ), ) -jest.setTimeout(10000) -jest.retryTimes(2) - it('returns all rrsets', async () => { const result = await getDnsImportData(publicClient, { name: 'taytems.xyz', diff --git a/packages/ensjs/src/functions/dns/getDnsOffchainData.test.ts b/packages/ensjs/src/functions/dns/getDnsOffchainData.test.ts index a154df6f..726267cc 100644 --- a/packages/ensjs/src/functions/dns/getDnsOffchainData.test.ts +++ b/packages/ensjs/src/functions/dns/getDnsOffchainData.test.ts @@ -2,13 +2,26 @@ import type { RequestListener } from 'http' import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' -import { getVersion } from '../../errors/error-utils.js' +import { + afterAll, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, + type MockedFunction, +} from 'vitest' import { addEnsContracts } from '../../index.js' import { createHttpServer } from '../../test/createHttpServer.js' import { createHandlerResponse } from '../../test/dns.js' import getDnsOffchainData from './getDnsOffchainData.js' -const handler: jest.MockedFunction = jest.fn() +vi.setConfig({ + testTimeout: 10000, +}) + +const handler: MockedFunction = vi.fn() let closeServer: () => Promise let serverUrl: `http://${string}` = 'http://' @@ -26,12 +39,9 @@ beforeEach(() => { handler.mockReset() }) -jest.setTimeout(10000) -jest.retryTimes(2) - const mainnetPublicClient = createPublicClient({ chain: addEnsContracts(mainnet), - transport: http('https://web3.ens.domains/v1/mainnet'), + transport: http('https://mainnet.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) it('returns offchain data', async () => { @@ -45,6 +55,12 @@ it('returns offchain data', async () => { TTL: 0, data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -72,6 +88,12 @@ it('returns offchain data with extra data as address', async () => { TTL: 0, data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01 0x8e8Db5CcEF88cca9d624701Db544989C996E3216"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -99,6 +121,12 @@ it('returns offchain data with extra data as text', async () => { TTL: 0, data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01 hello world"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -126,6 +154,12 @@ it('returns offchain data from ens name', async () => { TTL: 0, data: '"ENS1 dnsname.ens.eth"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -159,6 +193,12 @@ it('returns first offchain data from multiple', async () => { TTL: 0, data: '"ENS1 0x8e8Db5CcEF88cca9d624701Db544989C996E3216"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -198,6 +238,12 @@ it('returns first valid offchain data when multiple invalid', async () => { TTL: 0, data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) @@ -225,6 +271,12 @@ it('allows subname input', async () => { TTL: 0, data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01"', }, + { + name: 'sub.example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 3', + }, ], }) @@ -248,11 +300,11 @@ it('throws error when name type is .eth', async () => { endpoint: serverUrl, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Unsupported name type: eth-2ld + [UnsupportedNameTypeError: Unsupported name type: eth-2ld - Supported name types: other-2ld, other-subname - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -272,9 +324,9 @@ describe('DnsResponseStatus is not NOERROR', () => { strict: true, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "DNS query failed with status: NXDOMAIN + [DnsResponseStatusError: DNS query failed with status: NXDOMAIN - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -305,9 +357,9 @@ describe('AD is false', () => { strict: true, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "DNSSEC verification failed + [DnsDnssecVerificationFailedError: DNSSEC verification failed - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -338,9 +390,9 @@ describe('no TXT records', () => { strict: true, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "No TXT record found + [DnsNoTxtRecordError: No TXT record found - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -355,6 +407,52 @@ describe('no TXT records', () => { }) }) +describe('wildcard expansion', () => { + beforeEach(() => { + createHandlerResponse(handler, { + Status: 0, + AD: true, + Answer: [ + { + name: 'example.com', + type: 16, + TTL: 0, + data: '"ENS1 0x238A8F792dFA6033814B18618aD4100654aeef01"', + }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 1', + }, + ], + }) + }) + + it('strict: throws error', async () => { + await expect( + getDnsOffchainData(mainnetPublicClient, { + name: 'example.com', + endpoint: serverUrl, + strict: true, + }), + ).rejects.toThrowErrorMatchingInlineSnapshot(` + [DnsDnssecWildcardExpansionError: DNSSEC wildcard expansion not supported + + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) + }) + it('not strict: returns null', async () => { + await expect( + getDnsOffchainData(mainnetPublicClient, { + name: 'example.com', + endpoint: serverUrl, + strict: false, + }), + ).resolves.toBeNull() + }) +}) + describe('only invalid records', () => { beforeEach(() => { createHandlerResponse(handler, { @@ -373,6 +471,12 @@ describe('only invalid records', () => { TTL: 0, data: '"ENS1 randomnonsense"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) }) @@ -385,9 +489,9 @@ describe('only invalid records', () => { strict: true, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Invalid TXT record: ENS1 0x238A8F7 + [DnsInvalidTxtRecordError: Invalid TXT record: ENS1 0x238A8F7 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -420,6 +524,12 @@ describe('no eligible invalid records', () => { TTL: 0, data: '"random"', }, + { + name: 'example.com', + type: 46, + TTL: 0, + data: 'TXT ALGORITHM 2', + }, ], }) }) @@ -432,9 +542,9 @@ describe('no eligible invalid records', () => { strict: true, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "No TXT record found + [DnsNoTxtRecordError: No TXT record found - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) diff --git a/packages/ensjs/src/functions/dns/getDnsOffchainData.ts b/packages/ensjs/src/functions/dns/getDnsOffchainData.ts index 75d07048..11beda84 100644 --- a/packages/ensjs/src/functions/dns/getDnsOffchainData.ts +++ b/packages/ensjs/src/functions/dns/getDnsOffchainData.ts @@ -2,6 +2,7 @@ import { isAddress, type Address, type Client, type Transport } from 'viem' import type { ChainWithEns } from '../../contracts/consts.js' import { DnsDnssecVerificationFailedError, + DnsDnssecWildcardExpansionError, DnsInvalidTxtRecordError, DnsNoTxtRecordError, DnsResponseStatusError, @@ -110,6 +111,18 @@ const getDnsOffchainData = async ( if (!response.Answer?.length) throw new DnsNoTxtRecordError() + const labels = name.split('.') + const rrsigRecord = response.Answer.find((record) => { + if (record.type !== DnsRecordType.RRSIG) return false + if (record.name !== name) return false + if (!record.data.startsWith('TXT')) return false + const [, , labelCount] = record.data.split(' ') + // mismatching label count implies wildcard expansion, which is not supported + return Number(labelCount) === labels.length + }) + + if (!rrsigRecord) throw new DnsDnssecWildcardExpansionError() + const ensTxtRecords = await Promise.all( response.Answer.map((record) => checkValidEnsTxtRecord(client, record)), ) diff --git a/packages/ensjs/src/functions/dns/getDnsOwner.test.ts b/packages/ensjs/src/functions/dns/getDnsOwner.test.ts index 9308c9b8..38fee301 100644 --- a/packages/ensjs/src/functions/dns/getDnsOwner.test.ts +++ b/packages/ensjs/src/functions/dns/getDnsOwner.test.ts @@ -1,10 +1,23 @@ /* eslint-disable @typescript-eslint/naming-convention */ import type { RequestListener } from 'http' -import { getVersion } from '../../errors/error-utils.js' +import { + afterAll, + beforeAll, + beforeEach, + describe, + expect, + it, + vi, + type MockedFunction, +} from 'vitest' import { createHttpServer } from '../../test/createHttpServer.js' import getDnsOwner from './getDnsOwner.js' -const handler: jest.MockedFunction = jest.fn() +vi.setConfig({ + testTimeout: 10000, +}) + +const handler: MockedFunction = vi.fn() let closeServer: () => Promise let serverUrl: `http://${string}` = 'http://' @@ -22,9 +35,6 @@ beforeEach(() => { handler.mockReset() }) -jest.setTimeout(10000) -jest.retryTimes(2) - it('returns valid address from valid domain and record', async () => { let name let type @@ -61,21 +71,21 @@ it('returns valid address from valid domain and record', async () => { it('throws error when .eth', async () => { await expect(getDnsOwner({ name: 'example.eth' })).rejects .toThrowErrorMatchingInlineSnapshot(` - "Unsupported name type: eth-2ld + [UnsupportedNameTypeError: Unsupported name type: eth-2ld - Supported name types: other-2ld - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('throws error when >2ld', async () => { await expect(getDnsOwner({ name: 'subdomain.example.com' })).rejects .toThrowErrorMatchingInlineSnapshot(` - "Unsupported name type: other-subname + [UnsupportedNameTypeError: Unsupported name type: other-subname - Supported name types: other-2ld - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) describe('DnsResponseStatus is not NOERROR', () => { @@ -95,9 +105,9 @@ describe('DnsResponseStatus is not NOERROR', () => { await expect( getDnsOwner({ name: 'example.com', endpoint: serverUrl, strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "DNS query failed with status: NXDOMAIN + [DnsResponseStatusError: DNS query failed with status: NXDOMAIN - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('not strict: returns null', async () => { @@ -127,9 +137,9 @@ describe('AD is false', () => { await expect( getDnsOwner({ name: 'example.com', endpoint: serverUrl, strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "DNSSEC verification failed + [DnsDnssecVerificationFailedError: DNSSEC verification failed - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('not strict: returns null', async () => { @@ -157,9 +167,9 @@ describe('no TXT record', () => { await expect( getDnsOwner({ name: 'example.com', endpoint: serverUrl, strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "No TXT record found + [DnsNoTxtRecordError: No TXT record found - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('not strict: returns null', async () => { @@ -194,9 +204,9 @@ describe('TXT record is not formatted correctly', () => { await expect( getDnsOwner({ name: 'example.com', endpoint: serverUrl, strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Invalid TXT record: 0x8e8Db5CcEF88cca9d624701Db544989C996E3216 + [DnsInvalidTxtRecordError: Invalid TXT record: 0x8e8Db5CcEF88cca9d624701Db544989C996E3216 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('not strict: returns null', async () => { @@ -231,9 +241,9 @@ describe('address is not checksummed', () => { await expect( getDnsOwner({ name: 'example.com', endpoint: serverUrl, strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Invalid address checksum: 0x8e8db5ccef88cca9d624701db544989c996e3216 + [DnsInvalidAddressChecksumError: Invalid address checksum: 0x8e8db5ccef88cca9d624701db544989c996e3216 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('not strict: returns null', async () => { diff --git a/packages/ensjs/src/functions/dns/importDnsName.test.ts b/packages/ensjs/src/functions/dns/importDnsName.test.ts index f2c280be..7050897f 100644 --- a/packages/ensjs/src/functions/dns/importDnsName.test.ts +++ b/packages/ensjs/src/functions/dns/importDnsName.test.ts @@ -1,6 +1,7 @@ +import { afterEach } from 'node:test' import { parseAbi, parseEther, type Address, type Hex } from 'viem' +import { beforeAll, beforeEach, expect, it, vi } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' -import { getVersion } from '../../errors/error-utils.js' import { deploymentAddresses, publicClient, @@ -15,6 +16,10 @@ import getDnsImportData, { } from './getDnsImportData.js' import importDnsName from './importDnsName.js' +vi.setConfig({ + testTimeout: 10000, +}) + const name = 'taytems.xyz' const address = '0x8e8Db5CcEF88cca9d624701Db544989C996E3216' @@ -52,9 +57,6 @@ afterEach(async () => { await testClient.revert({ id: snapshot }) }) -jest.setTimeout(10000) -jest.retryTimes(2) - it('should import a DNS name with no address', async () => { const tx = await importDnsName(walletClient, { name, @@ -131,12 +133,12 @@ it('should throw error if resolver is specified when claiming without an address account: accounts[0], } as any), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Additional parameter specified: resolverAddress + [AdditionalParameterSpecifiedError: Additional parameter specified: resolverAddress - Allowed parameters: name, dnsImportData Details: resolverAddress cannot be specified when claiming without an address - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) diff --git a/packages/ensjs/src/functions/dns/importDnsName.ts b/packages/ensjs/src/functions/dns/importDnsName.ts index 52fd20c0..78596852 100644 --- a/packages/ensjs/src/functions/dns/importDnsName.ts +++ b/packages/ensjs/src/functions/dns/importDnsName.ts @@ -6,9 +6,9 @@ import { type Hash, type SendTransactionParameters, type Transport, - type WalletClient, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { dnsRegistrarProveAndClaimSnippet, dnsRegistrarProveAndClaimWithResolverSnippet, @@ -64,7 +64,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletClient, + wallet: ClientWithAccount, { name, dnsImportData, @@ -112,7 +112,7 @@ export const makeFunctionData = < /** * Creates a transaction to import a DNS name to ENS. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link ImportDnsNameParameters} * @returns A transaction hash. {@link ImportDnsNameReturnType} * @@ -144,7 +144,7 @@ async function importDnsName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, address, @@ -163,7 +163,7 @@ async function importDnsName< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } importDnsName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/public/_getAbi.test.ts b/packages/ensjs/src/functions/public/_getAbi.test.ts index 02b845c6..9bfaf99a 100644 --- a/packages/ensjs/src/functions/public/_getAbi.test.ts +++ b/packages/ensjs/src/functions/public/_getAbi.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import _getAbi from './_getAbi.js' @@ -11,11 +12,11 @@ it('does not propagate error when strict is false', async () => { it('propagates error when strict is true', async () => { await expect(_getAbi.decode({} as ClientWithEns, '0x1234', { strict: true })) .rejects.toThrowErrorMatchingInlineSnapshot(` - "Data size of 2 bytes is too small for given parameters. + [AbiDecodingDataSizeTooSmallError: Data size of 2 bytes is too small for given parameters. Params: (uint256, bytes) Data: 0x1234 (2 bytes) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) diff --git a/packages/ensjs/src/functions/public/_getAddr.test.ts b/packages/ensjs/src/functions/public/_getAddr.test.ts index 50efdad8..5cd63a8e 100644 --- a/packages/ensjs/src/functions/public/_getAddr.test.ts +++ b/packages/ensjs/src/functions/public/_getAddr.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import _getAddr from './_getAddr.js' @@ -11,11 +12,11 @@ it('does not propagate error when strict is false', async () => { it('propagates error when strict is true', async () => { await expect(_getAddr.decode({} as ClientWithEns, '0x1234', { strict: true })) .rejects.toThrowErrorMatchingInlineSnapshot(` - "Data size of 2 bytes is too small for given parameters. + [AbiDecodingDataSizeTooSmallError: Data size of 2 bytes is too small for given parameters. Params: (address) Data: 0x1234 (2 bytes) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) diff --git a/packages/ensjs/src/functions/public/_getContentHash.test.ts b/packages/ensjs/src/functions/public/_getContentHash.test.ts index af92175d..c208be72 100644 --- a/packages/ensjs/src/functions/public/_getContentHash.test.ts +++ b/packages/ensjs/src/functions/public/_getContentHash.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import _getContentHash from './_getContentHash.js' @@ -12,11 +13,11 @@ it('propagates error when strict is true', async () => { await expect( _getContentHash.decode({} as ClientWithEns, '0x1234', { strict: true }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Data size of 2 bytes is too small for given parameters. + [AbiDecodingDataSizeTooSmallError: Data size of 2 bytes is too small for given parameters. Params: (bytes) Data: 0x1234 (2 bytes) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) diff --git a/packages/ensjs/src/functions/public/_getText.test.ts b/packages/ensjs/src/functions/public/_getText.test.ts index 12237fe6..d5f68fcb 100644 --- a/packages/ensjs/src/functions/public/_getText.test.ts +++ b/packages/ensjs/src/functions/public/_getText.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import _getText from './_getText.js' @@ -11,11 +12,11 @@ it('does not propagate error when strict is false', async () => { it('propagates error when strict is true', async () => { await expect(_getText.decode({} as ClientWithEns, '0x1234', { strict: true })) .rejects.toThrowErrorMatchingInlineSnapshot(` - "Data size of 2 bytes is too small for given parameters. + [AbiDecodingDataSizeTooSmallError: Data size of 2 bytes is too small for given parameters. Params: (string) Data: 0x1234 (2 bytes) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) diff --git a/packages/ensjs/src/functions/public/batch.test.ts b/packages/ensjs/src/functions/public/batch.test.ts index 6d9c9610..ad36841a 100644 --- a/packages/ensjs/src/functions/public/batch.test.ts +++ b/packages/ensjs/src/functions/public/batch.test.ts @@ -1,5 +1,6 @@ import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' +import { describe, expect, it } from 'vitest' import { addEnsContracts } from '../../contracts/addEnsContracts.js' import { deploymentAddresses, @@ -12,7 +13,7 @@ import getText from './getTextRecord.js' const mainnetPublicClient = createPublicClient({ chain: addEnsContracts(mainnet), - transport: http('https://web3.ens.domains/v1/mainnet'), + transport: http('https://mainnet.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) describe('batch', () => { diff --git a/packages/ensjs/src/functions/public/ccip.test.ts b/packages/ensjs/src/functions/public/ccip.test.ts index 41b041f7..90a5e155 100644 --- a/packages/ensjs/src/functions/public/ccip.test.ts +++ b/packages/ensjs/src/functions/public/ccip.test.ts @@ -1,23 +1,26 @@ import { createPublicClient, http } from 'viem' import { goerli, mainnet } from 'viem/chains' +import { describe, expect, it, vi } from 'vitest' import { addEnsContracts } from '../../contracts/addEnsContracts.js' import batch from './batch.js' import getAddressRecord from './getAddressRecord.js' import getRecords from './getRecords.js' import getText from './getTextRecord.js' +vi.setConfig({ + testTimeout: 30000, +}) + const goerliPublicClient = createPublicClient({ chain: addEnsContracts(goerli), - transport: http('https://web3.ens.domains/v1/goerli'), + transport: http('https://goerli.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) const mainnetPublicClient = createPublicClient({ chain: addEnsContracts(mainnet), - transport: http('https://web3.ens.domains/v1/mainnet'), + transport: http('https://mainnet.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) -jest.setTimeout(30000) - describe('CCIP', () => { describe('getRecords', () => { it('should return records from a ccip-read name', async () => { diff --git a/packages/ensjs/src/functions/public/getAbiRecord.test.ts b/packages/ensjs/src/functions/public/getAbiRecord.test.ts index a6b8ff35..0b9d8ee7 100644 --- a/packages/ensjs/src/functions/public/getAbiRecord.test.ts +++ b/packages/ensjs/src/functions/public/getAbiRecord.test.ts @@ -1,8 +1,9 @@ import { RawContractError } from 'viem' +import { describe, expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import { publicClient } from '../../test/addTestContracts.js' -import getAbiRecord from './getAbiRecord.js' import { generateSupportedContentTypes } from '../../utils/generateSupportedContentTypes.js' +import getAbiRecord from './getAbiRecord.js' const dummyABI = [ { @@ -251,7 +252,7 @@ describe('getAbiRecord()', () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -260,7 +261,7 @@ describe('getAbiRecord()', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/functions/public/getAbiRecord.ts b/packages/ensjs/src/functions/public/getAbiRecord.ts index 8e658d5b..53dbe42d 100644 --- a/packages/ensjs/src/functions/public/getAbiRecord.ts +++ b/packages/ensjs/src/functions/public/getAbiRecord.ts @@ -44,10 +44,14 @@ const decode = async ( client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { strict }: Pick, + { + strict, + gatewayUrls, + }: Pick, ): Promise => { const urData = await universalWrapper.decode(client, data, passthrough, { strict, + gatewayUrls, }) if (!urData) return null return _getAbi.decode(client, urData.data, { strict }) @@ -76,7 +80,7 @@ type BatchableFunctionObject = GeneratedFunction */ const getAbiRecord = generateFunction({ encode, decode }) as (( client: ClientWithEns, - { name, strict }: GetAbiRecordParameters, + { name, strict, gatewayUrls, supportedContentTypes }: GetAbiRecordParameters, ) => Promise) & BatchableFunctionObject diff --git a/packages/ensjs/src/functions/public/getAddressRecord.test.ts b/packages/ensjs/src/functions/public/getAddressRecord.test.ts index bf34714b..15eacbf3 100644 --- a/packages/ensjs/src/functions/public/getAddressRecord.test.ts +++ b/packages/ensjs/src/functions/public/getAddressRecord.test.ts @@ -1,5 +1,6 @@ import { RawContractError, createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' +import { describe, expect, it } from 'vitest' import { addEnsContracts } from '../../contracts/addEnsContracts.js' import type { ClientWithEns } from '../../contracts/consts.js' import { publicClient } from '../../test/addTestContracts.js' @@ -7,7 +8,7 @@ import getAddressRecord from './getAddressRecord.js' const mainnetPublicClient = createPublicClient({ chain: addEnsContracts(mainnet), - transport: http('https://web3.ens.domains/v1/mainnet'), + transport: http('https://mainnet.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) describe('getAddressRecord()', () => { @@ -111,7 +112,7 @@ describe('getAddressRecord()', () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -120,7 +121,7 @@ describe('getAddressRecord()', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/functions/public/getAddressRecord.ts b/packages/ensjs/src/functions/public/getAddressRecord.ts index a8810424..fbf79bd2 100644 --- a/packages/ensjs/src/functions/public/getAddressRecord.ts +++ b/packages/ensjs/src/functions/public/getAddressRecord.ts @@ -44,10 +44,15 @@ const decode = async ( client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { coin, strict }: Pick, + { + coin, + strict, + gatewayUrls, + }: Pick, ): Promise => { const urData = await universalWrapper.decode(client, data, passthrough, { strict, + gatewayUrls, }) if (!urData) return null return _getAddr.decode(client, urData.data, { coin, strict }) @@ -76,7 +81,7 @@ type BatchableFunctionObject = GeneratedFunction */ const getAddressRecord = generateFunction({ encode, decode }) as (( client: ClientWithEns, - { name, coin, bypassFormat, strict }: GetAddressRecordParameters, + { name, coin, bypassFormat, strict, gatewayUrls }: GetAddressRecordParameters, ) => Promise) & BatchableFunctionObject diff --git a/packages/ensjs/src/functions/public/getAvailable.test.ts b/packages/ensjs/src/functions/public/getAvailable.test.ts index 75318721..91e5c6b6 100644 --- a/packages/ensjs/src/functions/public/getAvailable.test.ts +++ b/packages/ensjs/src/functions/public/getAvailable.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getAvailable from './getAvailable.js' diff --git a/packages/ensjs/src/functions/public/getContentHashRecord.test.ts b/packages/ensjs/src/functions/public/getContentHashRecord.test.ts index e557586e..3c86896e 100644 --- a/packages/ensjs/src/functions/public/getContentHashRecord.test.ts +++ b/packages/ensjs/src/functions/public/getContentHashRecord.test.ts @@ -1,4 +1,5 @@ import { RawContractError } from 'viem' +import { describe, expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import { publicClient } from '../../test/addTestContracts.js' import getContentHashRecord from './getContentHashRecord.js' @@ -57,7 +58,7 @@ describe('getContentHashRecord', () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -66,7 +67,7 @@ describe('getContentHashRecord', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/functions/public/getContentHashRecord.ts b/packages/ensjs/src/functions/public/getContentHashRecord.ts index 8bea2be0..4d19cee9 100644 --- a/packages/ensjs/src/functions/public/getContentHashRecord.ts +++ b/packages/ensjs/src/functions/public/getContentHashRecord.ts @@ -41,10 +41,14 @@ const decode = async ( client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { strict }: Pick, + { + strict, + gatewayUrls, + }: Pick, ): Promise => { const urData = await universalWrapper.decode(client, data, passthrough, { strict, + gatewayUrls, }) if (!urData) return null return _getContentHash.decode(client, urData.data, { strict }) @@ -73,7 +77,7 @@ type BatchableFunctionObject = GeneratedFunction */ const getContentHashRecord = generateFunction({ encode, decode }) as (( client: ClientWithEns, - { name, strict }: GetContentHashRecordParameters, + { name, strict, gatewayUrls }: GetContentHashRecordParameters, ) => Promise) & BatchableFunctionObject diff --git a/packages/ensjs/src/functions/public/getExpiry.test.ts b/packages/ensjs/src/functions/public/getExpiry.test.ts index 20c8ff98..d1354791 100644 --- a/packages/ensjs/src/functions/public/getExpiry.test.ts +++ b/packages/ensjs/src/functions/public/getExpiry.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getExpiry from './getExpiry.js' diff --git a/packages/ensjs/src/functions/public/getName.test.ts b/packages/ensjs/src/functions/public/getName.test.ts index 16043f80..2782d4fc 100644 --- a/packages/ensjs/src/functions/public/getName.test.ts +++ b/packages/ensjs/src/functions/public/getName.test.ts @@ -1,4 +1,5 @@ import { RawContractError, type Address, type Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import { deploymentAddresses, @@ -7,6 +8,8 @@ import { waitForTransaction, walletClient, } from '../../test/addTestContracts.js' +import createSubname from '../wallet/createSubname.js' +import setAddressRecord from '../wallet/setAddressRecord.js' import setPrimaryName from '../wallet/setPrimaryName.js' import getName from './getName.js' @@ -107,7 +110,7 @@ describe('getName', () => { { address: accounts[0], allowMismatch: true, strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "reverse" reverted. + [ContractFunctionExecutionError: The contract function "reverse" reverted. Error: ResolverNotFound() @@ -116,7 +119,36 @@ describe('getName', () => { function: reverse(bytes reverseName) args: (0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) + it('should not return unnormalised name', async () => { + const tx1 = await createSubname(walletClient, { + name: 'suB.with-profile.eth', + contract: 'registry', + owner: accounts[0], + resolverAddress: deploymentAddresses.PublicResolver, + account: accounts[0], + }) + await waitForTransaction(tx1) + const tx2 = await setAddressRecord(walletClient, { + name: 'suB.with-profile.eth', + coin: 'eth', + resolverAddress: deploymentAddresses.PublicResolver, + value: accounts[0], + account: accounts[0], + }) + await waitForTransaction(tx2) + const tx3 = await setPrimaryName(walletClient, { + name: 'suB.with-profile.eth', + account: accounts[0], + }) + await waitForTransaction(tx3) + + const result = await getName(publicClient, { + address: accounts[0], + }) + + expect(result).toBeNull() + }) }) diff --git a/packages/ensjs/src/functions/public/getName.ts b/packages/ensjs/src/functions/public/getName.ts index e08a75e3..69ef7294 100644 --- a/packages/ensjs/src/functions/public/getName.ts +++ b/packages/ensjs/src/functions/public/getName.ts @@ -2,13 +2,17 @@ import { BaseError, decodeFunctionResult, encodeFunctionData, + getAddress, toHex, type Address, type Hex, } from 'viem' import type { ClientWithEns } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' -import { universalResolverReverseSnippet } from '../../contracts/universalResolver.js' +import { + universalResolverReverseSnippet, + universalResolverReverseWithGatewaysSnippet, +} from '../../contracts/universalResolver.js' import type { GenericPassthrough, TransactionRequestWithPassthrough, @@ -19,6 +23,7 @@ import { type GeneratedFunction, } from '../../utils/generateFunction.js' import { packetToBytes } from '../../utils/hexEncodedName.js' +import { normalise } from '../../utils/normalise.js' export type GetNameParameters = { /** Address to get name for */ @@ -58,7 +63,7 @@ const encode = ( ...(gatewayUrls?.length ? { data: encodeFunctionData({ - abi: universalResolverReverseSnippet, + abi: universalResolverReverseWithGatewaysSnippet, functionName: 'reverse', args: [...args, gatewayUrls] as const, }), @@ -85,11 +90,13 @@ const decode = async ( _client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { address, allowMismatch, strict }: GetNameParameters, + { address, allowMismatch, strict, gatewayUrls }: GetNameParameters, ): Promise => { const isSafe = checkSafeUniversalResolverData(data, { strict, - abi: universalResolverReverseSnippet, + abi: gatewayUrls + ? universalResolverReverseWithGatewaysSnippet + : universalResolverReverseSnippet, args: passthrough.args, functionName: 'reverse', address: passthrough.address, @@ -97,19 +104,25 @@ const decode = async ( if (!isSafe) return null try { - const result = decodeFunctionResult({ + const [ + unnormalisedName, + forwardResolvedAddress, + reverseResolverAddress, + resolverAddress, + ] = decodeFunctionResult({ abi: universalResolverReverseSnippet, functionName: 'reverse', data, }) - if (!result[0]) return null - const match = result[1].toLowerCase() === address.toLowerCase() + if (!unnormalisedName) return null + const match = getAddress(forwardResolvedAddress) === getAddress(address) if (!match && !allowMismatch) return null + const normalisedName = normalise(unnormalisedName) return { - name: result[0], - match: result[1].toLowerCase() === address.toLowerCase(), - reverseResolverAddress: result[2], - resolverAddress: result[3], + name: normalisedName, + match, + reverseResolverAddress, + resolverAddress, } } catch (error) { if (strict) throw error diff --git a/packages/ensjs/src/functions/public/getOwner.test.ts b/packages/ensjs/src/functions/public/getOwner.test.ts index 39fea746..cfaf940b 100644 --- a/packages/ensjs/src/functions/public/getOwner.test.ts +++ b/packages/ensjs/src/functions/public/getOwner.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { deploymentAddresses, publicClient, diff --git a/packages/ensjs/src/functions/public/getPrice.test.ts b/packages/ensjs/src/functions/public/getPrice.test.ts index cdc0c9c7..5c9acc0d 100644 --- a/packages/ensjs/src/functions/public/getPrice.test.ts +++ b/packages/ensjs/src/functions/public/getPrice.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getPrice from './getPrice.js' diff --git a/packages/ensjs/src/functions/public/getRecords.test.ts b/packages/ensjs/src/functions/public/getRecords.test.ts index 11424c96..220fcc59 100644 --- a/packages/ensjs/src/functions/public/getRecords.test.ts +++ b/packages/ensjs/src/functions/public/getRecords.test.ts @@ -1,5 +1,6 @@ import { RawContractError, createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' +import { describe, expect, it } from 'vitest' import { addEnsContracts } from '../../index.js' import { deploymentAddresses, @@ -9,7 +10,7 @@ import getRecords from './getRecords.js' const mainnetPublicClient = createPublicClient({ chain: addEnsContracts(mainnet), - transport: http('https://web3.ens.domains/v1/mainnet'), + transport: http('https://mainnet.gateway.tenderly.co/4imxc4hQfRjxrVB2kWKvTo'), }) describe('getRecords()', () => { @@ -132,7 +133,7 @@ describe('getRecords()', () => { { name: 'test.eth', coins: [60] }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted with the following signature: + [ContractFunctionExecutionError: The contract function "resolve" reverted with the following signature: 0x4ced43fb Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. @@ -144,8 +145,8 @@ describe('getRecords()', () => { function: resolve(bytes name, bytes[] data) args: (0x04746573740365746800, ["0x5678"]) - Docs: https://viem.sh/docs/contract/decodeErrorResult.html - Version: viem@1.16.3" + Docs: https://viem.sh/docs/contract/decodeErrorResult + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/functions/public/getRecords.ts b/packages/ensjs/src/functions/public/getRecords.ts index 3582db9f..183da3d2 100644 --- a/packages/ensjs/src/functions/public/getRecords.ts +++ b/packages/ensjs/src/functions/public/getRecords.ts @@ -10,7 +10,10 @@ import { } from 'viem' import type { ClientWithEns } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' -import { universalResolverResolveArraySnippet } from '../../contracts/universalResolver.js' +import { + universalResolverResolveArraySnippet, + universalResolverResolveArrayWithGatewaysSnippet, +} from '../../contracts/universalResolver.js' import type { DecodedAddr, DecodedText, @@ -217,10 +220,10 @@ const encode = ( return { to, - ...(gatewayUrls?.length + ...(gatewayUrls ? { data: encodeFunctionData({ - abi: universalResolverResolveArraySnippet, + abi: universalResolverResolveArrayWithGatewaysSnippet, functionName: 'resolve', args: [...args, gatewayUrls] as const, }), @@ -362,6 +365,7 @@ const decode = async < coins, contentHash, abi, + gatewayUrls, }: GetRecordsParameters, ): Promise> => { const { calls } = passthrough @@ -381,7 +385,9 @@ const decode = async < } else { const isSafe = checkSafeUniversalResolverData(data, { strict: false, - abi: universalResolverResolveArraySnippet, + abi: gatewayUrls + ? universalResolverResolveArrayWithGatewaysSnippet + : universalResolverResolveArraySnippet, args: passthrough.args, functionName: 'resolve', address: passthrough.address, diff --git a/packages/ensjs/src/functions/public/getResolver.test.ts b/packages/ensjs/src/functions/public/getResolver.test.ts index 477ed622..de19dd48 100644 --- a/packages/ensjs/src/functions/public/getResolver.test.ts +++ b/packages/ensjs/src/functions/public/getResolver.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { deploymentAddresses, publicClient, diff --git a/packages/ensjs/src/functions/public/getSupportedInterfaces.test.ts b/packages/ensjs/src/functions/public/getSupportedInterfaces.test.ts index 8fc68971..b26ba119 100644 --- a/packages/ensjs/src/functions/public/getSupportedInterfaces.test.ts +++ b/packages/ensjs/src/functions/public/getSupportedInterfaces.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { deploymentAddresses, publicClient, diff --git a/packages/ensjs/src/functions/public/getTextRecord.test.ts b/packages/ensjs/src/functions/public/getTextRecord.test.ts index 627954ea..789aae83 100644 --- a/packages/ensjs/src/functions/public/getTextRecord.test.ts +++ b/packages/ensjs/src/functions/public/getTextRecord.test.ts @@ -1,4 +1,5 @@ import { RawContractError } from 'viem' +import { describe, expect, it } from 'vitest' import type { ClientWithEns } from '../../contracts/consts.js' import { publicClient } from '../../test/addTestContracts.js' import getTextRecord from './getTextRecord.js' @@ -48,7 +49,7 @@ describe('getTextRecord()', () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -57,7 +58,7 @@ describe('getTextRecord()', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/functions/public/getTextRecord.ts b/packages/ensjs/src/functions/public/getTextRecord.ts index 54d859c5..c2836180 100644 --- a/packages/ensjs/src/functions/public/getTextRecord.ts +++ b/packages/ensjs/src/functions/public/getTextRecord.ts @@ -40,10 +40,14 @@ const decode = async ( client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { strict }: Pick, + { + strict, + gatewayUrls, + }: Pick, ): Promise => { const urData = await universalWrapper.decode(client, data, passthrough, { strict, + gatewayUrls, }) if (!urData) return null return _getText.decode(client, urData.data, { strict }) @@ -72,7 +76,7 @@ type BatchableFunctionObject = GeneratedFunction */ const getTextRecord = generateFunction({ encode, decode }) as (( client: ClientWithEns, - { name, key, strict }: GetTextRecordParameters, + { name, key, strict, gatewayUrls }: GetTextRecordParameters, ) => Promise) & BatchableFunctionObject diff --git a/packages/ensjs/src/functions/public/getWrapperData.test.ts b/packages/ensjs/src/functions/public/getWrapperData.test.ts index 9eeb33b3..981578ba 100644 --- a/packages/ensjs/src/functions/public/getWrapperData.test.ts +++ b/packages/ensjs/src/functions/public/getWrapperData.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getWrapperData from './getWrapperData.js' diff --git a/packages/ensjs/src/functions/public/getWrapperName.test.ts b/packages/ensjs/src/functions/public/getWrapperName.test.ts index bae85bcc..9ed4cc65 100644 --- a/packages/ensjs/src/functions/public/getWrapperName.test.ts +++ b/packages/ensjs/src/functions/public/getWrapperName.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getWrapperName from './getWrapperName.js' diff --git a/packages/ensjs/src/functions/public/universalWrapper.test.ts b/packages/ensjs/src/functions/public/universalWrapper.test.ts index 789555c6..2c3a1ed8 100644 --- a/packages/ensjs/src/functions/public/universalWrapper.test.ts +++ b/packages/ensjs/src/functions/public/universalWrapper.test.ts @@ -1,4 +1,5 @@ import { RawContractError, decodeFunctionData, hexToBytes } from 'viem' +import { expect, it } from 'vitest' import { universalResolverResolveSnippet } from '../../contracts/universalResolver.js' import { deploymentAddresses, @@ -67,12 +68,12 @@ it('throws on result decode error when strict is true', async () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Data size of 2 bytes is too small for given parameters. + [AbiDecodingDataSizeTooSmallError: Data size of 2 bytes is too small for given parameters. Params: (bytes data, address resolver) Data: 0x1234 (2 bytes) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) @@ -115,7 +116,7 @@ it('throws on known contract error when strict is true', async () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3] + Version: viem@2.5.0] `) }) @@ -133,20 +134,20 @@ it('throws on unknown contract error when strict is false', async () => { { strict: false }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted with the following signature: - 0x4ced43fb - - Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. - Make sure you are using the correct ABI and that the error exists on it. - You can look up the decoded signature here: https://openchain.xyz/signatures?query=0x4ced43fb. - - Contract Call: - address: 0x1234567890abcdef - function: resolve(bytes name, bytes data) - args: (0x, 0x) - - Docs: https://viem.sh/docs/contract/decodeErrorResult.html - Version: viem@1.16.3" + [ContractFunctionExecutionError: The contract function "resolve" reverted with the following signature: + 0x4ced43fb + + Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. + Make sure you are using the correct ABI and that the error exists on it. + You can look up the decoded signature here: https://openchain.xyz/signatures?query=0x4ced43fb. + + Contract Call: + address: 0x1234567890abcdef + function: resolve(bytes name, bytes data) + args: (0x, 0x) + + Docs: https://viem.sh/docs/contract/decodeErrorResult + Version: viem@2.5.0] `) }) @@ -164,19 +165,19 @@ it('throws on unknown contract error when strict is true', async () => { { strict: true }, ), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted with the following signature: - 0x4ced43fb - - Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. - Make sure you are using the correct ABI and that the error exists on it. - You can look up the decoded signature here: https://openchain.xyz/signatures?query=0x4ced43fb. - - Contract Call: - address: 0x1234567890abcdef - function: resolve(bytes name, bytes data) - args: (0x, 0x) - - Docs: https://viem.sh/docs/contract/decodeErrorResult.html - Version: viem@1.16.3" + [ContractFunctionExecutionError: The contract function "resolve" reverted with the following signature: + 0x4ced43fb + + Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. + Make sure you are using the correct ABI and that the error exists on it. + You can look up the decoded signature here: https://openchain.xyz/signatures?query=0x4ced43fb. + + Contract Call: + address: 0x1234567890abcdef + function: resolve(bytes name, bytes data) + args: (0x, 0x) + + Docs: https://viem.sh/docs/contract/decodeErrorResult + Version: viem@2.5.0] `) }) diff --git a/packages/ensjs/src/functions/public/universalWrapper.ts b/packages/ensjs/src/functions/public/universalWrapper.ts index c44783c8..96faab6a 100644 --- a/packages/ensjs/src/functions/public/universalWrapper.ts +++ b/packages/ensjs/src/functions/public/universalWrapper.ts @@ -10,7 +10,10 @@ import { } from 'viem' import type { ClientWithEns } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' -import { universalResolverResolveSnippet } from '../../contracts/universalResolver.js' +import { + universalResolverResolveSnippet, + universalResolverResolveWithGatewaysSnippet, +} from '../../contracts/universalResolver.js' import type { GenericPassthrough, TransactionRequestWithPassthrough, @@ -57,7 +60,7 @@ const encode = ( ...(gatewayUrls?.length ? { data: encodeFunctionData({ - abi: universalResolverResolveSnippet, + abi: universalResolverResolveWithGatewaysSnippet, functionName: 'resolve', args: [...args, gatewayUrls] as const, }), @@ -84,11 +87,16 @@ const decode = async ( _client: ClientWithEns, data: Hex | BaseError, passthrough: GenericPassthrough, - { strict }: Pick, + { + strict, + gatewayUrls, + }: Pick, ): Promise => { const isSafe = checkSafeUniversalResolverData(data, { strict, - abi: universalResolverResolveSnippet, + abi: gatewayUrls + ? universalResolverResolveWithGatewaysSnippet + : universalResolverResolveSnippet, args: passthrough.args, functionName: 'resolve', address: passthrough.address, diff --git a/packages/ensjs/src/functions/subgraph/client.test.ts b/packages/ensjs/src/functions/subgraph/client.test.ts index a28ae59f..9c7093db 100644 --- a/packages/ensjs/src/functions/subgraph/client.test.ts +++ b/packages/ensjs/src/functions/subgraph/client.test.ts @@ -1,4 +1,5 @@ import { namehash } from 'viem' +import { describe, expect, it } from 'vitest' import { requestMiddleware, responseMiddleware } from './client.js' const queryWithoutId = ` diff --git a/packages/ensjs/src/functions/subgraph/getDecodedName.test.ts b/packages/ensjs/src/functions/subgraph/getDecodedName.test.ts index 81040128..08159914 100644 --- a/packages/ensjs/src/functions/subgraph/getDecodedName.test.ts +++ b/packages/ensjs/src/functions/subgraph/getDecodedName.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getDecodedName from './getDecodedName.js' diff --git a/packages/ensjs/src/functions/subgraph/getNameHistory.test.ts b/packages/ensjs/src/functions/subgraph/getNameHistory.test.ts index 3fdb3d61..5f30a47f 100644 --- a/packages/ensjs/src/functions/subgraph/getNameHistory.test.ts +++ b/packages/ensjs/src/functions/subgraph/getNameHistory.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getNameHistory from './getNameHistory.js' diff --git a/packages/ensjs/src/functions/subgraph/getNamesForAddress.test.ts b/packages/ensjs/src/functions/subgraph/getNamesForAddress.test.ts index d2d2b32e..198b17de 100644 --- a/packages/ensjs/src/functions/subgraph/getNamesForAddress.test.ts +++ b/packages/ensjs/src/functions/subgraph/getNamesForAddress.test.ts @@ -1,6 +1,7 @@ /* eslint-disable no-await-in-loop */ import type { Address } from 'viem' +import { beforeAll, describe, expect, it } from 'vitest' import { publicClient, walletClient } from '../../test/addTestContracts.js' import { EMPTY_ADDRESS } from '../../utils/consts.js' import getNamesForAddress, { @@ -180,6 +181,26 @@ describe('filter', () => { expect(name.labelName).toContain('test123') } }) + it('filters by search string - name', async () => { + const result = await getNamesForAddress(publicClient, { + address: accounts[2], + pageSize: 1000, + filter: { + owner: true, + registrant: true, + resolvedAddress: true, + wrappedOwner: true, + searchString: 'wrapped-with-subnames', + searchType: 'name', + }, + }) + + if (!result.length) throw new Error('No names found') + const subnames = result.filter( + (x) => x.parentName === 'wrapped-with-subnames.eth', + ) + expect(subnames.length).toBeGreaterThan(0) + }) }) describe.each([ diff --git a/packages/ensjs/src/functions/subgraph/getNamesForAddress.ts b/packages/ensjs/src/functions/subgraph/getNamesForAddress.ts index 23fd4645..3054e2a3 100644 --- a/packages/ensjs/src/functions/subgraph/getNamesForAddress.ts +++ b/packages/ensjs/src/functions/subgraph/getNamesForAddress.ts @@ -43,8 +43,10 @@ type GetNamesForAddressRelation = { } type GetNamesForAddressFilter = GetNamesForAddressRelation & { - /** Search string filter for subname label */ + /** Search string filter for name */ searchString?: string + /** Search string filter type (default: `labelName`) */ + searchType?: 'labelName' | 'name' /** Allows expired names to be included (default: false) */ allowExpired?: boolean /** Allows reverse record nodes to be included (default: false) */ @@ -179,8 +181,9 @@ const getNamesForAddress = async ( allowExpired: false, allowDeleted: false, allowReverseRecord: false, + searchType: 'labelName', ..._filter, - } + } as const const subgraphClient = createSubgraphClient({ client }) @@ -189,6 +192,7 @@ const getNamesForAddress = async ( allowDeleted, allowReverseRecord, searchString, + searchType, ...filters } = filter const ownerWhereFilters: DomainFilter[] = Object.entries(filters).reduce( @@ -281,10 +285,8 @@ const getNamesForAddress = async ( } if (searchString) { - // using labelName_contains instead of name_contains because name_contains - // includes the parent name whereFilters.push({ - labelName_contains: searchString, + [`${searchType}_contains`]: searchString, }) } diff --git a/packages/ensjs/src/functions/subgraph/getSubgraphRecords.test.ts b/packages/ensjs/src/functions/subgraph/getSubgraphRecords.test.ts index 2a288da8..a5fc9d68 100644 --- a/packages/ensjs/src/functions/subgraph/getSubgraphRecords.test.ts +++ b/packages/ensjs/src/functions/subgraph/getSubgraphRecords.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { deploymentAddresses, publicClient, diff --git a/packages/ensjs/src/functions/subgraph/getSubgraphRegistrant.test.ts b/packages/ensjs/src/functions/subgraph/getSubgraphRegistrant.test.ts index 23b274d2..c8d05fcf 100644 --- a/packages/ensjs/src/functions/subgraph/getSubgraphRegistrant.test.ts +++ b/packages/ensjs/src/functions/subgraph/getSubgraphRegistrant.test.ts @@ -1,4 +1,4 @@ -import { getVersion } from '../../errors/error-utils.js' +import { expect, it } from 'vitest' import { deploymentAddresses, publicClient, @@ -23,12 +23,12 @@ it('throws an error for other name', async () => { name: 'test123.com', }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Unsupported name type: other-2ld + [UnsupportedNameTypeError: Unsupported name type: other-2ld - Supported name types: eth-2ld Details: Registrant can only be fetched for eth-2ld names - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) diff --git a/packages/ensjs/src/functions/subgraph/getSubnames.test.ts b/packages/ensjs/src/functions/subgraph/getSubnames.test.ts index 42ec9ea3..5654d694 100644 --- a/packages/ensjs/src/functions/subgraph/getSubnames.test.ts +++ b/packages/ensjs/src/functions/subgraph/getSubnames.test.ts @@ -1,5 +1,6 @@ /* eslint-disable no-await-in-loop */ +import { describe, expect, it } from 'vitest' import { publicClient } from '../../test/addTestContracts.js' import getSubnames from './getSubnames.js' import type { Name } from './utils.js' diff --git a/packages/ensjs/src/functions/wallet/clearRecords.test.ts b/packages/ensjs/src/functions/wallet/clearRecords.test.ts index b76aaaaf..11c0c28a 100644 --- a/packages/ensjs/src/functions/wallet/clearRecords.test.ts +++ b/packages/ensjs/src/functions/wallet/clearRecords.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/clearRecords.ts b/packages/ensjs/src/functions/wallet/clearRecords.ts index 8802932a..14ba6e06 100644 --- a/packages/ensjs/src/functions/wallet/clearRecords.ts +++ b/packages/ensjs/src/functions/wallet/clearRecords.ts @@ -5,7 +5,8 @@ import type { SendTransactionParameters, Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import type { Prettify, SimpleTransactionRequest, @@ -38,7 +39,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, resolverAddress }: ClearRecordsDataParameters, ): ClearRecordsDataReturnType => { return { @@ -49,7 +50,7 @@ export const makeFunctionData = < /** * Clears the records for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link ClearRecordsParameters} * @returns Transaction hash. {@link ClearRecordsReturnType} * @@ -74,7 +75,7 @@ async function clearRecords< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, resolverAddress, @@ -89,7 +90,7 @@ async function clearRecords< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } clearRecords.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/commitName.test.ts b/packages/ensjs/src/functions/wallet/commitName.test.ts index c05f4f90..565b104c 100644 --- a/packages/ensjs/src/functions/wallet/commitName.test.ts +++ b/packages/ensjs/src/functions/wallet/commitName.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { ethRegistrarControllerCommitmentsSnippet } from '../../contracts/ethRegistrarController.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { diff --git a/packages/ensjs/src/functions/wallet/commitName.ts b/packages/ensjs/src/functions/wallet/commitName.ts index 22f04bbe..653323f8 100644 --- a/packages/ensjs/src/functions/wallet/commitName.ts +++ b/packages/ensjs/src/functions/wallet/commitName.ts @@ -5,7 +5,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { ethRegistrarControllerCommitSnippet } from '../../contracts/ethRegistrarController.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { UnsupportedNameTypeError } from '../../errors/general.js' @@ -40,7 +41,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, args: CommitNameDataParameters, ): CommitNameDataReturnType => { const labels = args.name.split('.') @@ -67,7 +68,7 @@ export const makeFunctionData = < /** * Commits a name to be registered - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link CommitNameParameters} * @returns Transaction hash. {@link CommitNameReturnType} * @@ -96,7 +97,7 @@ async function commitName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, owner, @@ -123,7 +124,7 @@ async function commitName< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } commitName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/createSubname.test.ts b/packages/ensjs/src/functions/wallet/createSubname.test.ts index f1c4ef76..a219f22c 100644 --- a/packages/ensjs/src/functions/wallet/createSubname.test.ts +++ b/packages/ensjs/src/functions/wallet/createSubname.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperOwnerOfSnippet } from '../../contracts/nameWrapper.js' import { registryOwnerSnippet } from '../../contracts/registry.js' diff --git a/packages/ensjs/src/functions/wallet/createSubname.ts b/packages/ensjs/src/functions/wallet/createSubname.ts index 2bd0b63b..04dafa12 100644 --- a/packages/ensjs/src/functions/wallet/createSubname.ts +++ b/packages/ensjs/src/functions/wallet/createSubname.ts @@ -6,7 +6,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSetSubnodeRecordSnippet } from '../../contracts/nameWrapper.js' import { registrySetSubnodeRecordSnippet } from '../../contracts/registry.js' @@ -76,7 +77,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, @@ -151,7 +152,7 @@ export const makeFunctionData = < /** * Creates a subname - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link CreateSubnameParameters} * @returns Transaction hash. {@link CreateSubnameReturnType} * @@ -177,7 +178,7 @@ async function createSubname< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, @@ -200,7 +201,7 @@ async function createSubname< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } createSubname.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/deleteSubname.test.ts b/packages/ensjs/src/functions/wallet/deleteSubname.test.ts index 91937bb7..c4402f99 100644 --- a/packages/ensjs/src/functions/wallet/deleteSubname.test.ts +++ b/packages/ensjs/src/functions/wallet/deleteSubname.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperOwnerOfSnippet } from '../../contracts/nameWrapper.js' import { diff --git a/packages/ensjs/src/functions/wallet/deleteSubname.ts b/packages/ensjs/src/functions/wallet/deleteSubname.ts index 9e5eabc8..b063337a 100644 --- a/packages/ensjs/src/functions/wallet/deleteSubname.ts +++ b/packages/ensjs/src/functions/wallet/deleteSubname.ts @@ -5,7 +5,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSetRecordSnippet, @@ -55,7 +56,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, asOwner }: DeleteSubnameDataParameters, ): DeleteSubnameDataReturnType => { const nameType = getNameType(name) @@ -141,7 +142,7 @@ export const makeFunctionData = < /** * Deletes a subname - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link DeleteSubnameParameters} * @returns Transaction hash. {@link DeleteSubnameReturnType} * @@ -166,7 +167,7 @@ async function deleteSubname< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, @@ -183,7 +184,7 @@ async function deleteSubname< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } deleteSubname.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/registerName.test.ts b/packages/ensjs/src/functions/wallet/registerName.test.ts index 9cc0f883..3a9278f0 100644 --- a/packages/ensjs/src/functions/wallet/registerName.test.ts +++ b/packages/ensjs/src/functions/wallet/registerName.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperOwnerOfSnippet } from '../../contracts/nameWrapper.js' import { diff --git a/packages/ensjs/src/functions/wallet/registerName.ts b/packages/ensjs/src/functions/wallet/registerName.ts index 1a7bc489..5980e9f5 100644 --- a/packages/ensjs/src/functions/wallet/registerName.ts +++ b/packages/ensjs/src/functions/wallet/registerName.ts @@ -5,7 +5,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { ethRegistrarControllerRegisterSnippet } from '../../contracts/ethRegistrarController.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { UnsupportedNameTypeError } from '../../errors/general.js' @@ -45,7 +46,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { value, ...args }: RegisterNameDataParameters, ): RegisterNameDataReturnType => { const nameType = getNameType(args.name) @@ -75,7 +76,7 @@ export const makeFunctionData = < /** * Registers a name on ENS - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link RegisterNameParameters} * @returns Transaction hash. {@link RegisterNameReturnType} * @@ -118,7 +119,7 @@ async function registerName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, owner, @@ -147,7 +148,7 @@ async function registerName< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } registerName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/renewNames.test.ts b/packages/ensjs/src/functions/wallet/renewNames.test.ts index 3d037ca7..d05b7c65 100644 --- a/packages/ensjs/src/functions/wallet/renewNames.test.ts +++ b/packages/ensjs/src/functions/wallet/renewNames.test.ts @@ -1,4 +1,5 @@ import { labelhash, type Address, type Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { baseRegistrarNameExpiresSnippet } from '../../contracts/baseRegistrar.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { diff --git a/packages/ensjs/src/functions/wallet/renewNames.ts b/packages/ensjs/src/functions/wallet/renewNames.ts index d4a22545..2316d233 100644 --- a/packages/ensjs/src/functions/wallet/renewNames.ts +++ b/packages/ensjs/src/functions/wallet/renewNames.ts @@ -5,8 +5,9 @@ import { type SendTransactionParameters, type Transport, } from 'viem' +import { sendTransaction } from 'viem/actions' import { bulkRenewalRenewAllSnippet } from '../../contracts/bulkRenewal.js' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { ethRegistrarControllerRenewSnippet } from '../../contracts/ethRegistrarController.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { UnsupportedNameTypeError } from '../../errors/general.js' @@ -45,7 +46,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { nameOrNames, duration, value }: RenewNamesDataParameters, ): RenewNamesDataReturnType => { const names = Array.isArray(nameOrNames) ? nameOrNames : [nameOrNames] @@ -92,7 +93,7 @@ export const makeFunctionData = < /** * Renews a name or names for a specified duration. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link RenewNamesParameters} * @returns Transaction hash. {@link RenewNamesReturnType} * @@ -131,7 +132,7 @@ async function renewNames< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { nameOrNames, duration, @@ -144,7 +145,7 @@ async function renewNames< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } renewNames.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setAbiRecord.test.ts b/packages/ensjs/src/functions/wallet/setAbiRecord.test.ts index 34701364..d4a1c92d 100644 --- a/packages/ensjs/src/functions/wallet/setAbiRecord.test.ts +++ b/packages/ensjs/src/functions/wallet/setAbiRecord.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/setAbiRecord.ts b/packages/ensjs/src/functions/wallet/setAbiRecord.ts index 2f4bbd1e..de27fd77 100644 --- a/packages/ensjs/src/functions/wallet/setAbiRecord.ts +++ b/packages/ensjs/src/functions/wallet/setAbiRecord.ts @@ -5,7 +5,8 @@ import type { SendTransactionParameters, Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import type { Prettify, SimpleTransactionRequest, @@ -44,7 +45,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, encodedAbi, resolverAddress }: SetAbiRecordDataParameters, ): SetAbiRecordDataReturnType => { return { @@ -58,7 +59,7 @@ export const makeFunctionData = < /** * Sets the ABI for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetAbiRecordParameters} * @returns Transaction hash. {@link SetAbiRecordReturnType} * @@ -88,7 +89,7 @@ async function setAbiRecord< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, encodedAbi, @@ -105,7 +106,7 @@ async function setAbiRecord< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setAbiRecord.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setAddressRecord.test.ts b/packages/ensjs/src/functions/wallet/setAddressRecord.test.ts index 61807874..3b6fe39e 100644 --- a/packages/ensjs/src/functions/wallet/setAddressRecord.test.ts +++ b/packages/ensjs/src/functions/wallet/setAddressRecord.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/setAddressRecord.ts b/packages/ensjs/src/functions/wallet/setAddressRecord.ts index 7cab2cdc..740d1b24 100644 --- a/packages/ensjs/src/functions/wallet/setAddressRecord.ts +++ b/packages/ensjs/src/functions/wallet/setAddressRecord.ts @@ -5,7 +5,8 @@ import type { SendTransactionParameters, Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import type { Prettify, SimpleTransactionRequest, @@ -42,7 +43,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, coin, value, resolverAddress }: SetAddressRecordDataParameters, ): SetAddressRecordDataReturnType => { return { @@ -53,7 +54,7 @@ export const makeFunctionData = < /** * Sets an address record for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetAddressRecordParameters} * @returns Transaction hash. {@link SetAddressRecordReturnType} * @@ -80,7 +81,7 @@ async function setAddressRecord< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, coin, @@ -99,7 +100,7 @@ async function setAddressRecord< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setAddressRecord.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setChildFuses.test.ts b/packages/ensjs/src/functions/wallet/setChildFuses.test.ts index 0cb1cea3..cd120892 100644 --- a/packages/ensjs/src/functions/wallet/setChildFuses.test.ts +++ b/packages/ensjs/src/functions/wallet/setChildFuses.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperGetDataSnippet } from '../../contracts/nameWrapper.js' import { diff --git a/packages/ensjs/src/functions/wallet/setChildFuses.ts b/packages/ensjs/src/functions/wallet/setChildFuses.ts index aa3bed91..ce9e9829 100644 --- a/packages/ensjs/src/functions/wallet/setChildFuses.ts +++ b/packages/ensjs/src/functions/wallet/setChildFuses.ts @@ -6,7 +6,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSetChildFusesSnippet } from '../../contracts/nameWrapper.js' import type { @@ -43,7 +44,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, fuses, expiry }: SetChildFusesDataParameters, ): SetChildFusesDataReturnType => { const encodedFuses = encodeFuses({ input: fuses }) @@ -62,7 +63,7 @@ export const makeFunctionData = < /** * Sets the fuses for a name as the parent. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetChildFusesParameters} * @returns Transaction hash. {@link SetChildFusesReturnType} * @@ -91,7 +92,7 @@ async function setChildFuses< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, fuses, @@ -104,7 +105,7 @@ async function setChildFuses< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setChildFuses.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setContentHashRecord.test.ts b/packages/ensjs/src/functions/wallet/setContentHashRecord.test.ts index d5cb3ebc..20bf33a4 100644 --- a/packages/ensjs/src/functions/wallet/setContentHashRecord.test.ts +++ b/packages/ensjs/src/functions/wallet/setContentHashRecord.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/setContentHashRecord.ts b/packages/ensjs/src/functions/wallet/setContentHashRecord.ts index ef9d300a..ea248a50 100644 --- a/packages/ensjs/src/functions/wallet/setContentHashRecord.ts +++ b/packages/ensjs/src/functions/wallet/setContentHashRecord.ts @@ -5,7 +5,8 @@ import type { SendTransactionParameters, Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import type { Prettify, SimpleTransactionRequest, @@ -40,7 +41,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, contentHash, resolverAddress }: SetContentHashRecordDataParameters, ): SetContentHashRecordDataReturnType => { return { @@ -51,7 +52,7 @@ export const makeFunctionData = < /** * Sets the content hash record for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetContentHashRecordParameters} * @returns Transaction hash. {@link SetContentHashRecordReturnType} * @@ -77,7 +78,7 @@ async function setContentHashRecord< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contentHash, @@ -94,7 +95,7 @@ async function setContentHashRecord< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setContentHashRecord.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setFuses.test.ts b/packages/ensjs/src/functions/wallet/setFuses.test.ts index 01e35278..d3fba106 100644 --- a/packages/ensjs/src/functions/wallet/setFuses.test.ts +++ b/packages/ensjs/src/functions/wallet/setFuses.test.ts @@ -1,7 +1,7 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperGetDataSnippet } from '../../contracts/nameWrapper.js' -import { getVersion } from '../../errors/error-utils.js' import { publicClient, testClient, @@ -189,11 +189,11 @@ describe('Array', () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "32 is not a valid unnamed fuse + [FusesInvalidUnnamedFuseError: 32 is not a valid unnamed fuse - If you are trying to set a named fuse, use the named property - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('should throw an error when trying to burn an unnamed fuse in a named fuse array', async () => { @@ -205,9 +205,9 @@ describe('Array', () => { }, }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "COOL_SWAG_FUSE is not a valid named fuse + [FusesInvalidNamedFuseError: COOL_SWAG_FUSE is not a valid named fuse - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -244,14 +244,14 @@ describe('Number', () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: 4294967297 - Allowed range: 0-4294967296 Details: Fuse number must be limited to uint32, the supplied value was too high - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('should throw an error if the number is too low', async () => { @@ -265,14 +265,14 @@ describe('Number', () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: -1 - Allowed range: 0-4294967296 Details: Fuse number must be limited to uint32, the supplied value was too low - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) diff --git a/packages/ensjs/src/functions/wallet/setFuses.ts b/packages/ensjs/src/functions/wallet/setFuses.ts index 7b9105bf..37f97c11 100644 --- a/packages/ensjs/src/functions/wallet/setFuses.ts +++ b/packages/ensjs/src/functions/wallet/setFuses.ts @@ -5,7 +5,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSetFusesSnippet } from '../../contracts/nameWrapper.js' import type { @@ -43,7 +44,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, fuses }: SetFusesDataParameters, ): SetFusesDataReturnType => { const encodedFuses = encodeFuses({ restriction: 'child', input: fuses }) @@ -59,7 +60,7 @@ export const makeFunctionData = < /** * Sets the fuses for a name. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetFusesParameters} * @returns Transaction hash. {@link SetFusesReturnType} * @@ -86,7 +87,7 @@ async function setFuses< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, fuses, @@ -98,7 +99,7 @@ async function setFuses< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setFuses.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setPrimaryName.test.ts b/packages/ensjs/src/functions/wallet/setPrimaryName.test.ts index f042f6ae..71d29f84 100644 --- a/packages/ensjs/src/functions/wallet/setPrimaryName.test.ts +++ b/packages/ensjs/src/functions/wallet/setPrimaryName.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { registrySetApprovalForAllSnippet } from '../../contracts/registry.js' import { diff --git a/packages/ensjs/src/functions/wallet/setPrimaryName.ts b/packages/ensjs/src/functions/wallet/setPrimaryName.ts index f23febba..19b4089b 100644 --- a/packages/ensjs/src/functions/wallet/setPrimaryName.ts +++ b/packages/ensjs/src/functions/wallet/setPrimaryName.ts @@ -6,8 +6,9 @@ import { type SendTransactionParameters, type Transport, } from 'viem' +import { sendTransaction } from 'viem/actions' import { parseAccount } from 'viem/utils' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { reverseRegistrarSetNameForAddrSnippet, @@ -58,7 +59,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, address, @@ -104,7 +105,7 @@ export const makeFunctionData = < /** * Sets a primary name for an address. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetPrimaryNameParameters} * @returns Transaction hash. {@link SetPrimaryNameReturnType} * @@ -128,7 +129,7 @@ async function setPrimaryName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, address, @@ -140,14 +141,14 @@ async function setPrimaryName< { ...wallet, account: parseAccount((txArgs.account || wallet.account)!), - } as WalletWithEns, + } as ClientWithAccount, { name, address, resolverAddress } as SetPrimaryNameDataParameters, ) const writeArgs = { ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setPrimaryName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setRecords.test.ts b/packages/ensjs/src/functions/wallet/setRecords.test.ts index b9d283fa..f7f7f4db 100644 --- a/packages/ensjs/src/functions/wallet/setRecords.test.ts +++ b/packages/ensjs/src/functions/wallet/setRecords.test.ts @@ -1,5 +1,5 @@ import type { Address, Hex } from 'viem' -import { getVersion } from '../../errors/error-utils.js' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, @@ -177,9 +177,9 @@ it('should error if there are no records to set', async () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "No records specified + [NoRecordsSpecifiedError: No records specified - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('should not wrap with multicall if only setting a single record', async () => { diff --git a/packages/ensjs/src/functions/wallet/setRecords.ts b/packages/ensjs/src/functions/wallet/setRecords.ts index 74d65704..2f855a17 100644 --- a/packages/ensjs/src/functions/wallet/setRecords.ts +++ b/packages/ensjs/src/functions/wallet/setRecords.ts @@ -6,7 +6,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { publicResolverMulticallSnippet } from '../../contracts/publicResolver.js' import { NoRecordsSpecifiedError } from '../../errors/public.js' import type { @@ -44,7 +45,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, resolverAddress, ...records }: SetRecordsDataParameters, ): SetRecordsDataReturnType => { const callArray = generateRecordCallArray({ @@ -69,7 +70,7 @@ export const makeFunctionData = < /** * Sets multiple records for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetRecordsParameters} * @returns Transaction hash. {@link SetRecordsReturnType} * @@ -101,7 +102,7 @@ async function setRecords< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, resolverAddress, @@ -126,7 +127,7 @@ async function setRecords< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setRecords.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setResolver.test.ts b/packages/ensjs/src/functions/wallet/setResolver.test.ts index 0cfcac2e..413aad7b 100644 --- a/packages/ensjs/src/functions/wallet/setResolver.test.ts +++ b/packages/ensjs/src/functions/wallet/setResolver.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/setResolver.ts b/packages/ensjs/src/functions/wallet/setResolver.ts index 23489cfa..5a187894 100644 --- a/packages/ensjs/src/functions/wallet/setResolver.ts +++ b/packages/ensjs/src/functions/wallet/setResolver.ts @@ -6,7 +6,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSetResolverSnippet } from '../../contracts/nameWrapper.js' import { registrySetResolverSnippet } from '../../contracts/registry.js' @@ -43,7 +44,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, resolverAddress }: SetResolverDataParameters, ): SetResolverDataReturnType => { if (contract !== 'registry' && contract !== 'nameWrapper') @@ -79,7 +80,7 @@ export const makeFunctionData = < /** * Sets a resolver for a name. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetResolverParameters} * @returns Transaction hash. {@link SetResolverReturnType} * @@ -105,7 +106,7 @@ async function setResolver< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, contract, @@ -118,7 +119,7 @@ async function setResolver< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setResolver.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/setTextRecord.test.ts b/packages/ensjs/src/functions/wallet/setTextRecord.test.ts index 9312cd5e..a5b362ed 100644 --- a/packages/ensjs/src/functions/wallet/setTextRecord.test.ts +++ b/packages/ensjs/src/functions/wallet/setTextRecord.test.ts @@ -1,4 +1,5 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, diff --git a/packages/ensjs/src/functions/wallet/setTextRecord.ts b/packages/ensjs/src/functions/wallet/setTextRecord.ts index 3552bc09..879c23c0 100644 --- a/packages/ensjs/src/functions/wallet/setTextRecord.ts +++ b/packages/ensjs/src/functions/wallet/setTextRecord.ts @@ -5,7 +5,8 @@ import type { SendTransactionParameters, Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import type { Prettify, SimpleTransactionRequest, @@ -42,7 +43,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - _wallet: WalletWithEns, + _wallet: ClientWithAccount, { name, key, value, resolverAddress }: SetTextRecordDataParameters, ): SetTextRecordDataReturnType => { return { @@ -53,7 +54,7 @@ export const makeFunctionData = < /** * Sets a text record for a name on a resolver. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link SetTextRecordParameters} * @returns Transaction hash. {@link SetTextRecordReturnType} * @@ -80,7 +81,7 @@ async function setTextRecord< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, key, @@ -99,7 +100,7 @@ async function setTextRecord< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } setTextRecord.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/transferName.test.ts b/packages/ensjs/src/functions/wallet/transferName.test.ts index 9d54b405..a1bcfc01 100644 --- a/packages/ensjs/src/functions/wallet/transferName.test.ts +++ b/packages/ensjs/src/functions/wallet/transferName.test.ts @@ -1,5 +1,5 @@ import type { Address, Hex } from 'viem' -import { getVersion } from '../../errors/error-utils.js' +import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest' import { publicClient, testClient, @@ -115,11 +115,11 @@ it('errors if unknown contract', async () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Invalid contract type: random + [InvalidContractTypeError: Invalid contract type: random - Supported contract types: registry, registrar, nameWrapper - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('errors when reclaim is specified and contract is not registrar', async () => { @@ -132,13 +132,13 @@ it('errors when reclaim is specified and contract is not registrar', async () => account: accounts[1], } as any), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Additional parameter specified: reclaim + [AdditionalParameterSpecifiedError: Additional parameter specified: reclaim - Allowed parameters: name, newOwnerAddress, contract Details: Can't reclaim a name from any contract other than the registrar - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) @@ -189,13 +189,13 @@ describe('subnames/asParent', () => { account: accounts[1], } as any), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Additional parameter specified: asParent + [AdditionalParameterSpecifiedError: Additional parameter specified: asParent - Allowed parameters: name, newOwnerAddress, contract, reclaim Details: Can't transfer a name as the parent owner on the registrar - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) diff --git a/packages/ensjs/src/functions/wallet/transferName.ts b/packages/ensjs/src/functions/wallet/transferName.ts index 44037d07..a82fbc0d 100644 --- a/packages/ensjs/src/functions/wallet/transferName.ts +++ b/packages/ensjs/src/functions/wallet/transferName.ts @@ -7,12 +7,13 @@ import { type SendTransactionParameters, type Transport, } from 'viem' +import { sendTransaction } from 'viem/actions' import { parseAccount } from 'viem/utils' import { baseRegistrarReclaimSnippet, baseRegistrarSafeTransferFromSnippet, } from '../../contracts/baseRegistrar.js' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperSafeTransferFromSnippet, @@ -83,7 +84,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -202,7 +203,7 @@ export const makeFunctionData = < /** * Transfers a name to a new owner. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link TransferNameParameters} * @returns Transaction hash. {@link TransferNameReturnType} * @@ -228,7 +229,7 @@ async function transferName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -242,7 +243,7 @@ async function transferName< { ...wallet, account: parseAccount((txArgs.account || wallet.account)!), - } as WalletWithEns, + } as ClientWithAccount, { name, newOwnerAddress, @@ -255,7 +256,7 @@ async function transferName< ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } transferName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/unwrapName.test.ts b/packages/ensjs/src/functions/wallet/unwrapName.test.ts index 251863bc..cb4581e5 100644 --- a/packages/ensjs/src/functions/wallet/unwrapName.test.ts +++ b/packages/ensjs/src/functions/wallet/unwrapName.test.ts @@ -1,5 +1,5 @@ import type { Address, Hex } from 'viem' -import { getVersion } from '../../errors/error-utils.js' +import { afterEach, beforeAll, beforeEach, expect, it } from 'vitest' import { publicClient, testClient, @@ -66,11 +66,11 @@ it('should error if newRegistrantAddress is not specified for .eth', async () => account: accounts[1], } as any), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Required parameter not specified: newRegistrantAddress + [RequiredParameterNotSpecifiedError: Required parameter not specified: newRegistrantAddress Details: Must provide newRegistrantAddress for eth-2ld names - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('should error if newRegistrantAddress is specified for non .eth', async () => { @@ -82,12 +82,12 @@ it('should error if newRegistrantAddress is specified for non .eth', async () => account: accounts[2], } as any), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Additional parameter specified: newRegistrantAddress + [AdditionalParameterSpecifiedError: Additional parameter specified: newRegistrantAddress - Allowed parameters: name, newOwnerAddress Details: newRegistrantAddress can only be specified for eth-2ld names - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) diff --git a/packages/ensjs/src/functions/wallet/unwrapName.ts b/packages/ensjs/src/functions/wallet/unwrapName.ts index 4ba920e0..acf36b74 100644 --- a/packages/ensjs/src/functions/wallet/unwrapName.ts +++ b/packages/ensjs/src/functions/wallet/unwrapName.ts @@ -6,7 +6,8 @@ import { type SendTransactionParameters, type Transport, } from 'viem' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import { sendTransaction } from 'viem/actions' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperUnwrapEth2ldSnippet, @@ -70,7 +71,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account | undefined, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -120,7 +121,7 @@ export const makeFunctionData = < /** * Unwraps a name. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link UnwrapNameParameters} * @returns Transaction hash. {@link UnwrapNameReturnType} * @@ -147,7 +148,7 @@ async function unwrapName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -164,7 +165,7 @@ async function unwrapName< ...data, ...(txArgs as WriteTransactionParameters), } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } unwrapName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/functions/wallet/wrapName.test.ts b/packages/ensjs/src/functions/wallet/wrapName.test.ts index f165a33a..e17bdde7 100644 --- a/packages/ensjs/src/functions/wallet/wrapName.test.ts +++ b/packages/ensjs/src/functions/wallet/wrapName.test.ts @@ -1,7 +1,7 @@ import type { Address, Hex } from 'viem' +import { afterEach, beforeAll, beforeEach, describe, expect, it } from 'vitest' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { registrySetApprovalForAllSnippet } from '../../contracts/registry.js' -import { getVersion } from '../../errors/error-utils.js' import { publicClient, testClient, @@ -107,13 +107,13 @@ describe('eth 2ld', () => { account: accounts[1], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Supplied label was too long + [WrappedLabelTooLargeError: Supplied label was too long - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - Max byte length: 255 - Actual byte length: 256 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -165,13 +165,13 @@ describe('other', () => { account: accounts[2], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Additional parameter specified: fuses + [AdditionalParameterSpecifiedError: Additional parameter specified: fuses - Allowed parameters: name, wrappedOwner, resolverAddress Details: Fuses cannot be initially set when wrapping non eth-2ld names - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('should error for a label longer than 255 bytes', async () => { @@ -183,13 +183,13 @@ describe('other', () => { account: accounts[2], }), ).rejects.toThrowErrorMatchingInlineSnapshot(` - "Supplied label was too long + [WrappedLabelTooLargeError: Supplied label was too long - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - Max byte length: 255 - Actual byte length: 256 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) diff --git a/packages/ensjs/src/functions/wallet/wrapName.ts b/packages/ensjs/src/functions/wallet/wrapName.ts index dc93c164..9e74c326 100644 --- a/packages/ensjs/src/functions/wallet/wrapName.ts +++ b/packages/ensjs/src/functions/wallet/wrapName.ts @@ -9,9 +9,10 @@ import { type SendTransactionParameters, type Transport, } from 'viem' +import { sendTransaction } from 'viem/actions' import { parseAccount } from 'viem/utils' import { baseRegistrarSafeTransferFromWithDataSnippet } from '../../contracts/baseRegistrar.js' -import type { ChainWithEns, WalletWithEns } from '../../contracts/consts.js' +import type { ChainWithEns, ClientWithAccount } from '../../contracts/consts.js' import { getChainContractAddress } from '../../contracts/getChainContractAddress.js' import { nameWrapperWrapSnippet } from '../../contracts/nameWrapper.js' import { AdditionalParameterSpecifiedError } from '../../errors/general.js' @@ -65,7 +66,7 @@ export const makeFunctionData = < TChain extends ChainWithEns, TAccount extends Account, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -134,7 +135,7 @@ export const makeFunctionData = < /** * Wraps a name. - * @param wallet - {@link WalletWithEns} + * @param wallet - {@link ClientWithAccount} * @param parameters - {@link WrapNameParameters} * @returns Transaction hash. {@link WrapNameReturnType} * @@ -160,7 +161,7 @@ async function wrapName< TAccount extends Account | undefined, TChainOverride extends ChainWithEns | undefined = ChainWithEns, >( - wallet: WalletWithEns, + wallet: ClientWithAccount, { name, newOwnerAddress, @@ -173,14 +174,14 @@ async function wrapName< { ...wallet, account: parseAccount((txArgs.account || wallet.account)!), - } as WalletWithEns, + } as ClientWithAccount, { name, newOwnerAddress, fuses, resolverAddress }, ) const writeArgs = { ...data, ...txArgs, } as SendTransactionParameters - return wallet.sendTransaction(writeArgs) + return sendTransaction(wallet, writeArgs) } wrapName.makeFunctionData = makeFunctionData diff --git a/packages/ensjs/src/index.ts b/packages/ensjs/src/index.ts index 604a40a2..0dbfeb5d 100644 --- a/packages/ensjs/src/index.ts +++ b/packages/ensjs/src/index.ts @@ -28,9 +28,10 @@ export { export { addEnsContracts } from './contracts/addEnsContracts.js' export { BaseError } from './errors/base.js' -export { NoChainError, UnsupportedNetworkError } from './errors/contracts.js' +export { NoChainError, UnsupportedChainError } from './errors/contracts.js' export { DnsDnssecVerificationFailedError, + DnsDnssecWildcardExpansionError, DnsInvalidAddressChecksumError, DnsInvalidTxtRecordError, DnsNewerRecordTypeAvailableError, @@ -62,9 +63,11 @@ export { FusesOutOfRangeError, FusesRestrictionNotAllowedError, FusesValueRequiredError, + InvalidContentHashError, InvalidEncodedLabelError, InvalidLabelhashError, NameWithEmptyLabelsError, RootNameIncludesOtherLabelsError, + UnknownContentTypeError, WrappedLabelTooLargeError, } from './errors/utils.js' diff --git a/packages/ensjs/src/test/dns.ts b/packages/ensjs/src/test/dns.ts index 416a802c..586b03b1 100644 --- a/packages/ensjs/src/test/dns.ts +++ b/packages/ensjs/src/test/dns.ts @@ -1,6 +1,7 @@ import type { RequestListener } from 'http' +import type { MockedFunction } from 'vitest' -type Handler = jest.MockedFunction +type Handler = MockedFunction export const createHandlerResponse = (handler: Handler, response: object) => { handler.mockImplementation((_req, res) => { diff --git a/packages/ensjs/src/test/setup.ts b/packages/ensjs/src/test/setup.ts new file mode 100644 index 00000000..3342ef1c --- /dev/null +++ b/packages/ensjs/src/test/setup.ts @@ -0,0 +1,7 @@ +import { beforeAll, vi } from 'vitest' + +beforeAll(() => { + vi.mock('../errors/error-utils.ts', () => ({ + getVersion: vi.fn().mockReturnValue('@ensdomains/ensjs@1.0.0-mock.0'), + })) +}) diff --git a/packages/ensjs/src/utils/checkSafeUniversalResolverData.test.ts b/packages/ensjs/src/utils/checkSafeUniversalResolverData.test.ts index 99ceac3b..8191d8fc 100644 --- a/packages/ensjs/src/utils/checkSafeUniversalResolverData.test.ts +++ b/packages/ensjs/src/utils/checkSafeUniversalResolverData.test.ts @@ -1,4 +1,5 @@ import { RawContractError } from 'viem' +import { describe, expect, it } from 'vitest' import { universalResolverResolveSnippet } from '../contracts/universalResolver.js' import { checkSafeUniversalResolverData } from './checkSafeUniversalResolverData.js' @@ -59,7 +60,7 @@ describe('checkSafeUniversalResolverData', () => { }, ) }).toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -68,7 +69,7 @@ describe('checkSafeUniversalResolverData', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) @@ -87,7 +88,7 @@ describe('checkSafeUniversalResolverData', () => { }, ) }).toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted. + [ContractFunctionExecutionError: The contract function "resolve" reverted. Error: ResolverNotFound() @@ -96,7 +97,7 @@ describe('checkSafeUniversalResolverData', () => { function: resolve(bytes name, bytes data) args: (ab, cd) - Version: viem@1.16.3" + Version: viem@2.5.0] `) }) @@ -115,7 +116,7 @@ describe('checkSafeUniversalResolverData', () => { }, ) }).toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted with the following signature: + [ContractFunctionExecutionError: The contract function "resolve" reverted with the following signature: 0x4ced43fb Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. @@ -127,8 +128,8 @@ describe('checkSafeUniversalResolverData', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Docs: https://viem.sh/docs/contract/decodeErrorResult.html - Version: viem@1.16.3" + Docs: https://viem.sh/docs/contract/decodeErrorResult + Version: viem@2.5.0] `) }) @@ -147,7 +148,7 @@ describe('checkSafeUniversalResolverData', () => { }, ) }).toThrowErrorMatchingInlineSnapshot(` - "The contract function "resolve" reverted with the following signature: + [ContractFunctionExecutionError: The contract function "resolve" reverted with the following signature: 0x4ced43fb Unable to decode signature "0x4ced43fb" as it was not found on the provided ABI. @@ -159,8 +160,8 @@ describe('checkSafeUniversalResolverData', () => { function: resolve(bytes name, bytes data) args: (0x, 0x) - Docs: https://viem.sh/docs/contract/decodeErrorResult.html - Version: viem@1.16.3" + Docs: https://viem.sh/docs/contract/decodeErrorResult + Version: viem@2.5.0] `) }) }) diff --git a/packages/ensjs/src/utils/contentHash.test.ts b/packages/ensjs/src/utils/contentHash.test.ts index fdca9c6b..cc09711b 100644 --- a/packages/ensjs/src/utils/contentHash.test.ts +++ b/packages/ensjs/src/utils/contentHash.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { decodeContentHash, encodeContentHash, diff --git a/packages/ensjs/src/utils/dns/getDnsTxtRecords.ts b/packages/ensjs/src/utils/dns/getDnsTxtRecords.ts index 368cc2bd..f6e3b5df 100644 --- a/packages/ensjs/src/utils/dns/getDnsTxtRecords.ts +++ b/packages/ensjs/src/utils/dns/getDnsTxtRecords.ts @@ -25,7 +25,7 @@ export const getDnsTxtRecords = async ({ endpoint = 'https://cloudflare-dns.com/dns-query', }: GetDnsTxtRecordsParameters): Promise => { const response: DnsResponse = await fetch( - `${endpoint}?name=${name}.&type=TXT`, + `${endpoint}?name=${name}.&type=TXT&do=1`, { method: 'GET', headers: { diff --git a/packages/ensjs/src/utils/encoders/encodeAbi.test.ts b/packages/ensjs/src/utils/encoders/encodeAbi.test.ts index b4e6a246..af636ca6 100644 --- a/packages/ensjs/src/utils/encoders/encodeAbi.test.ts +++ b/packages/ensjs/src/utils/encoders/encodeAbi.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { contentTypeToEncodeAs, encodeAbi, diff --git a/packages/ensjs/src/utils/encoders/encodeSetAbi.test.ts b/packages/ensjs/src/utils/encoders/encodeSetAbi.test.ts index 046d95f8..b788f074 100644 --- a/packages/ensjs/src/utils/encoders/encodeSetAbi.test.ts +++ b/packages/ensjs/src/utils/encoders/encodeSetAbi.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { encodeAbi } from './encodeAbi.js' import { encodeSetAbi, type EncodeSetAbiParameters } from './encodeSetAbi.js' diff --git a/packages/ensjs/src/utils/encoders/encodeSetAddr.test.ts b/packages/ensjs/src/utils/encoders/encodeSetAddr.test.ts index 79974174..17b123c5 100644 --- a/packages/ensjs/src/utils/encoders/encodeSetAddr.test.ts +++ b/packages/ensjs/src/utils/encoders/encodeSetAddr.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { encodeSetAddr, type EncodeSetAddrParameters } from './encodeSetAddr.js' const namehash = diff --git a/packages/ensjs/src/utils/encoders/encodeSetContentHash.test.ts b/packages/ensjs/src/utils/encoders/encodeSetContentHash.test.ts index b3377d30..6bdf99c0 100644 --- a/packages/ensjs/src/utils/encoders/encodeSetContentHash.test.ts +++ b/packages/ensjs/src/utils/encoders/encodeSetContentHash.test.ts @@ -1,4 +1,4 @@ -import { getVersion } from '../../errors/error-utils.js' +import { describe, expect, it } from 'vitest' import { encodeSetContentHash, type EncodeSetContentHashParameters, @@ -33,9 +33,9 @@ describe('encodeSetContentHash', () => { } expect(() => encodeSetContentHash(params)) .toThrowErrorMatchingInlineSnapshot(` - "Invalid content hash + [InvalidContentHashError: Invalid content hash - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) }) diff --git a/packages/ensjs/src/utils/encoders/encodeSetText.test.ts b/packages/ensjs/src/utils/encoders/encodeSetText.test.ts index 829b9dce..8e6225b2 100644 --- a/packages/ensjs/src/utils/encoders/encodeSetText.test.ts +++ b/packages/ensjs/src/utils/encoders/encodeSetText.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { encodeSetText, type EncodeSetTextParameters } from './encodeSetText.js' describe('encodeSetText', () => { diff --git a/packages/ensjs/src/utils/format.test.ts b/packages/ensjs/src/utils/format.test.ts index 6cf06da9..bcca12c6 100644 --- a/packages/ensjs/src/utils/format.test.ts +++ b/packages/ensjs/src/utils/format.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { truncateFormat } from './format.js' describe('truncateFormat', () => { diff --git a/packages/ensjs/src/utils/fuses.test.ts b/packages/ensjs/src/utils/fuses.test.ts index b4480a8d..b0f3ecab 100644 --- a/packages/ensjs/src/utils/fuses.test.ts +++ b/packages/ensjs/src/utils/fuses.test.ts @@ -1,4 +1,4 @@ -import { getVersion } from '../errors/error-utils.js' +import { describe, expect, it } from 'vitest' import { ChildFuseKeys, ChildFuses, @@ -195,13 +195,13 @@ describe('encodeFuses', () => { input: { parent: { named: ['CAN_EXTEND_EXPIRY'] } } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Restriction not allowed + [FusesRestrictionNotAllowed: Restriction not allowed - Fuse value: [object Object] Details: Fuse restriction cannot be used when fuse category is specified - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow named/unnamed and number input', () => { @@ -211,13 +211,13 @@ describe('encodeFuses', () => { input: { named: ['CANNOT_UNWRAP'], number: 1 } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid fuse value + [FusesInvalidFuseObjectError: Invalid fuse value - Fuse value: [object Object] Details: Cannot specify both a fuse number and named/unnamed fuses. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting invalid named fuse', () => { @@ -227,9 +227,9 @@ describe('encodeFuses', () => { input: { named: ['CANNOT_WRAP'] as any }, }), ).toThrowErrorMatchingInlineSnapshot(` - "CANNOT_WRAP is not a valid named fuse + [FusesInvalidNamedFuseError: CANNOT_WRAP is not a valid named fuse - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting invalid unnamed fuse', () => { @@ -239,11 +239,11 @@ describe('encodeFuses', () => { input: { unnamed: [129n as any] }, }), ).toThrowErrorMatchingInlineSnapshot(` - "129 is not a valid unnamed fuse + [FusesInvalidUnnamedFuseError: 129 is not a valid unnamed fuse - If you are trying to set a named fuse, use the named property - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) describe('number input', () => { @@ -251,14 +251,14 @@ describe('encodeFuses', () => { expect(() => encodeFuses({ restriction: 'child', input: { number: 65536n } }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: 65536 - Allowed range: 0-65535 Details: Cannot specify a fuse value to set that is outside of the child's control. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting fuse larger than uint32 range', () => { @@ -268,28 +268,28 @@ describe('encodeFuses', () => { input: { number: 2n ** 32n + 1n }, }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - - Fuse value: 4294967297 - - Allowed range: 0-4294967296 + - Fuse value: 4294967297 + - Allowed range: 0-4294967296 - Details: Fuse number must be limited to uint32, the supplied value was too high + Details: Fuse number must be limited to uint32, the supplied value was too high - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting fuse smaller than uint32 range', () => { expect(() => encodeFuses({ restriction: 'child', input: { number: -1n } }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: -1 - Allowed range: 0-4294967296 Details: Fuse number must be limited to uint32, the supplied value was too low - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -337,14 +337,14 @@ describe('encodeFuses', () => { input: { child: { named: ['CANNOT_UNWRAP'] } } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Restriction not allowed + [FusesRestrictionNotAllowed: Restriction not allowed - - Fuse value: [object Object] + - Fuse value: [object Object] - Details: Fuse restriction cannot be used when fuse category is specified + Details: Fuse restriction cannot be used when fuse category is specified - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) it('does not allow named/unnamed and number input', () => { expect(() => @@ -353,13 +353,13 @@ describe('encodeFuses', () => { input: { named: ['PARENT_CANNOT_CONTROL'], number: 0x10000n } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid fuse value + [FusesInvalidFuseObjectError: Invalid fuse value - Fuse value: [object Object] Details: Cannot specify both a fuse number and named/unnamed fuses. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting invalid named fuse', () => { @@ -369,9 +369,9 @@ describe('encodeFuses', () => { input: { named: ['PARENT_CAN_CONTROL'] as any }, }), ).toThrowErrorMatchingInlineSnapshot(` - "PARENT_CAN_CONTROL is not a valid named fuse + [FusesInvalidNamedFuseError: PARENT_CAN_CONTROL is not a valid named fuse - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting invalid unnamed fuse', () => { @@ -381,11 +381,11 @@ describe('encodeFuses', () => { input: { unnamed: [1n as any] }, }), ).toThrowErrorMatchingInlineSnapshot(` - "1 is not a valid unnamed fuse + [FusesInvalidUnnamedFuseError: 1 is not a valid unnamed fuse - If you are trying to set a named fuse, use the named property - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) describe('number input', () => { @@ -393,14 +393,14 @@ describe('encodeFuses', () => { expect(() => encodeFuses({ restriction: 'parent', input: { number: 65535n } }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: 65535 - Allowed range: 65536-4294967296 Details: Cannot specify a fuse value to set that is outside of the parent's control. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting larger than uint32 range', () => { @@ -410,14 +410,14 @@ describe('encodeFuses', () => { input: { number: 2n ** 32n + 1n }, }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: 4294967297 - Allowed range: 0-4294967296 Details: Fuse number must be limited to uint32, the supplied value was too high - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow setting smaller than uint32 range', () => { @@ -427,15 +427,15 @@ describe('encodeFuses', () => { input: { number: -1n }, }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - - Fuse value: -1 - - Allowed range: 0-4294967296 + - Fuse value: -1 + - Allowed range: 0-4294967296 - Details: Fuse number must be limited to uint32, the supplied value was too low + Details: Fuse number must be limited to uint32, the supplied value was too low - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) it('does not allow setting non user-settable fuse', () => { expect(() => @@ -444,14 +444,14 @@ describe('encodeFuses', () => { input: { number: 0xfffdffffn }, }), ).toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - Fuse value: 4294836223 - Allowed range: 65536-4294967296 Details: Cannot specify a fuse value to set that is outside of the parent's control. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -509,13 +509,13 @@ describe('encodeFuses', () => { } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid fuse value + [FusesInvalidFuseObjectError: Invalid fuse value - Fuse value: [object Object] Details: Cannot specify both a fuse number and named/unnamed fuses. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('does not allow named/unnamed and number input for child', () => { @@ -527,54 +527,54 @@ describe('encodeFuses', () => { } as any, }), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid fuse value + [FusesInvalidFuseObjectError: Invalid fuse value - Fuse value: [object Object] Details: Cannot specify both a fuse number and named/unnamed fuses. - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) describe('number input', () => { it('does not allow setting larger than uint32 range', () => { expect(() => encodeFuses({ input: { number: 2n ** 32n + 1n } })) .toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - - Fuse value: 4294967297 - - Allowed range: 0-4294967296 + - Fuse value: 4294967297 + - Allowed range: 0-4294967296 - Details: Fuse number must be limited to uint32, the supplied value was too high + Details: Fuse number must be limited to uint32, the supplied value was too high - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) it('does not allow setting smaller than uint32 range', () => { expect(() => encodeFuses({ input: { number: -1n } })) .toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - - Fuse value: -1 - - Allowed range: 0-4294967296 + - Fuse value: -1 + - Allowed range: 0-4294967296 - Details: Fuse number must be limited to uint32, the supplied value was too low + Details: Fuse number must be limited to uint32, the supplied value was too low - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) it('does not allow setting non user-settable fuse', () => { expect(() => encodeFuses({ input: { number: 0xffffffffn } })) .toThrowErrorMatchingInlineSnapshot(` - "Fuse value out of range + [FusesOutOfRangeError: Fuse value out of range - - Fuse value: 4294967295 - - Allowed range: 0-4294967296 + - Fuse value: 4294967295 + - Allowed range: 0-4294967296 - Details: Fuse number must be limited to user settable fuses, the supplied value was not + Details: Fuse number must be limited to user settable fuses, the supplied value was not - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) }) }) diff --git a/packages/ensjs/src/utils/generateRecordCallArray.test.ts b/packages/ensjs/src/utils/generateRecordCallArray.test.ts index 2ad3285f..ca33fa1c 100644 --- a/packages/ensjs/src/utils/generateRecordCallArray.test.ts +++ b/packages/ensjs/src/utils/generateRecordCallArray.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { generateRecordCallArray } from './generateRecordCallArray.js' import { encodeAbi } from './index.js' import { namehash } from './normalise.js' diff --git a/packages/ensjs/src/utils/generateSupportedContentTypes.test.ts.ts b/packages/ensjs/src/utils/generateSupportedContentTypes.test.ts similarity index 94% rename from packages/ensjs/src/utils/generateSupportedContentTypes.test.ts.ts rename to packages/ensjs/src/utils/generateSupportedContentTypes.test.ts index 2970c0e0..9902a74d 100644 --- a/packages/ensjs/src/utils/generateSupportedContentTypes.test.ts.ts +++ b/packages/ensjs/src/utils/generateSupportedContentTypes.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { generateSupportedContentTypes } from './generateSupportedContentTypes.js' type FunctionParameters = Parameters diff --git a/packages/ensjs/src/utils/labels.test.ts b/packages/ensjs/src/utils/labels.test.ts index 10a1b6e3..7878f2cf 100644 --- a/packages/ensjs/src/utils/labels.test.ts +++ b/packages/ensjs/src/utils/labels.test.ts @@ -1,5 +1,5 @@ import { labelhash } from 'viem' -import { getVersion } from '../errors/error-utils.js' +import { beforeEach, describe, expect, it, vi } from 'vitest' import { decodeLabelhash, encodeLabelhash, @@ -24,13 +24,13 @@ describe('decodeLabelhash()', () => { '9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658]', ), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid encoded label + [InvalidEncodedLabelError: Invalid encoded label - Supplied label: 9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658] Details: Expected encoded labelhash to start and end with square brackets - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('throws error when label does not end with ]', () => { @@ -39,13 +39,13 @@ describe('decodeLabelhash()', () => { '[9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658', ), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid encoded label + [InvalidEncodedLabelError: Invalid encoded label - Supplied label: [9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658 Details: Expected encoded labelhash to start and end with square brackets - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('throws error when label length is not 66', () => { @@ -54,13 +54,13 @@ describe('decodeLabelhash()', () => { '[9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb65]', ), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid encoded label + [InvalidEncodedLabelError: Invalid encoded label - Supplied label: [9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb65] Details: Expected encoded labelhash to have a length of 66 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -81,13 +81,13 @@ describe('encodeLabelhash()', () => { '9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658', ), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid labelhash + [InvalidLabelhashError: Invalid labelhash - Supplied labelhash: 9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658 Details: Expected labelhash to start with 0x - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) it('throws error when labelhash length is not 66', () => { @@ -96,13 +96,13 @@ describe('encodeLabelhash()', () => { '0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb65', ), ).toThrowErrorMatchingInlineSnapshot(` - "Invalid labelhash + [InvalidLabelhashError: Invalid labelhash - Supplied labelhash: 0x9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb65 Details: Expected labelhash to have a length of 66 - Version: ${getVersion()}" + Version: @ensdomains/ensjs@1.0.0-mock.0] `) }) }) @@ -122,7 +122,7 @@ describe('isEncodedLabelhash()', () => { describe('saveLabel()', () => { it('saves label to localStorage', () => { - jest.spyOn(global.localStorage, 'setItem') + vi.spyOn(global.localStorage, 'setItem') saveLabel('test') expect(global.localStorage.setItem).toHaveBeenCalledWith( 'ensjs:labels', @@ -136,7 +136,7 @@ describe('saveName()', () => { global.localStorage.clear() }) it('saves each label from name to localStorage', () => { - jest.spyOn(global.localStorage, 'setItem') + vi.spyOn(global.localStorage, 'setItem') saveName('test.eth') expect(global.localStorage.setItem).toHaveBeenCalledWith( 'ensjs:labels', @@ -151,7 +151,7 @@ describe('saveName()', () => { ) }) it('does not save encoded label to localStorage', () => { - jest.spyOn(global.localStorage, 'setItem') + vi.spyOn(global.localStorage, 'setItem') saveName( '[9c22ff5f21f0b81b113e63f7db6da94fedef11b2119b4088b89664fb9a3cb658].eth', ) diff --git a/packages/ensjs/src/utils/makeLabelNodeAndParent.test.ts b/packages/ensjs/src/utils/makeLabelNodeAndParent.test.ts index 4ab3bde9..935e312b 100644 --- a/packages/ensjs/src/utils/makeLabelNodeAndParent.test.ts +++ b/packages/ensjs/src/utils/makeLabelNodeAndParent.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { makeLabelNodeAndParent } from './makeLabelNodeAndParent.js' it('makes label node and parent', () => { diff --git a/packages/ensjs/src/utils/makeSafeSecondsDate.test.ts b/packages/ensjs/src/utils/makeSafeSecondsDate.test.ts index 30c38cce..abcadd8c 100644 --- a/packages/ensjs/src/utils/makeSafeSecondsDate.test.ts +++ b/packages/ensjs/src/utils/makeSafeSecondsDate.test.ts @@ -1,3 +1,4 @@ +import { expect, it } from 'vitest' import { MAX_DATE_INT } from './consts.js' import { makeSafeSecondsDate } from './makeSafeSecondsDate.js' diff --git a/packages/ensjs/src/utils/normalise.test.ts b/packages/ensjs/src/utils/normalise.test.ts index ff8d5b96..390cc53d 100644 --- a/packages/ensjs/src/utils/normalise.test.ts +++ b/packages/ensjs/src/utils/normalise.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest' import { namehash } from './normalise.js' describe('namehash()', () => { diff --git a/packages/ensjs/src/utils/ownerFromContract.test.ts b/packages/ensjs/src/utils/ownerFromContract.test.ts index 73527868..4e6b834c 100644 --- a/packages/ensjs/src/utils/ownerFromContract.test.ts +++ b/packages/ensjs/src/utils/ownerFromContract.test.ts @@ -1,4 +1,4 @@ -import { getVersion } from '../errors/error-utils.js' +import { expect, it } from 'vitest' import { deploymentAddresses, publicClient } from '../test/addTestContracts.js' import { namehash } from './normalise.js' import { ownerFromContract } from './ownerFromContract.js' @@ -43,10 +43,10 @@ it('uses registrar contract when contract is registrar', () => { it('throws when contract is not nameWrapper, registry, or registrar', () => { expect(() => ownerFromContract({ ...baseParams, contract: 'invalid' as any })) .toThrowErrorMatchingInlineSnapshot(` - "Invalid contract type: invalid + [InvalidContractTypeError: Invalid contract type: invalid - - Supported contract types: nameWrapper, registry, registrar + - Supported contract types: nameWrapper, registry, registrar - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) diff --git a/packages/ensjs/src/utils/registerHelpers.test.ts b/packages/ensjs/src/utils/registerHelpers.test.ts index 46fa9fb8..a03f647d 100644 --- a/packages/ensjs/src/utils/registerHelpers.test.ts +++ b/packages/ensjs/src/utils/registerHelpers.test.ts @@ -1,5 +1,5 @@ import { labelhash } from 'viem' -import { getVersion } from '../errors/error-utils.js' +import { describe, expect, it } from 'vitest' import { namehash } from './normalise.js' import { makeCommitment, @@ -29,12 +29,12 @@ describe('randomSecret()', () => { it('throws when campaign is too large', () => { expect(() => randomSecret({ campaign: 0xffffffff + 1 })) .toThrowErrorMatchingInlineSnapshot(` - "Campaign reference 4294967296 is too large + [CampaignReferenceTooLargeError: Campaign reference 4294967296 is too large - - Max campaign reference: 4294967295 + - Max campaign reference: 4294967295 - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) }) @@ -82,6 +82,7 @@ describe('makeCommitmentTuple()', () => { duration: 31536000, secret: '0xsecret', reverseRecord: true, + resolverAddress: '0xresolverAddress', }) expect(tuple[5]).toMatchInlineSnapshot(` [ @@ -100,6 +101,7 @@ describe('makeCommitmentTuple()', () => { { coin: 'ETH', value: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' }, ], }, + resolverAddress: '0xresolverAddress', secret: '0xsecret', reverseRecord: true, }) @@ -110,6 +112,38 @@ describe('makeCommitmentTuple()', () => { `) expect(tuple[6]).toBe(true) }) + it('throws when records are supplied without a resolver address', () => { + expect(() => + makeCommitmentTuple({ + name: 'test.eth', + owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', + duration: 31536000, + records: { + coins: [ + { + coin: 'ETH', + value: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', + }, + ], + }, + secret: '0xsecret', + reverseRecord: true, + }), + ).toThrowErrorMatchingInlineSnapshot(` + [ResolverAddressRequiredError: Resolver address is required when data is supplied + + Supplied data: + - name: test.eth + - owner: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 + - duration: 31536000 + - resolverAddress: 0x0000000000000000000000000000000000000000 + - records: [object Object] + - reverseRecord: true + - fuses: undefined + + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) + }) }) describe('makeRegistrationTuple()', () => { diff --git a/packages/ensjs/src/utils/registerHelpers.ts b/packages/ensjs/src/utils/registerHelpers.ts index 9ce09725..50875018 100644 --- a/packages/ensjs/src/utils/registerHelpers.ts +++ b/packages/ensjs/src/utils/registerHelpers.ts @@ -8,7 +8,10 @@ import { type Address, type Hex, } from 'viem' -import { CampaignReferenceTooLargeError } from '../errors/utils.js' +import { + CampaignReferenceTooLargeError, + ResolverAddressRequiredError, +} from '../errors/utils.js' import { EMPTY_ADDRESS } from './consts.js' import { encodeFuses, type EncodeChildFusesInputObject } from './fuses.js' import { @@ -58,6 +61,13 @@ export type RegistrationTuple = [ ownerControlledFuses: number, ] +const cryptoRef = + (typeof crypto !== 'undefined' && crypto) || + (typeof window !== 'undefined' && + typeof window.crypto !== 'undefined' && + window.crypto) || + undefined + export const randomSecret = ({ platformDomain, campaign, @@ -65,7 +75,7 @@ export const randomSecret = ({ platformDomain?: string campaign?: number } = {}) => { - const bytes = crypto.getRandomValues(new Uint8Array(32)) + const bytes = cryptoRef!.getRandomValues(new Uint8Array(32)) if (platformDomain) { const hash = toBytes(namehash(platformDomain)) for (let i = 0; i < 4; i += 1) { @@ -114,6 +124,19 @@ export const makeCommitmentTuple = ({ ? generateRecordCallArray({ namehash: hash, coins, ...records }) : [] + if (data.length > 0 && resolverAddress === EMPTY_ADDRESS) + throw new ResolverAddressRequiredError({ + data: { + name, + owner, + duration, + resolverAddress, + records, + reverseRecord, + fuses, + }, + }) + return [ labelHash, owner, diff --git a/packages/ensjs/src/utils/validation.test.ts b/packages/ensjs/src/utils/validation.test.ts index c376d8b4..d3d05ac3 100644 --- a/packages/ensjs/src/utils/validation.test.ts +++ b/packages/ensjs/src/utils/validation.test.ts @@ -1,11 +1,18 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { getVersion } from '../errors/error-utils.js' +import { + beforeEach, + describe, + expect, + it, + vi, + type MockedFunction, +} from 'vitest' import { parseInput, validateName } from './validation.js' declare namespace localStorage { - const getItem: jest.MockedFn - const setItem: jest.MockedFn - const removeItem: jest.MockedFn + const getItem: MockedFunction + const setItem: MockedFunction + const removeItem: MockedFunction } const labelsMock = { @@ -18,9 +25,9 @@ const labelsMockJSON = JSON.stringify(labelsMock) describe('validateName()', () => { beforeEach(() => { - localStorage.getItem.mockClear() - localStorage.setItem.mockClear() - localStorage.getItem.mockImplementation(() => labelsMockJSON) + localStorage.setItem('ensjs:labels', labelsMockJSON) + vi.spyOn(localStorage, 'getItem') + vi.spyOn(localStorage, 'setItem') }) it('should throw if the name has an empty label', () => { expect(() => validateName('foo..bar')).toThrowError( @@ -39,12 +46,12 @@ describe('validateName()', () => { it('should throw if the name has [root] as a label and is not the only label', () => { expect(() => validateName('foo.[root].bar')) .toThrowErrorMatchingInlineSnapshot(` - "Root name cannot have other labels + [RootNameIncludesOtherLabelsError: Root name cannot have other labels - - Supplied name: foo.[root].bar + - Supplied name: foo.[root].bar - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) it('should get the decoded label hash from local storage', () => { diff --git a/packages/ensjs/src/utils/wrapper.test.ts b/packages/ensjs/src/utils/wrapper.test.ts index ba45a1d0..ecd12d34 100644 --- a/packages/ensjs/src/utils/wrapper.test.ts +++ b/packages/ensjs/src/utils/wrapper.test.ts @@ -1,4 +1,4 @@ -import { getVersion } from '../errors/error-utils.js' +import { describe, expect, it } from 'vitest' import { expiryToBigInt, wrappedLabelLengthCheck } from './wrapper.js' describe('expiryToBigInt', () => { @@ -22,7 +22,7 @@ describe('expiryToBigInt', () => { }) it('throws when expiry is not bigint, string, number or Date', () => { expect(() => expiryToBigInt({} as any)).toThrowErrorMatchingInlineSnapshot( - `"Expiry must be a bigint, string, number or Date"`, + `[TypeError: Expiry must be a bigint, string, number or Date]`, ) }) }) @@ -34,13 +34,13 @@ describe('wrappedLabelLengthCheck', () => { it('throws when label is more than 255 bytes', () => { expect(() => wrappedLabelLengthCheck('a'.repeat(256))) .toThrowErrorMatchingInlineSnapshot(` - "Supplied label was too long + [WrappedLabelTooLargeError: Supplied label was too long - - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - - Max byte length: 255 - - Actual byte length: 256 + - Supplied label: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + - Max byte length: 255 + - Actual byte length: 256 - Version: ${getVersion()}" - `) + Version: @ensdomains/ensjs@1.0.0-mock.0] + `) }) }) diff --git a/packages/ensjs/tsconfig.base.json b/packages/ensjs/tsconfig.base.json index 55ed12f9..91077e1e 100644 --- a/packages/ensjs/tsconfig.base.json +++ b/packages/ensjs/tsconfig.base.json @@ -25,14 +25,14 @@ // Interop constraints "esModuleInterop": false, - "allowSyntheticDefaultImports": false, + "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "verbatimModuleSyntax": true, "importHelpers": true, // This is only used for build validation. Since we do not have `tslib` installed, this will fail if we accidentally make use of anything that'd require injection of helpers. // Language and environment "moduleResolution": "NodeNext", - "module": "ESNext", + "module": "NodeNext", "target": "ES2021", // Setting this to `ES2021` enables native support for `Node v16+`: https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping. "lib": [ "ES2022", // By using ES2022 we get access to the `.cause` property on `Error` instances. diff --git a/packages/ensjs/tsconfig.build.json b/packages/ensjs/tsconfig.build.json index 7eddbd5e..8989e510 100644 --- a/packages/ensjs/tsconfig.build.json +++ b/packages/ensjs/tsconfig.build.json @@ -3,6 +3,7 @@ "include": ["./src"], "exclude": ["src/**/*.test.ts", "src/test/**/*", "./src/ABIs/**/*"], "compilerOptions": { + "moduleResolution": "node", "sourceMap": true, "rootDir": "./src", "paths": { diff --git a/packages/ensjs/tsconfig.json b/packages/ensjs/tsconfig.json index 9e43dfa9..ab1e39be 100644 --- a/packages/ensjs/tsconfig.json +++ b/packages/ensjs/tsconfig.json @@ -12,11 +12,6 @@ "exclude": [], "references": [{ "path": "./tsconfig.node.json" }], "compilerOptions": { - "types": ["jest"], - "resolveJsonModule": true, - "paths": { - "abitype": ["./node_modules/abitype/dist"], - "viem": ["./node_modules/viem/_types"] - } + "resolveJsonModule": true } } diff --git a/packages/ensjs/tsconfig.node.json b/packages/ensjs/tsconfig.node.json index d10feef5..1acf3fb4 100644 --- a/packages/ensjs/tsconfig.node.json +++ b/packages/ensjs/tsconfig.node.json @@ -1,12 +1,6 @@ { // This configuration is used for local development and type checking of configuration and script files that are not part of the build. - "include": [ - "jest.config.js", - "jest.setup.ts", - "scripts", - "hardhat.config.cjs", - "deploy" - ], + "include": ["vitest.config.ts", "scripts", "hardhat.config.cjs", "deploy"], "compilerOptions": { "strict": true, "composite": true, diff --git a/packages/ensjs/vitest.config.ts b/packages/ensjs/vitest.config.ts new file mode 100644 index 00000000..9ca54c28 --- /dev/null +++ b/packages/ensjs/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + coverage: { + enabled: true, + include: ['src/**/*'], + exclude: ['data/**/*'], + }, + environment: 'happy-dom', + setupFiles: ['./src/test/setup.ts'], + include: ['src/**/*.test.ts'], + exclude: ['data/**/*'], + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64cb7711..73003bfe 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: devDependencies: '@typescript-eslint/eslint-plugin': specifier: ^6.7.5 - version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.1.6) + version: 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.3.2) '@typescript-eslint/parser': specifier: ^6.7.5 - version: 6.7.5(eslint@8.51.0)(typescript@5.1.6) + version: 6.7.5(eslint@8.51.0)(typescript@5.3.2) eslint: specifier: ^8.51.0 version: 8.51.0 @@ -43,10 +43,10 @@ importers: version: 2.8.8 ts-node: specifier: ^10.7.0 - version: 10.9.1(@types/node@20.3.3)(typescript@5.1.6) + version: 10.9.1(@types/node@20.3.3)(typescript@5.3.2) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: ^5.3.2 + version: 5.3.2 dependenciesMeta: ens-contracts: built: false @@ -59,7 +59,7 @@ importers: version: link:../../packages/ensjs viem: specifier: ^1.2.9 - version: 1.2.9(typescript@5.1.6) + version: 1.2.9(typescript@5.3.2) examples/basic-tsnode-esm: dependencies: @@ -136,8 +136,8 @@ importers: specifier: 1.9.0 version: 1.9.0 '@ensdomains/address-encoder': - specifier: 1.1.0 - version: 1.1.0 + specifier: 1.1.1 + version: 1.1.1 '@ensdomains/content-hash': specifier: 3.1.0-rc.1 version: 3.1.0-rc.1 @@ -145,8 +145,8 @@ importers: specifier: ^0.5.1 version: 0.5.1 abitype: - specifier: ^0.8.0 - version: 0.8.0(typescript@5.1.6) + specifier: ^1.0.0 + version: 1.0.0(typescript@5.3.2) dns-packet: specifier: ^5.3.1 version: 5.4.0 @@ -160,8 +160,8 @@ importers: specifier: ^2.1.0 version: 2.1.0 traverse: - specifier: ^0.6.6 - version: 0.6.6 + specifier: ^0.6.8 + version: 0.6.8 devDependencies: '@ensdomains/buffer': specifier: ^0.0.13 @@ -184,18 +184,12 @@ importers: '@swc/core': specifier: ^1.3.61 version: 1.3.68 - '@swc/jest': - specifier: ^0.2.26 - version: 0.2.26(@swc/core@1.3.68) '@types/bn.js': specifier: ^5.1.0 version: 5.1.0 '@types/fs-extra': specifier: ^11.0.1 version: 11.0.1 - '@types/jest': - specifier: ^27.4.1 - version: 27.5.2 '@types/node': specifier: ^20.3.3 version: 20.3.3 @@ -203,8 +197,11 @@ importers: specifier: ^2.0.0 version: 2.0.0 '@types/traverse': - specifier: ^0.6.32 - version: 0.6.32 + specifier: ^0.6.36 + version: 0.6.36 + '@vitest/coverage-v8': + specifier: ^1.3.1 + version: 1.3.1(vitest@1.3.1) cbor: specifier: ^8.1.0 version: 8.1.0 @@ -214,9 +211,6 @@ importers: esbuild: specifier: ^0.15.6 version: 0.15.6 - eslint-plugin-jest: - specifier: ^27.0.1 - version: 27.0.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0)(jest@29.5.0)(typescript@5.1.6) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -226,48 +220,42 @@ importers: glob: specifier: ^8.0.3 version: 8.0.3 + happy-dom: + specifier: ^13.3.8 + version: 13.3.8 hardhat: specifier: 2.16.1 - version: 2.16.1(ts-node@10.9.2)(typescript@5.1.6) + version: 2.16.1(ts-node@10.9.2)(typescript@5.3.2) hardhat-abi-exporter: specifier: ^2.8.0 version: 2.10.0(hardhat@2.16.1) hardhat-deploy: specifier: ^0.11.12 version: 0.11.12 - jest: - specifier: ^29.5.0 - version: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - jest-environment-node: - specifier: ^29.5.0 - version: 29.5.0 - jest-localstorage-mock: - specifier: ^2.4.21 - version: 2.4.22 multiformats: specifier: ^12.0.1 version: 12.0.1 solc: specifier: ^0.8.13 version: 0.8.16 - ts-jest: - specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.18.10)(esbuild@0.15.6)(jest@29.5.0)(typescript@5.1.6) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.1.6) + version: 10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.3.2) typedoc: specifier: ^0.24.8 - version: 0.24.8(typescript@5.1.6) + version: 0.24.8(typescript@5.3.2) typedoc-plugin-markdown: specifier: ^4.0.0-next.16 version: 4.0.0-next.16(prettier@2.8.8)(typedoc@0.24.8) typescript: - specifier: ^5.1.6 - version: 5.1.6 + specifier: 5.3.2 + version: 5.3.2 viem: - specifier: ^1.16.4 - version: 1.16.4(typescript@5.1.6) + specifier: ^2.5.0 + version: 2.5.0(typescript@5.3.2) + vitest: + specifier: ^1.3.1 + version: 1.3.1(@types/node@20.3.3)(happy-dom@13.3.8) wait-on: specifier: ^6.0.1 version: 6.0.1 @@ -279,316 +267,38 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@adraffy/ens-normalize@1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: true + /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false - /@adraffy/ens-normalize@1.9.4: - resolution: {integrity: sha512-UK0bHA7hh9cR39V+4gl2/NnBBjoXIxkuWAPCaY4X7fbH4L/azIi7ilWOCjMUYfpJgraLUAqkRi2BqrjME8Rynw==} - dev: true - - /@ampproject/remapping@2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.18 - dev: true - - /@babel/code-frame@7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.18.6 - dev: true - - /@babel/compat-data@7.18.8: - resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.18.10: - resolution: {integrity: sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.12 - '@babel/helper-compilation-targets': 7.18.9(@babel/core@7.18.10) - '@babel/helper-module-transforms': 7.18.9 - '@babel/helpers': 7.18.9 - '@babel/parser': 7.18.11 - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - convert-source-map: 1.8.0 - debug: 4.3.4(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.18.12: - resolution: {integrity: sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - '@jridgewell/gen-mapping': 0.3.2 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.18.9(@babel/core@7.18.10): - resolution: {integrity: sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.18.8 - '@babel/core': 7.18.10 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.3 - semver: 6.3.0 - dev: true - - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.18.10 - dev: true - - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - dev: true - - /@babel/helper-module-imports@7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - dev: true - - /@babel/helper-module-transforms@7.18.9: - resolution: {integrity: sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==} - engines: {node: '>=6.9.0'} - 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.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/helper-plugin-utils@7.18.9: - resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.18.6: - resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - dev: true - - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.18.10 - dev: true - - /@babel/helper-string-parser@7.18.10: - resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.18.6: - resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} - engines: {node: '>=6.9.0'} + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.9 dev: true - /@babel/helper-validator-option@7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.18.9: - resolution: {integrity: sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/highlight@7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.18.6 - chalk: 2.4.2 - js-tokens: 4.0.0 dev: true - /@babel/parser@7.18.11: - resolution: {integrity: sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==} + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.18.10 - dev: true - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.18.10): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.18.10): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.18.10): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.18.10): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.18.10): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.18.10): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.18.10): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.18.10): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.20.2 - dev: true - - /@babel/plugin-syntax-typescript@7.18.6(@babel/core@7.18.10): - resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.18.10 - '@babel/helper-plugin-utils': 7.18.9 + '@babel/types': 7.23.9 dev: true /@babel/runtime@7.18.9: @@ -605,39 +315,12 @@ packages: regenerator-runtime: 0.14.1 dev: true - /@babel/template@7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - dev: true - - /@babel/traverse@7.18.11: - resolution: {integrity: sha512-TG9PiM2R/cWCAy6BPJKeHzNbu4lPzOSZpeMfeNErskGpTJx6trEvFaVCbDvpcxwy49BKWmEPwiW8mrysNiDvIQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.12 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - debug: 4.3.4(supports-color@8.1.1) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.18.10: - resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.18.10 - '@babel/helper-validator-identifier': 7.18.6 + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 dev: true @@ -702,8 +385,8 @@ packages: '@scure/base': 1.1.5 dev: false - /@ensdomains/address-encoder@1.1.0: - resolution: {integrity: sha512-kc+VFq4ml6UB/s1TRjwx/QOeGmvbUWkMDps/nLDco40CpU3//Iw8vscQ12wQzmCzn760kkyOt6nNBP2L3nhtAA==} + /@ensdomains/address-encoder@1.1.1: + resolution: {integrity: sha512-yg7s+suCuKRhaGsgLu57W/jxIs/Lnqs/SU7jT7UwS4ATSnW94jbUCbmyyZ82CQwKsmwaUE8uYvvVb4N6lfz29A==} dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 @@ -796,6 +479,105 @@ packages: hash-test-vectors: 1.3.2 dev: true + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64@0.15.6: resolution: {integrity: sha512-hqmVU2mUjH6J2ZivHphJ/Pdse2ZD+uGCHK0uvsiLDk/JnSedEVj77CiVUnbMKuU4tih1TZZL8tG9DExQg/GZsw==} engines: {node: '>=12'} @@ -805,6 +587,114 @@ packages: dev: true optional: true + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1238,338 +1128,95 @@ packages: '@ethersproject/keccak256': 5.7.0 '@ethersproject/logger': 5.7.0 '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - dev: true - - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@ethersproject/wordlists@5.6.1: - resolution: {integrity: sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - - /@graphql-typed-document-node/core@3.2.0(graphql@16.6.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 - dependencies: - graphql: 16.6.0 - dev: false - - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} - dependencies: - '@hapi/hoek': 9.3.0 - - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true - - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console@29.5.0: - resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - chalk: 4.1.2 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - dev: true - - /@jest/core@29.5.0(ts-node@10.9.2): - resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} - 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 - dependencies: - '@jest/console': 29.5.0 - '@jest/reporters': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.3.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 29.5.0 - jest-config: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-resolve-dependencies: 29.5.0 - jest-runner: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - jest-watcher: 29.5.0 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /@jest/create-cache-key-function@27.5.1: - resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@jest/types': 27.5.1 - dev: true - - /@jest/environment@29.5.0: - resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - jest-mock: 29.5.0 - dev: true - - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 dev: true - /@jest/expect@29.5.0: - resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} dependencies: - expect: 29.5.0 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@jest/fake-timers@29.5.0: - resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@ethersproject/wordlists@5.6.1: + resolution: {integrity: sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==} dependencies: - '@jest/types': 29.5.0 - '@sinonjs/fake-timers': 10.0.2 - '@types/node': 20.3.3 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false - /@jest/globals@29.5.0: - resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/types': 29.5.0 - jest-mock: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 - /@jest/reporters@29.5.0: - resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - '@types/node': 20.3.3 - chalk: 4.1.2 - collect-v8-coverage: 1.0.1 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - istanbul-lib-coverage: 3.2.0 - istanbul-lib-instrument: 5.2.0 - istanbul-lib-report: 3.0.0 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - jest-worker: 29.5.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.1.0 - transitivePeerDependencies: - - supports-color - dev: true + graphql: 16.6.0 + dev: false - /@jest/schemas@29.4.3: - resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.25.24 - dev: true + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - /@jest/source-map@29.4.3: - resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} dependencies: - '@jridgewell/trace-mapping': 0.3.18 - callsites: 3.1.0 - graceful-fs: 4.2.10 - dev: true + '@hapi/hoek': 9.3.0 - /@jest/test-result@29.5.0: - resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /@humanwhocodes/config-array@0.11.11: + resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} + engines: {node: '>=10.10.0'} dependencies: - '@jest/console': 29.5.0 - '@jest/types': 29.5.0 - '@types/istanbul-lib-coverage': 2.0.4 - collect-v8-coverage: 1.0.1 + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color dev: true - /@jest/test-sequencer@29.5.0: - resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - graceful-fs: 4.2.10 - jest-haste-map: 29.5.0 - slash: 3.0.0 + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /@jest/transform@29.5.0: - resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.18.10 - '@jest/types': 29.5.0 - '@jridgewell/trace-mapping': 0.3.18 - 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.10 - jest-haste-map: 29.5.0 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.3 - '@types/yargs': 16.0.4 - chalk: 4.1.2 + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} dev: true - /@jest/types@29.5.0: - resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 20.3.3 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@sinclair/typebox': 0.27.8 dev: true - /@jridgewell/gen-mapping@0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.9 dev: true /@jridgewell/resolve-uri@3.1.0: @@ -1584,11 +1231,15 @@ packages: /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} - /@jridgewell/trace-mapping@0.3.18: - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} dependencies: '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@jridgewell/trace-mapping@0.3.9: @@ -1936,7 +1587,7 @@ packages: chai: 4.3.6 ethereumjs-util: 7.1.5 fs-extra: 7.0.1 - hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.1.6) + hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.3.2) web3: 1.7.5 transitivePeerDependencies: - bufferutil @@ -1956,7 +1607,7 @@ packages: web3: ^1.0.0-beta.36 dependencies: '@types/bignumber.js': 5.0.0 - hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.1.6) + hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.3.2) web3: 1.7.5 dev: true @@ -2023,14 +1674,114 @@ packages: - utf-8-validate dev: true + /@rollup/rollup-android-arm-eabi@4.10.0: + resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.10.0: + resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.10.0: + resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.10.0: + resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.10.0: + resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.10.0: + resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.10.0: + resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.10.0: + resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.10.0: + resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.10.0: + resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.10.0: + resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.10.0: + resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.10.0: + resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@scure/base@1.1.1: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} dev: false - /@scure/base@1.1.3: - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} - dev: true - /@scure/base@1.1.5: resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} @@ -2055,7 +1806,7 @@ packages: dependencies: '@noble/curves': 1.2.0 '@noble/hashes': 1.3.2 - '@scure/base': 1.1.3 + '@scure/base': 1.1.5 dev: true /@scure/bip39@1.1.0: @@ -2076,7 +1827,7 @@ packages: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: '@noble/hashes': 1.3.2 - '@scure/base': 1.1.3 + '@scure/base': 1.1.5 dev: true /@sentry/core@5.30.0: @@ -2160,8 +1911,8 @@ packages: /@sideway/pinpoint@2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - /@sinclair/typebox@0.25.24: - resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true /@sindresorhus/is@0.14.0: @@ -2179,18 +1930,6 @@ packages: engines: {node: '>=14.16'} dev: false - /@sinonjs/commons@2.0.0: - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} - dependencies: - type-detect: 4.0.8 - dev: true - - /@sinonjs/fake-timers@10.0.2: - resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} - dependencies: - '@sinonjs/commons': 2.0.0 - dev: true - /@swc/core-darwin-arm64@1.3.68: resolution: {integrity: sha512-Z5pNxeuP2NxpOHTzDQkJs0wAPLnTlglZnR3WjObijwvdwT/kw1Y5EPDKM/BVSIeG40SPMkDLBbI0aj0qyXzrBA==} engines: {node: '>=10'} @@ -2303,17 +2042,6 @@ packages: '@swc/core-win32-x64-msvc': 1.3.68 dev: true - /@swc/jest@0.2.26(@swc/core@1.3.68): - resolution: {integrity: sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==} - engines: {npm: '>= 7.0.0'} - peerDependencies: - '@swc/core': '*' - dependencies: - '@jest/create-cache-key-function': 27.5.1 - '@swc/core': 1.3.68 - jsonc-parser: 3.2.0 - dev: true - /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} @@ -2457,35 +2185,6 @@ packages: /@tsconfig/node16@1.0.3: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} - /@types/babel__core@7.1.19: - resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} - dependencies: - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - '@types/babel__generator': 7.6.4 - '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.0 - dev: true - - /@types/babel__generator@7.6.4: - resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} - dependencies: - '@babel/types': 7.18.10 - dev: true - - /@types/babel__template@7.4.1: - resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} - dependencies: - '@babel/parser': 7.18.11 - '@babel/types': 7.18.10 - dev: true - - /@types/babel__traverse@7.18.0: - resolution: {integrity: sha512-v4Vwdko+pgymgS+A2UIaJru93zQd85vIGWObM5ekZNdXCKtDYqATlEYnWgfo86Q6I1Lh0oXnksDnMU1cwmlPDw==} - dependencies: - '@babel/types': 7.18.10 - dev: true - /@types/bignumber.js@5.0.0: resolution: {integrity: sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==} deprecated: This is a stub types definition for bignumber.js (https://github.com/MikeMcl/bignumber.js/). bignumber.js provides its own type definitions, so you don't need @types/bignumber.js installed! @@ -2516,6 +2215,10 @@ packages: resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} dev: true + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + /@types/fs-extra@11.0.1: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: @@ -2523,45 +2226,16 @@ packages: '@types/node': 20.3.3 dev: true - /@types/graceful-fs@4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} - dependencies: - '@types/node': 20.3.3 - dev: true - /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} - /@types/istanbul-lib-coverage@2.0.4: - resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: true - - /@types/istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.4 - dev: true - - /@types/istanbul-reports@3.0.1: - resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} - dependencies: - '@types/istanbul-lib-report': 3.0.0 - dev: true - - /@types/jest@27.5.2: - resolution: {integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==} - dependencies: - jest-matcher-utils: 27.5.1 - pretty-format: 27.5.1 + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} dev: true /@types/json-buffer@3.0.0: resolution: {integrity: sha512-3YP80IxxFJB4b5tYC2SUPwkg0XQLiu0nWvhRgEatgjf+29IcWO9X1k8xRv5DGssJ/lCrjYTjQPcobJr2yWIVuQ==} - /@types/json-schema@7.0.11: - resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} - dev: true - /@types/json-schema@7.0.13: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true @@ -2601,10 +2275,6 @@ packages: '@types/node': 20.3.3 dev: true - /@types/prettier@2.7.0: - resolution: {integrity: sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==} - dev: true - /@types/qs@6.9.7: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true @@ -2635,31 +2305,11 @@ packages: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@types/stack-utils@2.0.1: - resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} - dev: true - - /@types/traverse@0.6.32: - resolution: {integrity: sha512-RBz2uRZVCXuMg93WD//aTS5B120QlT4lR/gL+935QtGsKHLS6sCtZBaKfWjIfk7ZXv/r8mtGbwjVIee6/3XTow==} - dev: true - - /@types/yargs-parser@21.0.0: - resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} - dev: true - - /@types/yargs@16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} - dependencies: - '@types/yargs-parser': 21.0.0 - dev: true - - /@types/yargs@17.0.24: - resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} - dependencies: - '@types/yargs-parser': 21.0.0 + /@types/traverse@0.6.36: + resolution: {integrity: sha512-0ko4fZgKQf2J/2FvDJHua9KZ19zJkfI5FxG1ZeEUhezEwuq6UL+4T0IxcBfmHilBeAj7OSUTwrm/lPnh8EB1/Q==} dev: true - /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.1.6): + /@typescript-eslint/eslint-plugin@6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.3.2): resolution: {integrity: sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2671,10 +2321,10 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.3.2) '@typescript-eslint/scope-manager': 6.7.5 - '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/type-utils': 6.7.5(eslint@8.51.0)(typescript@5.3.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) eslint: 8.51.0 @@ -2682,13 +2332,13 @@ packages: ignore: 5.2.4 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.1.6): + /@typescript-eslint/parser@6.7.5(eslint@8.51.0)(typescript@5.3.2): resolution: {integrity: sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2700,21 +2350,13 @@ packages: dependencies: '@typescript-eslint/scope-manager': 6.7.5 '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.3.2) '@typescript-eslint/visitor-keys': 6.7.5 debug: 4.3.4(supports-color@8.1.1) eslint: 8.51.0 - typescript: 5.1.6 + typescript: 5.3.2 transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/scope-manager@5.33.0: - resolution: {integrity: sha512-/Jta8yMNpXYpRDl8EwF/M8It2A9sFJTubDo0ATZefGXmOqlaBffEw0ZbkbQ7TNDK6q55NPHFshGBPAZvZkE8Pw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.33.0 - '@typescript-eslint/visitor-keys': 5.33.0 + - supports-color dev: true /@typescript-eslint/scope-manager@6.7.5: @@ -2725,7 +2367,7 @@ packages: '@typescript-eslint/visitor-keys': 6.7.5 dev: true - /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.1.6): + /@typescript-eslint/type-utils@6.7.5(eslint@8.51.0)(typescript@5.3.2): resolution: {integrity: sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2735,48 +2377,22 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.1.6) - '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.3.2) + '@typescript-eslint/utils': 6.7.5(eslint@8.51.0)(typescript@5.3.2) debug: 4.3.4(supports-color@8.1.1) eslint: 8.51.0 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@5.33.0: - resolution: {integrity: sha512-nIMt96JngB4MYFYXpZ/3ZNU4GWPNdBbcB5w2rDOCpXOVUkhtNlG2mmm8uXhubhidRZdwMaMBap7Uk8SZMU/ppw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - /@typescript-eslint/types@6.7.5: resolution: {integrity: sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.33.0(typescript@5.1.6): - resolution: {integrity: sha512-tqq3MRLlggkJKJUrzM6wltk8NckKyyorCSGMq4eVkyL5sDYzJJcMgZATqmF8fLdsWrW7OjjIZ1m9v81vKcaqwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.33.0 - '@typescript-eslint/visitor-keys': 5.33.0 - debug: 4.3.4(supports-color@8.1.1) - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.7 - tsutils: 3.21.0(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@6.7.5(typescript@5.1.6): + /@typescript-eslint/typescript-estree@6.7.5(typescript@5.3.2): resolution: {integrity: sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2791,31 +2407,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.1.6) - typescript: 5.1.6 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils@5.33.0(eslint@8.51.0)(typescript@5.1.6): - resolution: {integrity: sha512-JxOAnXt9oZjXLIiXb5ZIcZXiwVHCkqZgof0O8KPgz7C7y0HS42gi75PdPlqh1Tf109M0fyUw45Ao6JLo7S5AHw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.33.0 - '@typescript-eslint/types': 5.33.0 - '@typescript-eslint/typescript-estree': 5.33.0(typescript@5.1.6) - eslint: 8.51.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0(eslint@8.51.0) + ts-api-utils: 1.0.3(typescript@5.3.2) + typescript: 5.3.2 transitivePeerDependencies: - supports-color - - typescript dev: true - /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.1.6): + /@typescript-eslint/utils@6.7.5(eslint@8.51.0)(typescript@5.3.2): resolution: {integrity: sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: @@ -2826,7 +2424,7 @@ packages: '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 6.7.5 '@typescript-eslint/types': 6.7.5 - '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.7.5(typescript@5.3.2) eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: @@ -2834,14 +2432,6 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@5.33.0: - resolution: {integrity: sha512-/XsqCzD4t+Y9p5wd9HZiptuGKBlaZO5showwqODii5C0nZawxWLF+Q6k5wYHBrQv96h6GYKyqqMHCSTqta8Kiw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.33.0 - eslint-visitor-keys: 3.4.3 - dev: true - /@typescript-eslint/visitor-keys@6.7.5: resolution: {integrity: sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -2854,6 +2444,68 @@ packages: resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} dev: true + /@vitest/coverage-v8@1.3.1(vitest@1.3.1): + resolution: {integrity: sha512-UuBnkSJUNE9rdHjDCPyJ4fYuMkoMtnghes1XohYa4At0MS3OQSAo97FrbwSLRshYsXThMZy1+ybD/byK5llyIg==} + peerDependencies: + vitest: 1.3.1 + dependencies: + '@ampproject/remapping': 2.2.1 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + magic-string: 0.30.7 + magicast: 0.3.3 + picocolors: 1.0.0 + std-env: 3.7.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + vitest: 1.3.1(@types/node@20.3.3)(happy-dom@13.3.8) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/expect@1.3.1: + resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} + dependencies: + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.3.1: + resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + dependencies: + '@vitest/utils': 1.3.1 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.3.1: + resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + dependencies: + magic-string: 0.30.7 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.3.1: + resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/utils@1.3.1: + resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + /@wagmi/chains@1.2.0(typescript@5.0.4): resolution: {integrity: sha512-dmDRipsE54JfyudOBkuhEexqQWcrZqxn/qiujG8SBzMh/az/AH5xlJSA+j1CPWTx9+QofSMF3B7A4gb6XRmSaQ==} peerDependencies: @@ -2865,7 +2517,7 @@ packages: typescript: 5.0.4 dev: false - /@wagmi/chains@1.2.0(typescript@5.1.6): + /@wagmi/chains@1.2.0(typescript@5.3.2): resolution: {integrity: sha512-dmDRipsE54JfyudOBkuhEexqQWcrZqxn/qiujG8SBzMh/az/AH5xlJSA+j1CPWTx9+QofSMF3B7A4gb6XRmSaQ==} peerDependencies: typescript: '>=5.0.4' @@ -2873,19 +2525,7 @@ packages: typescript: optional: true dependencies: - typescript: 5.1.6 - dev: false - - /abitype@0.8.0(typescript@5.1.6): - resolution: {integrity: sha512-QqBuwc2trtaNd/kp4k0dSjVu3OQIYRAB4ww4LCPwfSECXcCGTD3imYovNYNjx0SyN3OHV0XUOzUVwnXP1kLsVQ==} - peerDependencies: - typescript: '>=4.9.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - zod: - optional: true - dependencies: - typescript: 5.1.6 + typescript: 5.3.2 dev: false /abitype@0.8.11(typescript@5.0.4): @@ -2900,7 +2540,7 @@ packages: typescript: 5.0.4 dev: false - /abitype@0.8.11(typescript@5.1.6): + /abitype@0.8.11(typescript@5.3.2): resolution: {integrity: sha512-bM4v2dKvX08sZ9IU38IN5BKmN+ZkOSd2oI4a9f0ejHYZQYV6cDr7j+d95ga0z2XHG36Y4jzoG5Z7qDqxp7fi/A==} peerDependencies: typescript: '>=5.0.4' @@ -2909,22 +2549,21 @@ packages: zod: optional: true dependencies: - typescript: 5.1.6 + typescript: 5.3.2 dev: false - /abitype@0.9.8(typescript@5.1.6): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} + /abitype@1.0.0(typescript@5.3.2): + resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} peerDependencies: typescript: '>=5.0.4' - zod: ^3 >=3.19.1 + zod: ^3 >=3.22.0 peerDependenciesMeta: typescript: optional: true zod: optional: true dependencies: - typescript: 5.1.6 - dev: true + typescript: 5.3.2 /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -2982,12 +2621,23 @@ packages: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} hasBin: true dev: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn@8.8.0: resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} engines: {node: '>=0.4.0'} @@ -3095,12 +2745,6 @@ packages: /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - dependencies: - sprintf-js: 1.0.3 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -3282,78 +2926,6 @@ packages: dequal: 2.0.3 dev: true - /babel-jest@29.5.0(@babel/core@7.18.10): - resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.18.10 - '@jest/transform': 29.5.0 - '@types/babel__core': 7.1.19 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0(@babel/core@7.18.10) - chalk: 4.1.2 - graceful-fs: 4.2.10 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.0 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.5.0: - resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.18.10 - '@types/babel__core': 7.1.19 - '@types/babel__traverse': 7.18.0 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.18.10): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.10 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.18.10) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.18.10) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.18.10) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.18.10) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.18.10) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.18.10) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.18.10) - dev: true - - /babel-preset-jest@29.5.0(@babel/core@7.18.10): - resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.18.10 - babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.18.10) - dev: true - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -3539,24 +3111,6 @@ packages: safe-buffer: 5.2.1 dev: true - /browserslist@4.21.3: - resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001380 - electron-to-chromium: 1.4.225 - node-releases: 2.0.6 - update-browserslist-db: 1.0.5(browserslist@4.21.3) - dev: true - - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} dependencies: @@ -3571,12 +3125,6 @@ packages: safe-buffer: 5.2.1 dev: true - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true @@ -3630,6 +3178,11 @@ packages: engines: {node: '>= 0.8'} dev: true + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /cacheable-lookup@6.1.0: resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} engines: {node: '>=10.6.0'} @@ -3696,20 +3249,11 @@ packages: engines: {node: '>=4'} dev: true - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001380: - resolution: {integrity: sha512-OO+pPubxx16lkI7TVrbFpde8XHz66SMwstl1YWpg6uMGw56XnhYVwtPIjvX4kYpzwMwQKr4DDce394E03dQPGg==} - dev: true - /case@1.6.3: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} @@ -3761,6 +3305,19 @@ packages: type-detect: 4.0.8 dev: true + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -3800,15 +3357,16 @@ packages: upper-case-first: 1.1.2 dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - /check-error@1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} dev: true + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} dependencies: @@ -3845,7 +3403,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chownr@1.1.4: @@ -3855,10 +3413,6 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info@3.3.2: - resolution: {integrity: sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg==} - dev: true - /cids@0.7.5: resolution: {integrity: sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==} engines: {node: '>=4.0.0', npm: '>=3.0.0'} @@ -3878,10 +3432,6 @@ packages: safe-buffer: 5.2.1 dev: true - /cjs-module-lexer@1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} - dev: true - /class-is@1.1.0: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} dev: true @@ -3930,20 +3480,11 @@ packages: dependencies: mimic-response: 1.0.1 - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - /code-point-at@1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} dev: true - /collect-v8-coverage@1.0.1: - resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} - dev: true - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -4051,12 +3592,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /convert-source-map@1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true @@ -4285,10 +3820,6 @@ packages: dependencies: mimic-response: 3.1.0 - /dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - dev: true - /deep-eql@3.0.1: resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} engines: {node: '>=0.12'} @@ -4296,13 +3827,15 @@ packages: type-detect: 4.0.8 dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 dev: true - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} - engines: {node: '>=0.10.0'} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true /defer-to-connect@1.1.3: @@ -4382,18 +3915,8 @@ packages: engines: {node: '>=4'} dev: true - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - - /diff-sequences@27.5.1: - resolution: {integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /diff-sequences@29.4.3: - resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -4460,7 +3983,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - entities: 4.3.1 + entities: 4.5.0 dev: true /dom-walk@0.1.2: @@ -4511,10 +4034,6 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium@1.4.225: - resolution: {integrity: sha512-ICHvGaCIQR3P88uK8aRtx8gmejbVJyC6bB4LEC3anzBrIzdzC7aiZHY4iFfXhN4st6I7lMO0x4sgBHf/7kBvRw==} - dev: true - /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} dependencies: @@ -4531,11 +4050,6 @@ packages: engines: {node: '>=12'} dev: false - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4564,8 +4078,8 @@ packages: ansi-colors: 4.1.3 dev: true - /entities@4.3.1: - resolution: {integrity: sha512-o4q/dYJlmyjP2zfnaWDUC6A3BQFmVTX+tZPezK7k0GLSU9QYCauscf5Y+qcEPzKL+EixVouYDgLQK5H9GrLpkg==} + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true @@ -4941,6 +4455,37 @@ packages: esbuild-windows-arm64: 0.15.6 dev: true + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + 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 + dev: true + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -4954,11 +4499,6 @@ packages: engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -4987,8 +4527,8 @@ packages: eslint: ^7.32.0 || ^8.2.0 eslint-plugin-import: ^2.25.3 dependencies: - '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.1.6) - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.3.2) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.3.2) eslint: 8.51.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.26.0)(eslint@8.51.0) eslint-plugin-import: 2.26.0(@typescript-eslint/parser@6.7.5)(eslint@8.51.0) @@ -5053,7 +4593,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.3.2) debug: 3.2.7 eslint: 8.51.0 eslint-import-resolver-node: 0.3.6 @@ -5071,7 +4611,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.1.6) + '@typescript-eslint/parser': 6.7.5(eslint@8.51.0)(typescript@5.3.2) array-includes: 3.1.5 array.prototype.flat: 1.3.0 debug: 2.6.9 @@ -5092,28 +4632,6 @@ packages: - supports-color dev: true - /eslint-plugin-jest@27.0.1(@typescript-eslint/eslint-plugin@6.7.5)(eslint@8.51.0)(jest@29.5.0)(typescript@5.1.6): - resolution: {integrity: sha512-LosUsrkwVSs/8Z/I8Hqn5vWgTEsHrfIquDEKOsV8/cl+gbFR4tiRCE1AimEotsHjSC0Rx1tYm6vPhw8C3ktmmg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 6.7.5(@typescript-eslint/parser@6.7.5)(eslint@8.51.0)(typescript@5.1.6) - '@typescript-eslint/utils': 5.33.0(eslint@8.51.0)(typescript@5.1.6) - eslint: 8.51.0 - jest: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - transitivePeerDependencies: - - supports-color - - typescript - dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.51.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} @@ -5190,14 +4708,6 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5206,21 +4716,6 @@ packages: estraverse: 5.3.0 dev: true - /eslint-utils@3.0.0(eslint@8.51.0): - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.51.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5281,12 +4776,6 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} @@ -5301,16 +4790,17 @@ packages: estraverse: 5.3.0 dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true - /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -5525,35 +5015,19 @@ packages: safe-buffer: 5.2.1 dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} dependencies: cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 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 - dev: true - - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 dev: true /express@4.18.1: @@ -5650,12 +5124,6 @@ packages: reusify: 1.0.4 dev: true - /fb-watchman@2.0.1: - resolution: {integrity: sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==} - dependencies: - bser: 2.1.1 - dev: true - /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -5874,8 +5342,8 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -5944,11 +5412,6 @@ packages: - '@types/lru-cache' - '@types/seedrandom' - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - /get-caller-file@1.0.3: resolution: {integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==} dev: true @@ -5961,6 +5424,10 @@ packages: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} dev: true + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + /get-intrinsic@1.1.2: resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} dependencies: @@ -5978,11 +5445,6 @@ packages: hasown: 2.0.0 dev: true - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - /get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} @@ -6005,6 +5467,11 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -6073,11 +5540,6 @@ packages: process: 0.11.10 dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} @@ -6213,6 +5675,15 @@ packages: engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false + /happy-dom@13.3.8: + resolution: {integrity: sha512-RAbq4oYfJNkVan1m1F3jfA4YEyRY0/ASoNvZsNJbuX85jIypidmsz9jQZD7Tqz0VXA2MhAGfcsh5oshwmwNYSg==} + engines: {node: '>=16.0.0'} + dependencies: + entities: 4.5.0 + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + dev: true + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -6235,7 +5706,7 @@ packages: dependencies: '@ethersproject/abi': 5.6.4 delete-empty: 3.0.0 - hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.1.6) + hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.3.2) dev: true /hardhat-deploy-ethers@0.3.0-beta.13(ethers@5.7.2)(hardhat@2.16.1): @@ -6245,7 +5716,7 @@ packages: hardhat: ^2.0.0 dependencies: ethers: 5.7.2 - hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.1.6) + hardhat: 2.16.1(ts-node@10.9.2)(typescript@5.3.2) dev: true /hardhat-deploy@0.11.12: @@ -6270,7 +5741,7 @@ packages: - utf-8-validate dev: true - /hardhat@2.16.1(ts-node@10.9.2)(typescript@5.1.6): + /hardhat@2.16.1(ts-node@10.9.2)(typescript@5.3.2): resolution: {integrity: sha512-QpBjGXFhhSYoYBGEHyoau/A63crZOP+i3GbNxzLGkL6IklzT+piN14+wGnINNCg5BLSKisQI/RAySPzaWRcx/g==} engines: {node: '>=14.0.0'} hasBin: true @@ -6328,9 +5799,9 @@ packages: solc: 0.7.3(debug@4.3.4) source-map-support: 0.5.21 stacktrace-parser: 0.1.10 - ts-node: 10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.1.6) + ts-node: 10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.3.2) tsort: 0.0.1 - typescript: 5.1.6 + typescript: 5.3.2 undici: 5.22.1 uuid: 8.3.2 ws: 7.4.6 @@ -6467,7 +5938,7 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 domutils: 3.0.1 - entities: 4.3.1 + entities: 4.5.0 dev: true /http-cache-semantics@4.1.0: @@ -6514,9 +5985,9 @@ packages: - supports-color dev: true - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} dev: true /iconv-lite@0.4.24: @@ -6551,20 +6022,11 @@ packages: dev: true /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - dev: true - - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 + parent-module: 1.0.1 + resolve-from: 4.0.0 dev: true /imul@1.0.1: @@ -6733,11 +6195,6 @@ packages: resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} dev: true - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} @@ -6831,9 +6288,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true /is-string@1.0.7: @@ -6936,30 +6393,17 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} dev: true - /istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@5.2.0: - resolution: {integrity: sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==} + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - dependencies: - '@babel/core': 7.18.10 - '@babel/parser': 7.18.11 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color dev: true - /istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 supports-color: 7.2.0 dev: true @@ -6968,18 +6412,18 @@ packages: engines: {node: '>=10'} dependencies: debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color dev: true - /istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + /istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 dev: true /isurl@1.0.0: @@ -7000,446 +6444,6 @@ packages: set-function-name: 2.0.1 dev: true - /jest-changed-files@29.5.0: - resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.5.0: - resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/expect': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - chalk: 4.1.2 - co: 4.6.0 - dedent: 0.7.0 - is-generator-fn: 2.1.0 - jest-each: 29.5.0 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-runtime: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - p-limit: 3.1.0 - pretty-format: 29.5.0 - pure-rand: 6.0.2 - slash: 3.0.0 - stack-utils: 2.0.5 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-cli@29.5.0(@types/node@20.3.3)(ts-node@10.9.2): - resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} - 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 - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.2) - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.10 - import-local: 3.1.0 - jest-config: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - jest-util: 29.5.0 - jest-validate: 29.5.0 - prompts: 2.4.2 - yargs: 17.5.1 - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - - /jest-config@29.5.0(@types/node@20.3.3)(ts-node@10.9.2): - resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} - 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 - dependencies: - '@babel/core': 7.18.10 - '@jest/test-sequencer': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - babel-jest: 29.5.0(@babel/core@7.18.10) - chalk: 4.1.2 - ci-info: 3.3.2 - deepmerge: 4.2.2 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.5.0 - jest-environment-node: 29.5.0 - jest-get-type: 29.4.3 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-runner: 29.5.0 - jest-util: 29.5.0 - jest-validate: 29.5.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.5.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.1.6) - transitivePeerDependencies: - - supports-color - dev: true - - /jest-diff@27.5.1: - resolution: {integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-docblock@29.4.3: - resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.5.0: - resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - jest-util: 29.5.0 - pretty-format: 29.5.0 - dev: true - - /jest-environment-node@29.5.0: - resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - jest-mock: 29.5.0 - jest-util: 29.5.0 - dev: true - - /jest-get-type@27.5.1: - resolution: {integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dev: true - - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-haste-map@29.5.0: - resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/graceful-fs': 4.1.5 - '@types/node': 20.3.3 - anymatch: 3.1.2 - fb-watchman: 2.0.1 - graceful-fs: 4.2.10 - jest-regex-util: 29.4.3 - jest-util: 29.5.0 - jest-worker: 29.5.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - - /jest-leak-detector@29.5.0: - resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-localstorage-mock@2.4.22: - resolution: {integrity: sha512-60PWSDFQOS5v7JzSmYLM3dPLg0JLl+2Vc4lIEz/rj2yrXJzegsFLn7anwc5IL0WzJbBa/Las064CHbFg491/DQ==} - engines: {node: '>=6.16.0'} - dev: true - - /jest-matcher-utils@27.5.1: - resolution: {integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 27.5.1 - jest-get-type: 27.5.1 - pretty-format: 27.5.1 - dev: true - - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - - /jest-message-util@29.5.0: - resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.5.0 - '@types/stack-utils': 2.0.1 - chalk: 4.1.2 - graceful-fs: 4.2.10 - micromatch: 4.0.5 - pretty-format: 29.5.0 - slash: 3.0.0 - stack-utils: 2.0.5 - dev: true - - /jest-mock@29.5.0: - resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - jest-util: 29.5.0 - dev: true - - /jest-pnp-resolver@1.2.2(jest-resolve@29.5.0): - resolution: {integrity: sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.5.0 - dev: true - - /jest-regex-util@29.4.3: - resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - - /jest-resolve-dependencies@29.5.0: - resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-regex-util: 29.4.3 - jest-snapshot: 29.5.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-resolve@29.5.0: - resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.2(jest-resolve@29.5.0) - jest-util: 29.5.0 - jest-validate: 29.5.0 - resolve: 1.22.1 - resolve.exports: 2.0.2 - slash: 3.0.0 - dev: true - - /jest-runner@29.5.0: - resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.5.0 - '@jest/environment': 29.5.0 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.10 - jest-docblock: 29.4.3 - jest-environment-node: 29.5.0 - jest-haste-map: 29.5.0 - jest-leak-detector: 29.5.0 - jest-message-util: 29.5.0 - jest-resolve: 29.5.0 - jest-runtime: 29.5.0 - jest-util: 29.5.0 - jest-watcher: 29.5.0 - jest-worker: 29.5.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-runtime@29.5.0: - resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.5.0 - '@jest/fake-timers': 29.5.0 - '@jest/globals': 29.5.0 - '@jest/source-map': 29.4.3 - '@jest/test-result': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - chalk: 4.1.2 - cjs-module-lexer: 1.2.2 - collect-v8-coverage: 1.0.1 - glob: 7.2.3 - graceful-fs: 4.2.10 - jest-haste-map: 29.5.0 - jest-message-util: 29.5.0 - jest-mock: 29.5.0 - jest-regex-util: 29.4.3 - jest-resolve: 29.5.0 - jest-snapshot: 29.5.0 - jest-util: 29.5.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-snapshot@29.5.0: - resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.18.10 - '@babel/generator': 7.18.12 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.18.10) - '@babel/plugin-syntax-typescript': 7.18.6(@babel/core@7.18.10) - '@babel/traverse': 7.18.11 - '@babel/types': 7.18.10 - '@jest/expect-utils': 29.5.0 - '@jest/transform': 29.5.0 - '@jest/types': 29.5.0 - '@types/babel__traverse': 7.18.0 - '@types/prettier': 2.7.0 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.18.10) - chalk: 4.1.2 - expect: 29.5.0 - graceful-fs: 4.2.10 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - natural-compare: 1.4.0 - pretty-format: 29.5.0 - semver: 7.5.3 - transitivePeerDependencies: - - supports-color - dev: true - - /jest-util@29.5.0: - resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - chalk: 4.1.2 - ci-info: 3.3.2 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - - /jest-validate@29.5.0: - resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.5.0 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.4.3 - leven: 3.1.0 - pretty-format: 29.5.0 - dev: true - - /jest-watcher@29.5.0: - resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.5.0 - '@jest/types': 29.5.0 - '@types/node': 20.3.3 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.5.0 - string-length: 4.0.2 - dev: true - - /jest-worker@29.5.0: - resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.3.3 - jest-util: 29.5.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest@29.5.0(@types/node@20.3.3)(ts-node@10.9.2): - resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} - 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 - dependencies: - '@jest/core': 29.5.0(ts-node@10.9.2) - '@jest/types': 29.5.0 - import-local: 3.1.0 - jest-cli: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - transitivePeerDependencies: - - '@types/node' - - supports-color - - ts-node - dev: true - /joi@17.6.0: resolution: {integrity: sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw==} dependencies: @@ -7468,12 +6472,8 @@ packages: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} dev: true /js-yaml@4.1.0: @@ -7486,12 +6486,6 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} dev: true @@ -7499,10 +6493,6 @@ packages: /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==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -7526,12 +6516,6 @@ packages: minimist: 1.2.6 dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -7612,11 +6596,6 @@ packages: graceful-fs: 4.2.10 dev: true - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -7678,11 +6657,6 @@ packages: node-gyp-build: 4.5.0 dev: false - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -7691,10 +6665,6 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - /load-json-file@1.1.0: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} @@ -7706,6 +6676,14 @@ packages: strip-bom: 2.0.0 dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.5.0 + pkg-types: 1.0.3 + dev: true + /locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -7736,10 +6714,6 @@ packages: resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} dev: true - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true - /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true @@ -7765,7 +6739,13 @@ packages: /loupe@2.3.4: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: - get-func-name: 2.0.0 + get-func-name: 2.0.0 + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 dev: true /lower-case-first@1.0.2: @@ -7823,22 +6803,31 @@ packages: xxhashjs: 0.2.2 dev: false - /make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} dependencies: - semver: 6.3.0 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + source-map-js: 1.0.2 + dev: true - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} dependencies: - tmpl: 1.0.5 + semver: 7.5.4 dev: true + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -7933,9 +6922,9 @@ packages: hasBin: true dev: true - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} dev: true /mimic-response@1.0.1: @@ -8019,6 +7008,15 @@ packages: hasBin: true dev: true + /mlly@1.5.0: + resolution: {integrity: sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.4.0 + dev: true + /mnemonist@0.38.5: resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} dependencies: @@ -8144,6 +7142,12 @@ packages: hasBin: true dev: true + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /napi-macros@2.0.0: resolution: {integrity: sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==} dev: false @@ -8208,14 +7212,6 @@ packages: resolution: {integrity: sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==} hasBin: true - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} - dev: true - /nofilter@1.0.4: resolution: {integrity: sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==} engines: {node: '>=8'} @@ -8249,11 +7245,11 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - path-key: 3.1.1 + path-key: 4.0.0 dev: true /nth-check@2.1.1: @@ -8391,11 +7387,11 @@ packages: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} dependencies: - mimic-fn: 2.1.0 + mimic-fn: 4.0.0 dev: true /optionator@0.9.3: @@ -8462,6 +7458,13 @@ packages: yocto-queue: 0.1.0 dev: true + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} @@ -8549,16 +7552,6 @@ packages: error-ex: 1.3.2 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.18.6 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - /parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} dependencies: @@ -8569,7 +7562,7 @@ packages: /parse5@7.0.0: resolution: {integrity: sha512-y/t8IXSPWTuRZqXc0ajH/UwDj4mnqLEbSttNbThcFhGrZuOyoyvNBO85PBp2jQa55wY9d07PBNjsK8ZP3K5U6g==} dependencies: - entities: 4.3.1 + entities: 4.5.0 dev: true /parseurl@1.3.3: @@ -8617,6 +7610,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -8644,6 +7642,10 @@ packages: engines: {node: '>=8'} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true @@ -8689,16 +7691,21 @@ packages: engines: {node: '>=0.10.0'} dev: true - /pirates@4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} - engines: {node: '>= 6'} + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.5.0 + pathe: 1.1.2 dev: true - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} dependencies: - find-up: 4.1.0 + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true /prelude-ls@1.2.1: @@ -8729,20 +7736,11 @@ packages: hasBin: true dev: true - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - dev: true - - /pretty-format@29.5.0: - resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.4.3 + '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -8763,14 +7761,6 @@ packages: through2: 2.0.5 dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -8822,10 +7812,6 @@ packages: resolution: {integrity: sha512-ksWccjmXOHU2gJBnH0cK1lSYdvSZ0zLoCMSz/nTGh6hDvCSgcRxDyIcOBD6KNxFz3xhMPm/T267Tbe2JRymKEQ==} dev: true - /pure-rand@6.0.2: - resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} - dev: true - /qs@6.10.3: resolution: {integrity: sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==} engines: {node: '>=0.6'} @@ -8893,10 +7879,6 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true @@ -9031,28 +8013,11 @@ packages: /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true - /resolve@1.17.0: resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} dependencies: @@ -9126,6 +8091,29 @@ packages: bn.js: 5.2.1 dev: true + /rollup@4.10.0: + resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.10.0 + '@rollup/rollup-android-arm64': 4.10.0 + '@rollup/rollup-darwin-arm64': 4.10.0 + '@rollup/rollup-darwin-x64': 4.10.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.10.0 + '@rollup/rollup-linux-arm64-gnu': 4.10.0 + '@rollup/rollup-linux-arm64-musl': 4.10.0 + '@rollup/rollup-linux-riscv64-gnu': 4.10.0 + '@rollup/rollup-linux-x64-gnu': 4.10.0 + '@rollup/rollup-linux-x64-musl': 4.10.0 + '@rollup/rollup-win32-arm64-msvc': 4.10.0 + '@rollup/rollup-win32-ia32-msvc': 4.10.0 + '@rollup/rollup-win32-x64-msvc': 4.10.0 + fsevents: 2.3.3 + dev: true + /run-parallel-limit@1.1.0: resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} dependencies: @@ -9225,14 +8213,6 @@ packages: lru-cache: 6.0.0 dev: true - /semver@7.5.3: - resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -9382,8 +8362,13 @@ packages: object-inspect: 1.12.2 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} dev: true /simple-concat@1.0.1: @@ -9398,10 +8383,6 @@ packages: simple-concat: 1.0.1 dev: true - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - dev: true - /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -9458,11 +8439,9 @@ packages: - debug dev: true - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} dev: true /source-map-support@0.5.21: @@ -9512,10 +8491,6 @@ packages: resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} dev: false - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: true - /sshpk@1.17.0: resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} engines: {node: '>=0.10.0'} @@ -9538,11 +8513,8 @@ packages: stackframe: 1.3.4 dev: false - /stack-utils@2.0.5: - resolution: {integrity: sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true /stackframe@0.3.1: @@ -9580,6 +8552,10 @@ packages: engines: {node: '>= 0.8'} dev: true + /std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -9590,14 +8566,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 - dev: true - /string-width@1.0.2: resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==} engines: {node: '>=0.10.0'} @@ -9713,14 +8681,9 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} dev: true /strip-hex-prefix@1.0.0: @@ -9740,6 +8703,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -9854,6 +8823,20 @@ packages: engines: {node: '>=0.10.0'} dev: true + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + /title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} dependencies: @@ -9868,10 +8851,6 @@ packages: os-tmpdir: 1.0.2 dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} - dev: true - /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -9905,8 +8884,9 @@ packages: /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - /traverse@0.6.6: - resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} + /traverse@0.6.8: + resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} + engines: {node: '>= 0.4'} dev: false /tree-kill@1.2.2: @@ -9914,48 +8894,13 @@ packages: hasBin: true dev: false - /ts-api-utils@1.0.3(typescript@5.1.6): + /ts-api-utils@1.0.3(typescript@5.3.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 5.1.6 - dev: true - - /ts-jest@29.1.1(@babel/core@7.18.10)(esbuild@0.15.6)(jest@29.5.0)(typescript@5.1.6): - resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@babel/core': 7.18.10 - bs-logger: 0.2.6 - esbuild: 0.15.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.5.0(@types/node@20.3.3)(ts-node@10.9.2) - jest-util: 29.5.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.3 - typescript: 5.1.6 - yargs-parser: 21.1.1 + typescript: 5.3.2 dev: true /ts-node@10.9.1(@types/node@20.3.3)(typescript@5.0.4): @@ -9989,7 +8934,7 @@ packages: yn: 3.1.1 dev: false - /ts-node@10.9.1(@types/node@20.3.3)(typescript@5.1.6): + /ts-node@10.9.1(@types/node@20.3.3)(typescript@5.3.2): resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -10015,12 +8960,12 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 + typescript: 5.3.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /ts-node@10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.1.6): + /ts-node@10.9.2(@swc/core@1.3.68)(@types/node@20.3.3)(typescript@5.3.2): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -10047,7 +8992,7 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 + typescript: 5.3.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -10072,16 +9017,6 @@ packages: resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} dev: true - /tsutils@3.21.0(typescript@5.1.6): - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - dependencies: - tslib: 1.14.1 - typescript: 5.1.6 - dev: true - /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -10194,10 +9129,10 @@ packages: typedoc: '>=0.24.0' dependencies: prettier: 2.8.8 - typedoc: 0.24.8(typescript@5.1.6) + typedoc: 0.24.8(typescript@5.3.2) dev: true - /typedoc@0.24.8(typescript@5.1.6): + /typedoc@0.24.8(typescript@5.3.2): resolution: {integrity: sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==} engines: {node: '>= 14.14'} hasBin: true @@ -10208,7 +9143,7 @@ packages: marked: 4.3.0 minimatch: 9.0.3 shiki: 0.14.3 - typescript: 5.1.6 + typescript: 5.3.2 dev: true /typescript-logging@1.0.1: @@ -10223,11 +9158,15 @@ packages: hasBin: true dev: false - /typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + /typescript@5.3.2: + resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} engines: {node: '>=14.17'} hasBin: true + /ufo@1.4.0: + resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==} + dev: true + /ultron@1.1.1: resolution: {integrity: sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==} dev: true @@ -10266,17 +9205,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /update-browserslist-db@1.0.5(browserslist@4.21.3): - resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.21.3 - escalade: 3.1.1 - picocolors: 1.0.0 - dev: true - /upper-case-first@1.1.2: resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} dependencies: @@ -10381,13 +9309,13 @@ packages: /v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - /v8-to-istanbul@9.1.0: - resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.18 - '@types/istanbul-lib-coverage': 2.0.4 - convert-source-map: 1.8.0 + '@jridgewell/trace-mapping': 0.3.22 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 dev: true /validate-npm-package-license@3.0.4: @@ -10415,29 +9343,6 @@ packages: extsprintf: 1.3.0 dev: true - /viem@1.16.4(typescript@5.1.6): - resolution: {integrity: sha512-T9ziN3EERXz0BtQSS2VJM+P1EJ2W7K7PviobFrmvWCEYmNQ/vJDhfFqGjvq0ZL9LVz9HvevCbenEy8oIdMEZ+w==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.9.4 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.1.6) - isows: 1.0.3(ws@8.13.0) - typescript: 5.1.6 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - dev: true - /viem@1.2.9(typescript@5.0.4): resolution: {integrity: sha512-EnEbTuAAHv43unUgMISdQXbD9mrhZLvOdmf6eRGbDFl+XwP/PEzZAT79RaWAuDPnLXGMP1gBCJF++NFjSMukUw==} peerDependencies: @@ -10462,7 +9367,7 @@ packages: - zod dev: false - /viem@1.2.9(typescript@5.1.6): + /viem@1.2.9(typescript@5.3.2): resolution: {integrity: sha512-EnEbTuAAHv43unUgMISdQXbD9mrhZLvOdmf6eRGbDFl+XwP/PEzZAT79RaWAuDPnLXGMP1gBCJF++NFjSMukUw==} peerDependencies: typescript: '>=5.0.4' @@ -10475,10 +9380,10 @@ packages: '@noble/hashes': 1.3.0 '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 1.2.0(typescript@5.1.6) - abitype: 0.8.11(typescript@5.1.6) + '@wagmi/chains': 1.2.0(typescript@5.3.2) + abitype: 0.8.11(typescript@5.3.2) isomorphic-ws: 5.0.0(ws@8.12.0) - typescript: 5.1.6 + typescript: 5.3.2 ws: 8.12.0 transitivePeerDependencies: - bufferutil @@ -10486,6 +9391,143 @@ packages: - zod dev: false + /viem@2.5.0(typescript@5.3.2): + resolution: {integrity: sha512-ytHXIWtlgPs4mcsGxXjJrQ25v+N4dE2hBzgCU8CVv4iXNh3PRFRgyYa7igZlmxiMVzkfSHHADOtivS980JhilA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@scure/bip32': 1.3.2 + '@scure/bip39': 1.2.1 + abitype: 1.0.0(typescript@5.3.2) + isows: 1.0.3(ws@8.13.0) + typescript: 5.3.2 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + dev: true + + /vite-node@1.3.1(@types/node@20.3.3): + resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.1(@types/node@20.3.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@5.1.1(@types/node@20.3.3): + resolution: {integrity: sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.3.3 + esbuild: 0.19.12 + postcss: 8.4.35 + rollup: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitest@1.3.1(@types/node@20.3.3)(happy-dom@13.3.8): + resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.3.1 + '@vitest/ui': 1.3.1 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.3.3 + '@vitest/expect': 1.3.1 + '@vitest/runner': 1.3.1 + '@vitest/snapshot': 1.3.1 + '@vitest/spy': 1.3.1 + '@vitest/utils': 1.3.1 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4(supports-color@8.1.1) + execa: 8.0.1 + happy-dom: 13.3.8 + local-pkg: 0.5.0 + magic-string: 0.30.7 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.7.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.1(@types/node@20.3.3) + vite-node: 1.3.1(@types/node@20.3.3) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true @@ -10507,12 +9549,6 @@ packages: transitivePeerDependencies: - debug - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} @@ -11053,6 +10089,11 @@ packages: /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + /websocket@1.0.34: resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} engines: {node: '>=4.0.0'} @@ -11067,6 +10108,11 @@ packages: - supports-color dev: true + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -11145,6 +10191,15 @@ packages: isexe: 2.0.0 dev: true + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /window-size@0.2.0: resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==} engines: {node: '>= 0.10.0'} @@ -11174,14 +10229,6 @@ packages: /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} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - /ws@3.3.3: resolution: {integrity: sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==} peerDependencies: @@ -11331,6 +10378,7 @@ packages: /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + dev: false /yargs-unparser@2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} @@ -11366,6 +10414,7 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 21.1.1 + dev: false /yargs@4.8.1: resolution: {integrity: sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==} @@ -11395,6 +10444,11 @@ packages: engines: {node: '>=10'} dev: true + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /zksync-web3@0.7.13(ethers@5.7.2): resolution: {integrity: sha512-Zz83eOWLqPs88kgczkJLhst192oqtj7uzI3PaGyR9lkfQLL5eMEMZ+pD1eYPppTE1GohmGxhqnEf5HxG7WF0QA==} peerDependencies: