From 24f2f6dfff2d522b35d7897e17b9d99ce3843e0e Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Wed, 7 Jun 2023 14:12:05 +0300 Subject: [PATCH 1/6] add `sideEffects: false` to package json in esm folder --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a88125733f..6eb1e99a0f 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "bench:ci": "CI=true vitest bench", "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", - "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm --removeComments && echo > ./dist/esm/package.json '{\"type\":\"module\"}'", + "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm --removeComments && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", "changeset": "changeset", "changeset:release": "pnpm build && changeset publish", From bf47dfaaf9bd3d4886bb0a08043a349d147e5378 Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Wed, 7 Jun 2023 14:13:30 +0300 Subject: [PATCH 2/6] add pure annotations to top level functions --- package.json | 6 +- pnpm-lock.yaml | 335 +++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 301 insertions(+), 40 deletions(-) diff --git a/package.json b/package.json index 6eb1e99a0f..427e392e32 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,10 @@ "scripts": { "bench": "vitest bench", "bench:ci": "CI=true vitest bench", - "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", + "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:pure-annotations && pnpm run build:types", "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm --removeComments && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", + "build:pure-annotations": "pnpm babel ./dist/esm --out-dir ./dist/esm --plugins=babel-plugin-annotate-pure-calls", "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", "changeset": "changeset", "changeset:release": "pnpm build && changeset publish", @@ -152,6 +153,8 @@ "devDependencies": { "@actions/core": "^1.10.0", "@actions/github": "^5.1.1", + "@babel/cli": "^7.21.5", + "@babel/core": "^7.22.1", "@changesets/changelog-github": "^0.4.5", "@changesets/cli": "^2.23.2", "@size-limit/preset-big-lib": "^8.2.4", @@ -161,6 +164,7 @@ "@vitest/coverage-c8": "^0.30.1", "@vitest/ui": "^0.30.1", "@wagmi/cli": "^0.1.6", + "babel-plugin-annotate-pure-calls": "^0.4.0", "bun": "^0.5.9", "ethers": "^5.7.2", "ethers@6": "npm:ethers@^6.0.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a4eec30e07..5248048bb5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,6 +46,12 @@ importers: '@actions/github': specifier: ^5.1.1 version: 5.1.1 + '@babel/cli': + specifier: ^7.21.5 + version: 7.21.5(@babel/core@7.22.1) + '@babel/core': + specifier: ^7.22.1 + version: 7.22.1 '@changesets/changelog-github': specifier: ^0.4.5 version: 0.4.6 @@ -54,7 +60,7 @@ importers: version: 2.24.0 '@size-limit/preset-big-lib': specifier: ^8.2.4 - version: 8.2.4(esbuild@0.15.13)(size-limit@8.2.4) + version: 8.2.4(size-limit@8.2.4) '@types/fs-extra': specifier: ^9.0.13 version: 9.0.13 @@ -73,6 +79,9 @@ importers: '@wagmi/cli': specifier: ^0.1.6 version: 0.1.6(typescript@5.0.4) + babel-plugin-annotate-pure-calls: + specifier: ^0.4.0 + version: 0.4.0(@babel/core@7.22.1) bun: specifier: ^0.5.9 version: 0.5.9 @@ -102,7 +111,7 @@ importers: version: 5.0.4 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 vitest: specifier: ~0.30.1 version: 0.30.1(@vitest/ui@0.30.1) @@ -118,7 +127,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/blocks/fetching-blocks: dependencies: @@ -131,7 +140,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/blocks/watching-blocks: dependencies: @@ -144,7 +153,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/clients/public-client: dependencies: @@ -157,7 +166,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/clients/wallet-client: dependencies: @@ -185,7 +194,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/contracts/deploying-contracts: dependencies: @@ -213,7 +222,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/contracts/multicall: dependencies: @@ -226,7 +235,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/contracts/reading-contracts: dependencies: @@ -239,7 +248,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/contracts/writing-to-contracts: dependencies: @@ -267,7 +276,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/ens: dependencies: @@ -280,7 +289,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/filters-and-logs/block-event-logs: dependencies: @@ -293,7 +302,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/filters-and-logs/event-logs: dependencies: @@ -306,7 +315,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/signing/typed-data: dependencies: @@ -334,7 +343,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/transactions/fetching-transactions: dependencies: @@ -347,7 +356,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 examples/transactions/sending-transactions: dependencies: @@ -375,7 +384,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 playgrounds/browser: dependencies: @@ -403,7 +412,7 @@ importers: version: 5.0.3 vite: specifier: ^4.1.4 - version: 4.1.4(@types/node@18.16.3) + version: 4.1.4 playgrounds/bun: dependencies: @@ -580,7 +589,27 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.14 + '@jridgewell/trace-mapping': 0.3.18 + dev: true + + /@babel/cli@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-TOKytQ9uQW9c4np8F+P7ZfPINy5Kv+pizDIUwSVH8X5zHgYHV4AA8HE5LA450xXeu4jEfmUckTYvv1I4S26M/g==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@jridgewell/trace-mapping': 0.3.18 + commander: 4.1.1 + convert-source-map: 1.9.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.3 + make-dir: 2.1.0 + slash: 2.0.0 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 dev: true /@babel/code-frame@7.18.6: @@ -590,11 +619,23 @@ packages: '@babel/highlight': 7.18.6 dev: true + /@babel/code-frame@7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + /@babel/compat-data@7.20.14: resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} engines: {node: '>=6.9.0'} dev: true + /@babel/compat-data@7.22.3: + resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core@7.20.12: resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} engines: {node: '>=6.9.0'} @@ -618,6 +659,29 @@ packages: - supports-color dev: true + /@babel/core@7.22.1: + resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.22.3 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-module-transforms': 7.22.1 + '@babel/helpers': 7.22.3 + '@babel/parser': 7.22.4 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.4 + '@babel/types': 7.22.4 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator@7.20.14: resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} engines: {node: '>=6.9.0'} @@ -627,6 +691,16 @@ packages: jsesc: 2.5.2 dev: true + /@babel/generator@7.22.3: + resolution: {integrity: sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.4 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + /@babel/helper-compilation-targets@7.20.7(@babel/core@7.20.12): resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} @@ -641,11 +715,30 @@ packages: semver: 6.3.0 dev: true + /@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1): + resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.4 + lru-cache: 5.1.1 + 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-environment-visitor@7.22.1: + resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-function-name@7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} @@ -654,11 +747,19 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.21.9 + '@babel/types': 7.22.4 + 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.20.7 + '@babel/types': 7.22.4 dev: true /@babel/helper-module-imports@7.18.6: @@ -668,6 +769,13 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.4 + dev: true + /@babel/helper-module-transforms@7.20.11: resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} engines: {node: '>=6.9.0'} @@ -684,6 +792,22 @@ packages: - supports-color dev: true + /@babel/helper-module-transforms@7.22.1: + resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.21.5 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.4 + '@babel/types': 7.22.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/helper-plugin-utils@7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} @@ -696,11 +820,18 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/helper-simple-access@7.21.5: + resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.4 + 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.20.7 + '@babel/types': 7.22.4 dev: true /@babel/helper-string-parser@7.19.4: @@ -708,6 +839,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-string-parser@7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier@7.19.1: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} @@ -718,6 +854,11 @@ packages: engines: {node: '>=6.9.0'} dev: true + /@babel/helper-validator-option@7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helpers@7.20.13: resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} engines: {node: '>=6.9.0'} @@ -729,6 +870,17 @@ packages: - supports-color dev: true + /@babel/helpers@7.22.3: + resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.4 + '@babel/types': 7.22.4 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -754,6 +906,14 @@ packages: '@babel/types': 7.20.2 dev: true + /@babel/parser@7.22.4: + resolution: {integrity: sha512-VLLsx06XkEYqBtE5YGPwfSGwfrjnyPP5oiGty3S8pQLFDFLaS8VwWSIxkTXpcvr5zeYLE6+MBNl2npl/YnfofA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.4 + dev: true + /@babel/plugin-transform-react-jsx-self@7.18.6(@babel/core@7.20.12): resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} @@ -790,6 +950,15 @@ packages: '@babel/types': 7.20.7 dev: true + /@babel/template@7.21.9: + resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.22.4 + '@babel/types': 7.22.4 + dev: true + /@babel/traverse@7.20.13: resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} engines: {node: '>=6.9.0'} @@ -808,6 +977,24 @@ packages: - supports-color dev: true + /@babel/traverse@7.22.4: + resolution: {integrity: sha512-Tn1pDsjIcI+JcLKq1AVlZEr4226gpuAQTsLMorsYg9tuS/kG7nuwwJ4AB8jfQuEgb/COBwR/DqJxmoiYFu5/rQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.22.3 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.22.4 + '@babel/types': 7.22.4 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types@7.20.2: resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} engines: {node: '>=6.9.0'} @@ -826,6 +1013,15 @@ packages: to-fast-properties: 2.0.0 dev: true + /@babel/types@7.22.4: + resolution: {integrity: sha512-Tx9x3UBHTTsMSW85WB2kphxYQVvrZ/t1FxD88IpSgIjiUJlCm9z+xWIDwyo1vffTwSqteqyznB8ZE9vYYk16zA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + dev: true + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true @@ -1809,7 +2005,7 @@ packages: engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /@jridgewell/gen-mapping@0.3.2: @@ -1846,13 +2042,6 @@ packages: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.14: - resolution: {integrity: sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - /@jridgewell/trace-mapping@0.3.17: resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} dependencies: @@ -1887,6 +2076,12 @@ packages: read-yaml-file: 1.1.0 dev: true + /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + requiresBuild: true + dev: true + optional: true + /@noble/curves@1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: @@ -2152,14 +2347,14 @@ packages: size-limit: 8.2.4 dev: true - /@size-limit/preset-big-lib@8.2.4(esbuild@0.15.13)(size-limit@8.2.4): + /@size-limit/preset-big-lib@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-J4PTiJATEO/zoXF3tsSUy4KztvVuCw1g9ukRuDHYA+p1YYVViO4fDiSlnw4nBLN2lZoGdfQVOg12G7ta3+WwSA==} peerDependencies: size-limit: 8.2.4 dependencies: '@size-limit/file': 8.2.4(size-limit@8.2.4) '@size-limit/time': 8.2.4(size-limit@8.2.4) - '@size-limit/webpack': 8.2.4(esbuild@0.15.13)(size-limit@8.2.4) + '@size-limit/webpack': 8.2.4(size-limit@8.2.4) size-limit: 8.2.4 transitivePeerDependencies: - '@swc/core' @@ -2188,7 +2383,7 @@ packages: - utf-8-validate dev: true - /@size-limit/webpack@8.2.4(esbuild@0.15.13)(size-limit@8.2.4): + /@size-limit/webpack@8.2.4(size-limit@8.2.4): resolution: {integrity: sha512-L6TSQpX89cSeWQ1BL31BsaYucao0MGNW1xySHVO7jlgmOwnHC7j5zq91QRN9G6eMG84W+F3uRV4AiyCdZxKz9g==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} peerDependencies: @@ -2196,7 +2391,7 @@ packages: dependencies: nanoid: 3.3.4 size-limit: 8.2.4 - webpack: 5.76.2(esbuild@0.15.13) + webpack: 5.76.2 transitivePeerDependencies: - '@swc/core' - esbuild @@ -2340,7 +2535,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.20.12) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.1.4(@types/node@18.16.3) + vite: 4.1.4 transitivePeerDependencies: - supports-color dev: true @@ -3011,6 +3206,14 @@ packages: postcss-value-parser: 4.2.0 dev: true + /babel-plugin-annotate-pure-calls@0.4.0(@babel/core@7.22.1): + resolution: {integrity: sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==} + peerDependencies: + '@babel/core': ^6.0.0-0 || 7.x + dependencies: + '@babel/core': 7.22.1 + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -3383,6 +3586,11 @@ packages: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} @@ -4347,6 +4555,10 @@ packages: universalify: 0.1.2 dev: true + /fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -5059,6 +5271,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -6083,6 +6303,11 @@ packages: picocolors: 1.0.0 dev: true + /slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -6346,7 +6571,7 @@ packages: engines: {node: '>=8'} dev: true - /terser-webpack-plugin@5.3.7(esbuild@0.15.13)(webpack@5.76.2): + /terser-webpack-plugin@5.3.7(webpack@5.76.2): resolution: {integrity: sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -6363,12 +6588,11 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.17 - esbuild: 0.15.13 jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 terser: 5.16.6 - webpack: 5.76.2(esbuild@0.15.13) + webpack: 5.76.2 dev: true /terser@5.16.6: @@ -6614,6 +6838,39 @@ packages: - terser dev: true + /vite@4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.15.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vite@4.1.4(@types/node@18.16.3): resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6847,7 +7104,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /webpack@5.76.2(esbuild@0.15.13): + /webpack@5.76.2: resolution: {integrity: sha512-Th05ggRm23rVzEOlX8y67NkYCHa9nTNcwHPBhdg+lKG+mtiW7XgggjAeeLnADAe7mLjJ6LUNfgHAuRRh+Z6J7w==} engines: {node: '>=10.13.0'} hasBin: true @@ -6878,7 +7135,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.1.1 tapable: 2.2.1 - terser-webpack-plugin: 5.3.7(esbuild@0.15.13)(webpack@5.76.2) + terser-webpack-plugin: 5.3.7(webpack@5.76.2) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: From 48a084ad655d9c615c558cdfcd46fb5fc1298f16 Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Wed, 7 Jun 2023 14:15:29 +0300 Subject: [PATCH 3/6] tweak size-limit config --- package.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 427e392e32..62d1e02fae 100644 --- a/package.json +++ b/package.json @@ -198,7 +198,21 @@ ], "size-limit": [ { - "path": "./dist/cjs/index.js" + "name": "viem (cjs)", + "path": "./dist/cjs/index.js", + "limit": "60 kB" + }, + { + "name": "viem (esm)", + "path": "./dist/esm/index.js", + "limit": "1.5 kB", + "import": "{ defineBlock }" + }, + { + "name": "viem/chains", + "path": "./dist/esm/chains.js", + "limit": "1 kB", + "import": "{ mainnet }" } ], "simple-git-hooks": { From 6062058200d8818dacc2e217a8691b2ef5c82089 Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Wed, 7 Jun 2023 14:26:44 +0300 Subject: [PATCH 4/6] better label for size-limit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 62d1e02fae..116b3fac2d 100644 --- a/package.json +++ b/package.json @@ -203,7 +203,7 @@ "limit": "60 kB" }, { - "name": "viem (esm)", + "name": "viem (tree-shaking check)", "path": "./dist/esm/index.js", "limit": "1.5 kB", "import": "{ defineBlock }" From 50ff957b01ba0da1ba59aa3205c24ed2381c317d Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Fri, 9 Jun 2023 12:57:58 +0300 Subject: [PATCH 5/6] modify command to run over sources --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 116b3fac2d..343e40fcad 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:pure-annotations && pnpm run build:types", "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm --removeComments && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", - "build:pure-annotations": "pnpm babel ./dist/esm --out-dir ./dist/esm --plugins=babel-plugin-annotate-pure-calls", + "build:pure-annotations": "babel --out-dir ./src -x .ts --out-file-extension=.ts --plugins=babel-plugin-annotate-pure-calls --plugins=@babel/plugin-syntax-typescript", "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", "changeset": "changeset", "changeset:release": "pnpm build && changeset publish", @@ -155,6 +155,7 @@ "@actions/github": "^5.1.1", "@babel/cli": "^7.21.5", "@babel/core": "^7.22.1", + "@babel/plugin-syntax-typescript": "^7.22.5", "@changesets/changelog-github": "^0.4.5", "@changesets/cli": "^2.23.2", "@size-limit/preset-big-lib": "^8.2.4", From e4ed9da69f5696ef3886dd475d1fd06cab6c55a7 Mon Sep 17 00:00:00 2001 From: Dmitry Ivakhnenko Date: Fri, 9 Jun 2023 12:58:35 +0300 Subject: [PATCH 6/6] add __PURE__ annotations to source code --- src/chains.ts | 217 ++++++++++++--------- src/utils/encoding/toBytes.ts | 2 +- src/utils/encoding/toHex.ts | 4 +- src/utils/formatters/block.ts | 4 +- src/utils/formatters/transaction.ts | 4 +- src/utils/formatters/transactionReceipt.ts | 2 +- src/utils/formatters/transactionRequest.ts | 2 +- src/utils/observe.ts | 4 +- src/utils/promise/createBatchScheduler.ts | 2 +- src/utils/promise/withCache.ts | 4 +- src/utils/rpc.ts | 2 +- 11 files changed, 137 insertions(+), 110 deletions(-) diff --git a/src/chains.ts b/src/chains.ts index b23fded553..4b0fe6ab8a 100644 --- a/src/chains.ts +++ b/src/chains.ts @@ -11,7 +11,7 @@ import { defineTransactionReceipt } from './utils/formatters/transactionReceipt. import { defineTransactionRequest } from './utils/formatters/transactionRequest.js' const celoFormatters = { - block: defineBlock({ + block: /*#__PURE__*/ defineBlock({ exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'], format: (block) => ({ randomness: block.randomness as { @@ -20,7 +20,7 @@ const celoFormatters = { }, }), }), - transaction: defineTransaction({ + transaction: /*#__PURE__*/ defineTransaction({ format: (transaction) => ({ feeCurrency: transaction.feeCurrency as Address | null, gatewayFee: transaction.gatewayFee @@ -29,7 +29,7 @@ const celoFormatters = { gatewayFeeRecipient: transaction.gatewayFeeRecipient as Address | null, }), }), - transactionReceipt: defineTransactionReceipt({ + transactionReceipt: /*#__PURE__*/ defineTransactionReceipt({ format: (transaction) => ({ feeCurrency: transaction.feeCurrency as Address | null, gatewayFee: transaction.gatewayFee @@ -38,7 +38,7 @@ const celoFormatters = { gatewayFeeRecipient: transaction.gatewayFeeRecipient as Address | null, }), }), - transactionRequest: defineTransactionRequest({ + transactionRequest: /*#__PURE__*/ defineTransactionRequest({ format: (transactionRequest) => ({ feeCurrency: transactionRequest.feeCurrency as Address | undefined, gatewayFee: transactionRequest.gatewayFee as Quantity | undefined, @@ -48,107 +48,130 @@ const celoFormatters = { }), }), } - -export const arbitrum = defineChain(chains.arbitrum) -export const arbitrumGoerli = defineChain(chains.arbitrumGoerli) -export const aurora = defineChain(chains.aurora) -export const auroraTestnet = defineChain(chains.auroraTestnet) -export const avalanche = defineChain(chains.avalanche) -export const avalancheFuji = defineChain(chains.avalancheFuji) -export const baseGoerli = defineChain(chains.baseGoerli) -export const boba = defineChain(chains.boba) -export const bronos = defineChain(chains.bronos) -export const bronosTestnet = defineChain(chains.bronosTestnet) -export const bsc = defineChain(chains.bsc) -export const bscTestnet = defineChain(chains.bscTestnet) -export const canto = defineChain(chains.canto) -export const celo = defineChain({ +export const arbitrum = /*#__PURE__*/ defineChain(chains.arbitrum) +export const arbitrumGoerli = /*#__PURE__*/ defineChain(chains.arbitrumGoerli) +export const aurora = /*#__PURE__*/ defineChain(chains.aurora) +export const auroraTestnet = /*#__PURE__*/ defineChain(chains.auroraTestnet) +export const avalanche = /*#__PURE__*/ defineChain(chains.avalanche) +export const avalancheFuji = /*#__PURE__*/ defineChain(chains.avalancheFuji) +export const baseGoerli = /*#__PURE__*/ defineChain(chains.baseGoerli) +export const boba = /*#__PURE__*/ defineChain(chains.boba) +export const bronos = /*#__PURE__*/ defineChain(chains.bronos) +export const bronosTestnet = /*#__PURE__*/ defineChain(chains.bronosTestnet) +export const bsc = /*#__PURE__*/ defineChain(chains.bsc) +export const bscTestnet = /*#__PURE__*/ defineChain(chains.bscTestnet) +export const canto = /*#__PURE__*/ defineChain(chains.canto) +export const celo = /*#__PURE__*/ defineChain({ ...chains.celo, formatters: celoFormatters, }) -export const celoAlfajores = defineChain({ +export const celoAlfajores = /*#__PURE__*/ defineChain({ ...chains.celoAlfajores, formatters: celoFormatters, }) -export const celoCannoli = defineChain({ +export const celoCannoli = /*#__PURE__*/ defineChain({ ...chains.celoCannoli, formatters: celoFormatters, }) -export const cronos = defineChain(chains.cronos) -export const crossbell = defineChain(chains.crossbell) -export const dfk = defineChain(chains.dfk) -export const dogechain = defineChain(chains.dogechain) -export const evmos = defineChain(chains.evmos) -export const evmosTestnet = defineChain(chains.evmosTestnet) -export const fantom = defineChain(chains.fantom) -export const fantomTestnet = defineChain(chains.fantomTestnet) -export const filecoin = defineChain(chains.filecoin) -export const filecoinCalibration = defineChain(chains.filecoinCalibration) -export const filecoinHyperspace = defineChain(chains.filecoinHyperspace) -export const flare = defineChain(chains.flare) -export const flareTestnet = defineChain(chains.flareTestnet) -export const foundry = defineChain(chains.foundry) -export const iotex = defineChain(chains.iotex) -export const iotexTestnet = defineChain(chains.iotexTestnet) -export const goerli = defineChain(chains.goerli) -export const gnosis = defineChain(chains.gnosis) -export const gnosisChiado = defineChain(chains.gnosisChiado) -export const haqqMainnet = defineChain(chains.haqqMainnet) -export const haqqTestedge2 = defineChain(chains.haqqTestedge2) -export const hardhat = defineChain(chains.hardhat) -export const harmonyOne = defineChain(chains.harmonyOne) -export const klaytn = defineChain(chains.klaytn) -export const lineaTestnet = defineChain(chains.lineaTestnet) -export const localhost = defineChain(chains.localhost) -export const mainnet = defineChain(chains.mainnet) -export const metis = defineChain(chains.metis) -export const metisGoerli = defineChain(chains.metisGoerli) -export const moonbaseAlpha = defineChain(chains.moonbaseAlpha) -export const moonbeam = defineChain(chains.moonbeam) -export const moonriver = defineChain(chains.moonriver) -export const nexi = defineChain(chains.nexi) -export const okc = defineChain(chains.okc) -export const optimism = defineChain(chains.optimism) -export const optimismGoerli = defineChain(chains.optimismGoerli) -export const polygon = defineChain(chains.polygon) -export const polygonMumbai = defineChain(chains.polygonMumbai) -export const polygonZkEvm = defineChain(chains.polygonZkEvm) -export const polygonZkEvmTestnet = defineChain(chains.polygonZkEvmTestnet) -export const pulsechain = defineChain(chains.pulsechain) -export const pulsechainV4 = defineChain(chains.pulsechainV4) -export const scrollTestnet = defineChain(chains.scrollTestnet) -export const sepolia = defineChain(chains.sepolia) -export const skaleBlockBrawlers = defineChain(chains.skaleBlockBrawlers) -export const skaleCalypso = defineChain(chains.skaleCalypso) -export const skaleCalypsoTestnet = defineChain(chains.skaleCalypsoTestnet) -export const skaleChaosTestnet = defineChain(chains.skaleChaosTestnet) -export const skaleCryptoBlades = defineChain(chains.skaleCryptoBlades) -export const skaleCryptoColosseum = defineChain(chains.skaleCryptoColosseum) -export const skaleEuropa = defineChain(chains.skaleEuropa) -export const skaleEuropaTestnet = defineChain(chains.skaleEuropaTestnet) -export const skaleExorde = defineChain(chains.skaleExorde) -export const skaleHumanProtocol = defineChain(chains.skaleHumanProtocol) -export const skaleNebula = defineChain(chains.skaleNebula) -export const skaleNebulaTestnet = defineChain(chains.skaleNebulaTestnet) -export const skaleRazor = defineChain(chains.skaleRazor) -export const skaleTitan = defineChain(chains.skaleTitan) -export const skaleTitanTestnet = defineChain(chains.skaleTitanTestnet) -export const songbird = defineChain(chains.songbird) -export const songbirdTestnet = defineChain(chains.songbirdTestnet) -export const shardeumSphinx = defineChain(chains.shardeumSphinx) -export const syscoin = defineChain(chains.syscoin) -export const taraxa = defineChain(chains.taraxa) -export const taraxaTestnet = defineChain(chains.taraxaTestnet) -export const telos = defineChain(chains.telos) -export const telosTestnet = defineChain(chains.telosTestnet) -export const thunderTestnet = defineChain(chains.thunderTestnet) -export const wanchain = defineChain(chains.wanchain) -export const wanchainTestnet = defineChain(chains.wanchainTestnet) -export const xdc = defineChain(chains.xdc) -export const xdcTestnet = defineChain(chains.xdcTestnet) -export const zhejiang = defineChain(chains.zhejiang) -export const zkSync = defineChain(chains.zkSync) -export const zkSyncTestnet = defineChain(chains.zkSyncTestnet) -export const zoraTestnet = defineChain(chains.zoraTestnet) +export const cronos = /*#__PURE__*/ defineChain(chains.cronos) +export const crossbell = /*#__PURE__*/ defineChain(chains.crossbell) +export const dfk = /*#__PURE__*/ defineChain(chains.dfk) +export const dogechain = /*#__PURE__*/ defineChain(chains.dogechain) +export const evmos = /*#__PURE__*/ defineChain(chains.evmos) +export const evmosTestnet = /*#__PURE__*/ defineChain(chains.evmosTestnet) +export const fantom = /*#__PURE__*/ defineChain(chains.fantom) +export const fantomTestnet = /*#__PURE__*/ defineChain(chains.fantomTestnet) +export const filecoin = /*#__PURE__*/ defineChain(chains.filecoin) +export const filecoinCalibration = /*#__PURE__*/ defineChain( + chains.filecoinCalibration, +) +export const filecoinHyperspace = /*#__PURE__*/ defineChain( + chains.filecoinHyperspace, +) +export const flare = /*#__PURE__*/ defineChain(chains.flare) +export const flareTestnet = /*#__PURE__*/ defineChain(chains.flareTestnet) +export const foundry = /*#__PURE__*/ defineChain(chains.foundry) +export const iotex = /*#__PURE__*/ defineChain(chains.iotex) +export const iotexTestnet = /*#__PURE__*/ defineChain(chains.iotexTestnet) +export const goerli = /*#__PURE__*/ defineChain(chains.goerli) +export const gnosis = /*#__PURE__*/ defineChain(chains.gnosis) +export const gnosisChiado = /*#__PURE__*/ defineChain(chains.gnosisChiado) +export const haqqMainnet = /*#__PURE__*/ defineChain(chains.haqqMainnet) +export const haqqTestedge2 = /*#__PURE__*/ defineChain(chains.haqqTestedge2) +export const hardhat = /*#__PURE__*/ defineChain(chains.hardhat) +export const harmonyOne = /*#__PURE__*/ defineChain(chains.harmonyOne) +export const klaytn = /*#__PURE__*/ defineChain(chains.klaytn) +export const lineaTestnet = /*#__PURE__*/ defineChain(chains.lineaTestnet) +export const localhost = /*#__PURE__*/ defineChain(chains.localhost) +export const mainnet = /*#__PURE__*/ defineChain(chains.mainnet) +export const metis = /*#__PURE__*/ defineChain(chains.metis) +export const metisGoerli = /*#__PURE__*/ defineChain(chains.metisGoerli) +export const moonbaseAlpha = /*#__PURE__*/ defineChain(chains.moonbaseAlpha) +export const moonbeam = /*#__PURE__*/ defineChain(chains.moonbeam) +export const moonriver = /*#__PURE__*/ defineChain(chains.moonriver) +export const nexi = /*#__PURE__*/ defineChain(chains.nexi) +export const okc = /*#__PURE__*/ defineChain(chains.okc) +export const optimism = /*#__PURE__*/ defineChain(chains.optimism) +export const optimismGoerli = /*#__PURE__*/ defineChain(chains.optimismGoerli) +export const polygon = /*#__PURE__*/ defineChain(chains.polygon) +export const polygonMumbai = /*#__PURE__*/ defineChain(chains.polygonMumbai) +export const polygonZkEvm = /*#__PURE__*/ defineChain(chains.polygonZkEvm) +export const polygonZkEvmTestnet = /*#__PURE__*/ defineChain( + chains.polygonZkEvmTestnet, +) +export const pulsechain = /*#__PURE__*/ defineChain(chains.pulsechain) +export const pulsechainV4 = /*#__PURE__*/ defineChain(chains.pulsechainV4) +export const scrollTestnet = /*#__PURE__*/ defineChain(chains.scrollTestnet) +export const sepolia = /*#__PURE__*/ defineChain(chains.sepolia) +export const skaleBlockBrawlers = /*#__PURE__*/ defineChain( + chains.skaleBlockBrawlers, +) +export const skaleCalypso = /*#__PURE__*/ defineChain(chains.skaleCalypso) +export const skaleCalypsoTestnet = /*#__PURE__*/ defineChain( + chains.skaleCalypsoTestnet, +) +export const skaleChaosTestnet = /*#__PURE__*/ defineChain( + chains.skaleChaosTestnet, +) +export const skaleCryptoBlades = /*#__PURE__*/ defineChain( + chains.skaleCryptoBlades, +) +export const skaleCryptoColosseum = /*#__PURE__*/ defineChain( + chains.skaleCryptoColosseum, +) +export const skaleEuropa = /*#__PURE__*/ defineChain(chains.skaleEuropa) +export const skaleEuropaTestnet = /*#__PURE__*/ defineChain( + chains.skaleEuropaTestnet, +) +export const skaleExorde = /*#__PURE__*/ defineChain(chains.skaleExorde) +export const skaleHumanProtocol = /*#__PURE__*/ defineChain( + chains.skaleHumanProtocol, +) +export const skaleNebula = /*#__PURE__*/ defineChain(chains.skaleNebula) +export const skaleNebulaTestnet = /*#__PURE__*/ defineChain( + chains.skaleNebulaTestnet, +) +export const skaleRazor = /*#__PURE__*/ defineChain(chains.skaleRazor) +export const skaleTitan = /*#__PURE__*/ defineChain(chains.skaleTitan) +export const skaleTitanTestnet = /*#__PURE__*/ defineChain( + chains.skaleTitanTestnet, +) +export const songbird = /*#__PURE__*/ defineChain(chains.songbird) +export const songbirdTestnet = /*#__PURE__*/ defineChain(chains.songbirdTestnet) +export const shardeumSphinx = /*#__PURE__*/ defineChain(chains.shardeumSphinx) +export const syscoin = /*#__PURE__*/ defineChain(chains.syscoin) +export const taraxa = /*#__PURE__*/ defineChain(chains.taraxa) +export const taraxaTestnet = /*#__PURE__*/ defineChain(chains.taraxaTestnet) +export const telos = /*#__PURE__*/ defineChain(chains.telos) +export const telosTestnet = /*#__PURE__*/ defineChain(chains.telosTestnet) +export const thunderTestnet = /*#__PURE__*/ defineChain(chains.thunderTestnet) +export const wanchain = /*#__PURE__*/ defineChain(chains.wanchain) +export const wanchainTestnet = /*#__PURE__*/ defineChain(chains.wanchainTestnet) +export const xdc = /*#__PURE__*/ defineChain(chains.xdc) +export const xdcTestnet = /*#__PURE__*/ defineChain(chains.xdcTestnet) +export const zhejiang = /*#__PURE__*/ defineChain(chains.zhejiang) +export const zkSync = /*#__PURE__*/ defineChain(chains.zkSync) +export const zkSyncTestnet = /*#__PURE__*/ defineChain(chains.zkSyncTestnet) +export const zoraTestnet = /*#__PURE__*/ defineChain(chains.zoraTestnet) export type { Chain } from './types/chain.js' diff --git a/src/utils/encoding/toBytes.ts b/src/utils/encoding/toBytes.ts index 5bfdfad6dd..8e3cd49b0a 100644 --- a/src/utils/encoding/toBytes.ts +++ b/src/utils/encoding/toBytes.ts @@ -6,7 +6,7 @@ import { pad } from '../data/pad.js' import { assertSize } from './fromHex.js' import { type NumberToHexOpts, numberToHex } from './toHex.js' -const encoder = new TextEncoder() +const encoder = /*#__PURE__*/ new TextEncoder() export type ToBytesParameters = { /** Size of the output bytes. */ diff --git a/src/utils/encoding/toHex.ts b/src/utils/encoding/toHex.ts index 8cafe4ab27..b53cc3fae8 100644 --- a/src/utils/encoding/toHex.ts +++ b/src/utils/encoding/toHex.ts @@ -4,7 +4,7 @@ import { pad } from '../data/pad.js' import { assertSize } from './fromHex.js' -const hexes = Array.from({ length: 256 }, (_v, i) => +const hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) => i.toString(16).padStart(2, '0'), ) @@ -201,7 +201,7 @@ export type StringToHexOpts = { size?: number } -const encoder = new TextEncoder() +const encoder = /*#__PURE__*/ new TextEncoder() /** * Encodes a UTF-8 string into a hex string diff --git a/src/utils/formatters/block.ts b/src/utils/formatters/block.ts index 1683f23ea6..ccc96fc477 100644 --- a/src/utils/formatters/block.ts +++ b/src/utils/formatters/block.ts @@ -44,4 +44,6 @@ export function formatBlock(block: Partial) { } as Block } -export const defineBlock = defineFormatter({ format: formatBlock }) +export const defineBlock = /*#__PURE__*/ defineFormatter({ + format: formatBlock, +}) diff --git a/src/utils/formatters/transaction.ts b/src/utils/formatters/transaction.ts index 35947a2d11..07ff0c30c4 100644 --- a/src/utils/formatters/transaction.ts +++ b/src/utils/formatters/transaction.ts @@ -67,4 +67,6 @@ export function formatTransaction(transaction: Partial) { return transaction_ as Transaction } -export const defineTransaction = defineFormatter({ format: formatTransaction }) +export const defineTransaction = /*#__PURE__*/ defineFormatter({ + format: formatTransaction, +}) diff --git a/src/utils/formatters/transactionReceipt.ts b/src/utils/formatters/transactionReceipt.ts index d4035211f4..f6eddb878e 100644 --- a/src/utils/formatters/transactionReceipt.ts +++ b/src/utils/formatters/transactionReceipt.ts @@ -67,6 +67,6 @@ export function formatTransactionReceipt( } as TransactionReceipt } -export const defineTransactionReceipt = defineFormatter({ +export const defineTransactionReceipt = /*#__PURE__*/ defineFormatter({ format: formatTransactionReceipt, }) diff --git a/src/utils/formatters/transactionRequest.ts b/src/utils/formatters/transactionRequest.ts index f06d1d6ce9..01a8621883 100644 --- a/src/utils/formatters/transactionRequest.ts +++ b/src/utils/formatters/transactionRequest.ts @@ -56,6 +56,6 @@ export function formatTransactionRequest( } as RpcTransactionRequest } -export const defineTransactionRequest = defineFormatter({ +export const defineTransactionRequest = /*#__PURE__*/ defineFormatter({ format: formatTransactionRequest, }) diff --git a/src/utils/observe.ts b/src/utils/observe.ts index 5b23fb5e47..3870944318 100644 --- a/src/utils/observe.ts +++ b/src/utils/observe.ts @@ -3,11 +3,11 @@ import type { MaybePromise } from '../types/utils.js' type Callback = ((...args: any[]) => any) | undefined type Callbacks = Record -export const listenersCache = new Map< +export const listenersCache = /*#__PURE__*/ new Map< string, { id: number; fns: Callbacks }[] >() -export const cleanupCache = new Map void>() +export const cleanupCache = /*#__PURE__*/ new Map void>() type EmitFunction = ( emit: TCallbacks, diff --git a/src/utils/promise/createBatchScheduler.ts b/src/utils/promise/createBatchScheduler.ts index fdfa4dbd51..c4a7c193a2 100644 --- a/src/utils/promise/createBatchScheduler.ts +++ b/src/utils/promise/createBatchScheduler.ts @@ -29,7 +29,7 @@ export type CreateBatchSchedulerReturnType< : (args: TParameters) => Promise> } -const schedulerCache = new Map() +const schedulerCache = /*#__PURE__*/ new Map() export function createBatchScheduler< TParameters, diff --git a/src/utils/promise/withCache.ts b/src/utils/promise/withCache.ts index 0035e10ca8..737a4348f2 100644 --- a/src/utils/promise/withCache.ts +++ b/src/utils/promise/withCache.ts @@ -1,5 +1,5 @@ -export const promiseCache = new Map() -export const responseCache = new Map() +export const promiseCache = /*#__PURE__*/ new Map() +export const responseCache = /*#__PURE__*/ new Map() export function getCache(cacheKey: string) { const buildCache = (cacheKey: string, cache: Map) => ({ diff --git a/src/utils/rpc.ts b/src/utils/rpc.ts index 92c4cc790e..6a9feffba4 100644 --- a/src/utils/rpc.ts +++ b/src/utils/rpc.ts @@ -144,7 +144,7 @@ export type Socket = WebSocket & { subscriptions: CallbackMap } -const sockets = new Map() +const sockets = /*#__PURE__*/ new Map() export async function getSocket(url_: string) { const url = new URL(url_)