viem 0.0.1-alpha.15 → 0.0.1-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chains.js +6 -5
- package/dist/chains.js.map +1 -0
- package/dist/chains.mjs +2 -1
- package/dist/chains.mjs.map +1 -0
- package/dist/{chunk-KGXH5DYI.js → chunk-4XREGFHD.js} +12 -11
- package/dist/chunk-4XREGFHD.js.map +1 -0
- package/dist/{chunk-PPDHFNFM.mjs → chunk-B7A2CAHU.mjs} +3 -2
- package/dist/chunk-B7A2CAHU.mjs.map +1 -0
- package/dist/{chunk-QMLDI5JU.js → chunk-EWTLCB3N.js} +3 -1
- package/dist/chunk-EWTLCB3N.js.map +1 -0
- package/dist/{chunk-PHAG5KUF.mjs → chunk-KCMYVU3Z.mjs} +2 -1
- package/dist/chunk-KCMYVU3Z.mjs.map +1 -0
- package/dist/{chunk-2HENAFQN.mjs → chunk-KM6AFT2K.mjs} +3 -1
- package/dist/chunk-KM6AFT2K.mjs.map +1 -0
- package/dist/{chunk-IMYI7Z6M.js → chunk-LQXQPPTU.js} +14 -13
- package/dist/chunk-LQXQPPTU.js.map +1 -0
- package/dist/{chunk-SX7GPOCZ.mjs → chunk-TSJ3OOJW.mjs} +2 -1
- package/dist/chunk-TSJ3OOJW.mjs.map +1 -0
- package/dist/{chunk-NYXBQHNJ.mjs → chunk-U7QDLGQL.mjs} +2 -1
- package/dist/chunk-U7QDLGQL.mjs.map +1 -0
- package/dist/{chunk-HTYEJEWI.js → chunk-WTXKCAG7.js} +50 -49
- package/dist/chunk-WTXKCAG7.js.map +1 -0
- package/dist/{chunk-EMQSYKNY.js → chunk-XJKOJIX3.js} +12 -11
- package/dist/chunk-XJKOJIX3.js.map +1 -0
- package/dist/clients/index.js +4 -3
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/index.mjs +3 -2
- package/dist/clients/index.mjs.map +1 -0
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6 -5
- package/dist/index.mjs.map +1 -0
- package/dist/public.js +5 -4
- package/dist/public.js.map +1 -0
- package/dist/public.mjs +4 -3
- package/dist/public.mjs.map +1 -0
- package/dist/test.js +4 -3
- package/dist/test.js.map +1 -0
- package/dist/test.mjs +3 -2
- package/dist/test.mjs.map +1 -0
- package/dist/utils/index.js +3 -2
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +2 -1
- package/dist/utils/index.mjs.map +1 -0
- package/dist/wallet.js +4 -3
- package/dist/wallet.js.map +1 -0
- package/dist/wallet.mjs +3 -2
- package/dist/wallet.mjs.map +1 -0
- package/dist/window.js +1 -1
- package/dist/window.js.map +1 -0
- package/dist/window.mjs +1 -0
- package/dist/window.mjs.map +1 -0
- package/package.json +3 -1
- package/src/_test/abis.ts +1225 -0
- package/src/_test/bench.ts +15 -0
- package/src/_test/constants.ts +63 -0
- package/src/_test/globalSetup.ts +11 -0
- package/src/_test/index.ts +20 -0
- package/src/_test/setup.ts +8 -0
- package/src/_test/utils.ts +112 -0
- package/src/actions/index.test.ts +72 -0
- package/src/actions/index.ts +156 -0
- package/src/actions/public/call.bench.ts +48 -0
- package/src/actions/public/call.test.ts +99 -0
- package/src/actions/public/call.ts +96 -0
- package/src/actions/public/callContract.bench.ts +24 -0
- package/src/actions/public/callContract.test.ts +285 -0
- package/src/actions/public/callContract.ts +80 -0
- package/src/actions/public/createBlockFilter.bench.ts +11 -0
- package/src/actions/public/createBlockFilter.test.ts +9 -0
- package/src/actions/public/createBlockFilter.ts +14 -0
- package/src/actions/public/createEventFilter.test.ts +245 -0
- package/src/actions/public/createEventFilter.ts +81 -0
- package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
- package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
- package/src/actions/public/createPendingTransactionFilter.ts +14 -0
- package/src/actions/public/deployContract.test.ts +56 -0
- package/src/actions/public/deployContract.ts +39 -0
- package/src/actions/public/estimateGas.bench.ts +46 -0
- package/src/actions/public/estimateGas.test.ts +92 -0
- package/src/actions/public/estimateGas.ts +61 -0
- package/src/actions/public/getBalance.test.ts +83 -0
- package/src/actions/public/getBalance.ts +37 -0
- package/src/actions/public/getBlock.bench.ts +28 -0
- package/src/actions/public/getBlock.test.ts +575 -0
- package/src/actions/public/getBlock.ts +66 -0
- package/src/actions/public/getBlockNumber.bench.ts +28 -0
- package/src/actions/public/getBlockNumber.test.ts +27 -0
- package/src/actions/public/getBlockNumber.ts +32 -0
- package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
- package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
- package/src/actions/public/getBlockTransactionCount.ts +53 -0
- package/src/actions/public/getBytecode.test.ts +27 -0
- package/src/actions/public/getBytecode.ts +32 -0
- package/src/actions/public/getChainId.bench.ts +15 -0
- package/src/actions/public/getChainId.test.ts +8 -0
- package/src/actions/public/getChainId.ts +7 -0
- package/src/actions/public/getFeeHistory.bench.ts +18 -0
- package/src/actions/public/getFeeHistory.test.ts +137 -0
- package/src/actions/public/getFeeHistory.ts +44 -0
- package/src/actions/public/getFilterChanges.bench.ts +13 -0
- package/src/actions/public/getFilterChanges.test.ts +187 -0
- package/src/actions/public/getFilterChanges.ts +23 -0
- package/src/actions/public/getFilterLogs.test.ts +102 -0
- package/src/actions/public/getFilterLogs.ts +20 -0
- package/src/actions/public/getGasPrice.bench.ts +28 -0
- package/src/actions/public/getGasPrice.test.ts +8 -0
- package/src/actions/public/getGasPrice.ts +15 -0
- package/src/actions/public/getTransaction.bench.ts +33 -0
- package/src/actions/public/getTransaction.test.ts +311 -0
- package/src/actions/public/getTransaction.ts +96 -0
- package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
- package/src/actions/public/getTransactionConfirmations.ts +39 -0
- package/src/actions/public/getTransactionCount.test.ts +56 -0
- package/src/actions/public/getTransactionCount.ts +34 -0
- package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
- package/src/actions/public/getTransactionReceipt.test.ts +217 -0
- package/src/actions/public/getTransactionReceipt.ts +35 -0
- package/src/actions/public/index.test.ts +36 -0
- package/src/actions/public/index.ts +120 -0
- package/src/actions/public/uninstallFilter.bench.ts +13 -0
- package/src/actions/public/uninstallFilter.test.ts +65 -0
- package/src/actions/public/uninstallFilter.ts +17 -0
- package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
- package/src/actions/public/waitForTransactionReceipt.ts +171 -0
- package/src/actions/public/watchBlockNumber.test.ts +166 -0
- package/src/actions/public/watchBlockNumber.ts +79 -0
- package/src/actions/public/watchBlocks.test.ts +185 -0
- package/src/actions/public/watchBlocks.ts +95 -0
- package/src/actions/public/watchPendingTransactions.test.ts +116 -0
- package/src/actions/public/watchPendingTransactions.ts +73 -0
- package/src/actions/test/dropTransaction.test.ts +34 -0
- package/src/actions/test/dropTransaction.ts +17 -0
- package/src/actions/test/getAutomine.test.ts +14 -0
- package/src/actions/test/getAutomine.ts +11 -0
- package/src/actions/test/getTxpoolContent.test.ts +45 -0
- package/src/actions/test/getTxpoolContent.ts +7 -0
- package/src/actions/test/getTxpoolStatus.test.ts +41 -0
- package/src/actions/test/getTxpoolStatus.ts +12 -0
- package/src/actions/test/impersonateAccount.test.ts +28 -0
- package/src/actions/test/impersonateAccount.ts +17 -0
- package/src/actions/test/increaseTime.test.ts +18 -0
- package/src/actions/test/increaseTime.ts +17 -0
- package/src/actions/test/index.test.ts +38 -0
- package/src/actions/test/index.ts +77 -0
- package/src/actions/test/inspectTxpool.test.ts +50 -0
- package/src/actions/test/inspectTxpool.ts +7 -0
- package/src/actions/test/mine.test.ts +20 -0
- package/src/actions/test/mine.ts +16 -0
- package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
- package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
- package/src/actions/test/reset.test.ts +19 -0
- package/src/actions/test/reset.ts +18 -0
- package/src/actions/test/revert.test.ts +39 -0
- package/src/actions/test/revert.ts +14 -0
- package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
- package/src/actions/test/sendUnsignedTransaction.ts +19 -0
- package/src/actions/test/setAutomine.test.ts +14 -0
- package/src/actions/test/setAutomine.ts +8 -0
- package/src/actions/test/setBalance.test.ts +29 -0
- package/src/actions/test/setBalance.ts +20 -0
- package/src/actions/test/setBlockGasLimit.test.ts +21 -0
- package/src/actions/test/setBlockGasLimit.ts +17 -0
- package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
- package/src/actions/test/setBlockTimestampInterval.ts +16 -0
- package/src/actions/test/setCode.test.ts +26 -0
- package/src/actions/test/setCode.ts +19 -0
- package/src/actions/test/setCoinbase.test.ts +11 -0
- package/src/actions/test/setCoinbase.ts +17 -0
- package/src/actions/test/setIntervalMining.test.ts +30 -0
- package/src/actions/test/setIntervalMining.ts +16 -0
- package/src/actions/test/setLoggingEnabled.test.ts +10 -0
- package/src/actions/test/setLoggingEnabled.ts +8 -0
- package/src/actions/test/setMinGasPrice.test.ts +22 -0
- package/src/actions/test/setMinGasPrice.ts +17 -0
- package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
- package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
- package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
- package/src/actions/test/setNextBlockTimestamp.ts +17 -0
- package/src/actions/test/setNonce.test.ts +28 -0
- package/src/actions/test/setNonce.ts +20 -0
- package/src/actions/test/setRpcUrl.test.ts +9 -0
- package/src/actions/test/setRpcUrl.ts +8 -0
- package/src/actions/test/setStorageAt.test.ts +36 -0
- package/src/actions/test/setStorageAt.ts +26 -0
- package/src/actions/test/snapshot.test.ts +18 -0
- package/src/actions/test/snapshot.ts +7 -0
- package/src/actions/test/stopImpersonatingAccount.test.ts +31 -0
- package/src/actions/test/stopImpersonatingAccount.ts +17 -0
- package/src/actions/wallet/addChain.test.ts +14 -0
- package/src/actions/wallet/addChain.ts +21 -0
- package/src/actions/wallet/getAccounts.test.ts +22 -0
- package/src/actions/wallet/getAccounts.ts +7 -0
- package/src/actions/wallet/getPermissions.test.ts +24 -0
- package/src/actions/wallet/getPermissions.ts +9 -0
- package/src/actions/wallet/index.test.ts +19 -0
- package/src/actions/wallet/index.ts +27 -0
- package/src/actions/wallet/requestAccounts.test.ts +13 -0
- package/src/actions/wallet/requestAccounts.ts +7 -0
- package/src/actions/wallet/requestPermissions.test.ts +26 -0
- package/src/actions/wallet/requestPermissions.ts +19 -0
- package/src/actions/wallet/sendTransaction.bench.ts +57 -0
- package/src/actions/wallet/sendTransaction.test.ts +440 -0
- package/src/actions/wallet/sendTransaction.ts +76 -0
- package/src/actions/wallet/signMessage.test.ts +62 -0
- package/src/actions/wallet/signMessage.ts +35 -0
- package/src/actions/wallet/switchChain.test.ts +22 -0
- package/src/actions/wallet/switchChain.ts +19 -0
- package/src/actions/wallet/watchAsset.test.ts +41 -0
- package/src/actions/wallet/watchAsset.ts +16 -0
- package/src/chains.test.ts +1134 -0
- package/src/chains.ts +167 -0
- package/src/clients/createClient.test.ts +295 -0
- package/src/clients/createClient.ts +81 -0
- package/src/clients/createPublicClient.test.ts +165 -0
- package/src/clients/createPublicClient.ts +49 -0
- package/src/clients/createTestClient.test.ts +145 -0
- package/src/clients/createTestClient.ts +72 -0
- package/src/clients/createWalletClient.test.ts +121 -0
- package/src/clients/createWalletClient.ts +54 -0
- package/src/clients/index.test.ts +19 -0
- package/src/clients/index.ts +31 -0
- package/src/clients/transports/createTransport.test.ts +58 -0
- package/src/clients/transports/createTransport.ts +48 -0
- package/src/clients/transports/custom.test.ts +98 -0
- package/src/clients/transports/custom.ts +34 -0
- package/src/clients/transports/fallback.test.ts +223 -0
- package/src/clients/transports/fallback.ts +48 -0
- package/src/clients/transports/http.test.ts +110 -0
- package/src/clients/transports/http.ts +51 -0
- package/src/clients/transports/index.test.ts +15 -0
- package/src/clients/transports/index.ts +17 -0
- package/src/clients/transports/webSocket.test.ts +164 -0
- package/src/clients/transports/webSocket.ts +117 -0
- package/src/constants.test.ts +27 -0
- package/src/constants.ts +18 -0
- package/src/errors/abi.test.ts +83 -0
- package/src/errors/abi.ts +238 -0
- package/src/errors/address.test.ts +14 -0
- package/src/errors/address.ts +9 -0
- package/src/errors/base.test.ts +72 -0
- package/src/errors/base.ts +57 -0
- package/src/errors/block.test.ts +24 -0
- package/src/errors/block.ts +18 -0
- package/src/errors/contract.ts +125 -0
- package/src/errors/data.ts +20 -0
- package/src/errors/encoding.ts +60 -0
- package/src/errors/index.ts +77 -0
- package/src/errors/log.ts +8 -0
- package/src/errors/request.test.ts +331 -0
- package/src/errors/request.ts +163 -0
- package/src/errors/rpc.test.ts +88 -0
- package/src/errors/rpc.ts +113 -0
- package/src/errors/transaction.test.ts +83 -0
- package/src/errors/transaction.ts +54 -0
- package/src/errors/transport.test.ts +12 -0
- package/src/errors/transport.ts +12 -0
- package/src/index.test.ts +208 -0
- package/src/index.ts +353 -0
- package/src/public.ts +80 -0
- package/src/test.ts +51 -0
- package/src/types/block.ts +71 -0
- package/src/types/contract.ts +327 -0
- package/src/types/eip1193.ts +1038 -0
- package/src/types/fee.ts +47 -0
- package/src/types/filter.ts +8 -0
- package/src/types/index.ts +72 -0
- package/src/types/log.ts +22 -0
- package/src/types/misc.ts +4 -0
- package/src/types/rpc.ts +35 -0
- package/src/types/transaction.ts +145 -0
- package/src/types/utils.ts +67 -0
- package/src/types/window.ts +9 -0
- package/src/utils/abi/decodeAbi.bench.ts +135 -0
- package/src/utils/abi/decodeAbi.test.ts +1615 -0
- package/src/utils/abi/decodeAbi.ts +296 -0
- package/src/utils/abi/decodeDeployData.test.ts +159 -0
- package/src/utils/abi/decodeDeployData.ts +41 -0
- package/src/utils/abi/decodeErrorResult.test.ts +130 -0
- package/src/utils/abi/decodeErrorResult.ts +28 -0
- package/src/utils/abi/decodeFunctionData.test.ts +140 -0
- package/src/utils/abi/decodeFunctionData.ts +29 -0
- package/src/utils/abi/decodeFunctionResult.test.ts +262 -0
- package/src/utils/abi/decodeFunctionResult.ts +53 -0
- package/src/utils/abi/encodeAbi.bench.ts +163 -0
- package/src/utils/abi/encodeAbi.test.ts +1414 -0
- package/src/utils/abi/encodeAbi.ts +258 -0
- package/src/utils/abi/encodeDeployData.test.ts +131 -0
- package/src/utils/abi/encodeDeployData.ts +37 -0
- package/src/utils/abi/encodeErrorResult.test.ts +197 -0
- package/src/utils/abi/encodeErrorResult.ts +40 -0
- package/src/utils/abi/encodeEventTopics.test.ts +348 -0
- package/src/utils/abi/encodeEventTopics.ts +69 -0
- package/src/utils/abi/encodeFunctionData.test.ts +140 -0
- package/src/utils/abi/encodeFunctionData.ts +38 -0
- package/src/utils/abi/encodeFunctionResult.test.ts +284 -0
- package/src/utils/abi/encodeFunctionResult.ts +39 -0
- package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
- package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
- package/src/utils/abi/formatAbiItemWithParams.test.ts +335 -0
- package/src/utils/abi/formatAbiItemWithParams.ts +41 -0
- package/src/utils/abi/getAbiItem.ts +5 -0
- package/src/utils/abi/index.test.ts +23 -0
- package/src/utils/abi/index.ts +38 -0
- package/src/utils/address/getAddress.bench.ts +22 -0
- package/src/utils/address/getAddress.test.ts +46 -0
- package/src/utils/address/getAddress.ts +28 -0
- package/src/utils/address/getContractAddress.bench.ts +20 -0
- package/src/utils/address/getContractAddress.test.ts +78 -0
- package/src/utils/address/getContractAddress.ts +59 -0
- package/src/utils/address/index.test.ts +17 -0
- package/src/utils/address/index.ts +16 -0
- package/src/utils/address/isAddress.test.ts +10 -0
- package/src/utils/address/isAddress.ts +10 -0
- package/src/utils/address/isAddressEqual.test.ts +55 -0
- package/src/utils/address/isAddressEqual.ts +6 -0
- package/src/utils/buildRequest.test.ts +365 -0
- package/src/utils/buildRequest.ts +45 -0
- package/src/utils/contract/extractFunctionParts.test.ts +109 -0
- package/src/utils/contract/extractFunctionParts.ts +27 -0
- package/src/utils/contract/getContractError.test.ts +97 -0
- package/src/utils/contract/getContractError.ts +70 -0
- package/src/utils/contract/index.test.ts +15 -0
- package/src/utils/contract/index.ts +8 -0
- package/src/utils/data/concat.test.ts +35 -0
- package/src/utils/data/concat.ts +34 -0
- package/src/utils/data/index.test.ts +23 -0
- package/src/utils/data/index.ts +13 -0
- package/src/utils/data/isBytes.test.ts +9 -0
- package/src/utils/data/isBytes.ts +7 -0
- package/src/utils/data/isHex.test.ts +13 -0
- package/src/utils/data/isHex.ts +5 -0
- package/src/utils/data/pad.bench.ts +39 -0
- package/src/utils/data/pad.test.ts +367 -0
- package/src/utils/data/pad.ts +53 -0
- package/src/utils/data/size.test.ts +18 -0
- package/src/utils/data/size.ts +13 -0
- package/src/utils/data/slice.test.ts +203 -0
- package/src/utils/data/slice.ts +60 -0
- package/src/utils/data/trim.bench.ts +50 -0
- package/src/utils/data/trim.test.ts +175 -0
- package/src/utils/data/trim.ts +33 -0
- package/src/utils/encoding/decodeBytes.bench.ts +40 -0
- package/src/utils/encoding/decodeBytes.test.ts +144 -0
- package/src/utils/encoding/decodeBytes.ts +63 -0
- package/src/utils/encoding/decodeHex.bench.ts +24 -0
- package/src/utils/encoding/decodeHex.test.ts +167 -0
- package/src/utils/encoding/decodeHex.ts +76 -0
- package/src/utils/encoding/decodeRlp.bench.ts +34 -0
- package/src/utils/encoding/decodeRlp.test.ts +350 -0
- package/src/utils/encoding/decodeRlp.ts +121 -0
- package/src/utils/encoding/encodeBytes.bench.ts +41 -0
- package/src/utils/encoding/encodeBytes.test.ts +676 -0
- package/src/utils/encoding/encodeBytes.ts +59 -0
- package/src/utils/encoding/encodeHex.bench.ts +60 -0
- package/src/utils/encoding/encodeHex.test.ts +232 -0
- package/src/utils/encoding/encodeHex.ts +104 -0
- package/src/utils/encoding/encodeRlp.bench.ts +54 -0
- package/src/utils/encoding/encodeRlp.test.ts +254 -0
- package/src/utils/encoding/encodeRlp.ts +48 -0
- package/src/utils/encoding/index.test.ts +32 -0
- package/src/utils/encoding/index.ts +36 -0
- package/src/utils/formatters/block.bench.ts +51 -0
- package/src/utils/formatters/block.test.ts +115 -0
- package/src/utils/formatters/block.ts +36 -0
- package/src/utils/formatters/extract.test.ts +14 -0
- package/src/utils/formatters/extract.ts +18 -0
- package/src/utils/formatters/feeHistory.test.ts +66 -0
- package/src/utils/formatters/feeHistory.ts +12 -0
- package/src/utils/formatters/format.test.ts +93 -0
- package/src/utils/formatters/format.ts +53 -0
- package/src/utils/formatters/index.test.ts +17 -0
- package/src/utils/formatters/index.ts +24 -0
- package/src/utils/formatters/log.test.ts +79 -0
- package/src/utils/formatters/log.ts +12 -0
- package/src/utils/formatters/transaction.test.ts +271 -0
- package/src/utils/formatters/transaction.ts +51 -0
- package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
- package/src/utils/formatters/transactionReceipt.test.ts +151 -0
- package/src/utils/formatters/transactionReceipt.ts +54 -0
- package/src/utils/formatters/transactionRequest.bench.ts +29 -0
- package/src/utils/formatters/transactionRequest.test.ts +237 -0
- package/src/utils/formatters/transactionRequest.ts +47 -0
- package/src/utils/hash/getEventSignature.test.ts +61 -0
- package/src/utils/hash/getEventSignature.ts +4 -0
- package/src/utils/hash/getFunctionSignature.test.ts +22 -0
- package/src/utils/hash/getFunctionSignature.ts +5 -0
- package/src/utils/hash/hashFunction.test.ts +65 -0
- package/src/utils/hash/hashFunction.ts +12 -0
- package/src/utils/hash/index.test.ts +13 -0
- package/src/utils/hash/index.ts +5 -0
- package/src/utils/hash/keccak256.test.ts +59 -0
- package/src/utils/hash/keccak256.ts +23 -0
- package/src/utils/index.test.ts +87 -0
- package/src/utils/index.ts +126 -0
- package/src/utils/observe.test.ts +176 -0
- package/src/utils/observe.ts +66 -0
- package/src/utils/poll.test.ts +127 -0
- package/src/utils/poll.ts +42 -0
- package/src/utils/promise/index.test.ts +14 -0
- package/src/utils/promise/index.ts +3 -0
- package/src/utils/promise/withCache.test.ts +97 -0
- package/src/utils/promise/withCache.ts +73 -0
- package/src/utils/promise/withRetry.test.ts +231 -0
- package/src/utils/promise/withRetry.ts +61 -0
- package/src/utils/promise/withTimeout.test.ts +37 -0
- package/src/utils/promise/withTimeout.ts +39 -0
- package/src/utils/rpc.test.ts +992 -0
- package/src/utils/rpc.ts +292 -0
- package/src/utils/stringify.test.ts +13 -0
- package/src/utils/stringify.ts +5 -0
- package/src/utils/uid.ts +14 -0
- package/src/utils/unit/formatEther.test.ts +75 -0
- package/src/utils/unit/formatEther.ts +6 -0
- package/src/utils/unit/formatGwei.test.ts +32 -0
- package/src/utils/unit/formatGwei.ts +6 -0
- package/src/utils/unit/formatUnit.bench.ts +26 -0
- package/src/utils/unit/formatUnit.test.ts +40 -0
- package/src/utils/unit/formatUnit.ts +16 -0
- package/src/utils/unit/index.test.ts +16 -0
- package/src/utils/unit/index.ts +6 -0
- package/src/utils/unit/parseEther.test.ts +126 -0
- package/src/utils/unit/parseEther.ts +6 -0
- package/src/utils/unit/parseGwei.test.ts +50 -0
- package/src/utils/unit/parseGwei.ts +6 -0
- package/src/utils/unit/parseUnit.bench.ts +26 -0
- package/src/utils/unit/parseUnit.test.ts +54 -0
- package/src/utils/unit/parseUnit.ts +27 -0
- package/src/utils/wait.ts +3 -0
- package/src/wallet.ts +23 -0
- package/src/window.ts +1 -0
@@ -0,0 +1,163 @@
|
|
1
|
+
import { BaseError } from './base'
|
2
|
+
import { RpcError } from './rpc'
|
3
|
+
|
4
|
+
export class RequestError extends BaseError {
|
5
|
+
constructor(
|
6
|
+
err: Error,
|
7
|
+
{ docsPath, humanMessage }: { docsPath?: string; humanMessage: string },
|
8
|
+
) {
|
9
|
+
super(humanMessage, {
|
10
|
+
cause: err,
|
11
|
+
docsPath,
|
12
|
+
})
|
13
|
+
this.name = err.name
|
14
|
+
}
|
15
|
+
}
|
16
|
+
|
17
|
+
export class RpcRequestError extends RequestError {
|
18
|
+
code: number
|
19
|
+
|
20
|
+
constructor(
|
21
|
+
err: RpcError,
|
22
|
+
{ docsPath, humanMessage }: { docsPath?: string; humanMessage: string },
|
23
|
+
) {
|
24
|
+
super(err, { docsPath, humanMessage })
|
25
|
+
this.code = err.code
|
26
|
+
this.name = err.name
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
export class ParseRpcError extends RpcRequestError {
|
31
|
+
name = 'ParseRpcError'
|
32
|
+
code = -32700
|
33
|
+
|
34
|
+
constructor(err: RpcError) {
|
35
|
+
super(err, {
|
36
|
+
humanMessage:
|
37
|
+
'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',
|
38
|
+
})
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
export class InvalidRequestRpcError extends RpcRequestError {
|
43
|
+
name = 'InvalidRequestRpcError'
|
44
|
+
code = -32600
|
45
|
+
|
46
|
+
constructor(err: RpcError) {
|
47
|
+
super(err, { humanMessage: 'JSON is not a valid request object.' })
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
export class MethodNotFoundRpcError extends RpcRequestError {
|
52
|
+
name = 'MethodNotFoundRpcError'
|
53
|
+
code = -32601
|
54
|
+
|
55
|
+
constructor(err: RpcError) {
|
56
|
+
super(err, {
|
57
|
+
humanMessage: 'The method does not exist / is not available.',
|
58
|
+
})
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
export class InvalidParamsRpcError extends RpcRequestError {
|
63
|
+
name = 'InvalidParamsRpcError'
|
64
|
+
code = -32602
|
65
|
+
|
66
|
+
constructor(err: RpcError) {
|
67
|
+
super(err, {
|
68
|
+
humanMessage: [
|
69
|
+
'Invalid parameters were provided to the RPC method.',
|
70
|
+
'Double check you have provided the correct parameters.',
|
71
|
+
].join('\n'),
|
72
|
+
})
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
export class InternalRpcError extends RpcRequestError {
|
77
|
+
name = 'InternalRpcError'
|
78
|
+
code = -32603
|
79
|
+
|
80
|
+
constructor(err: RpcError) {
|
81
|
+
super(err, { humanMessage: 'An internal error was received.' })
|
82
|
+
}
|
83
|
+
}
|
84
|
+
|
85
|
+
export class InvalidInputRpcError extends RpcRequestError {
|
86
|
+
name = 'InvalidInputRpcError'
|
87
|
+
code = -32000
|
88
|
+
|
89
|
+
constructor(err: RpcError) {
|
90
|
+
super(err, {
|
91
|
+
humanMessage: [
|
92
|
+
'Missing or invalid parameters.',
|
93
|
+
'Double check you have provided the correct parameters.',
|
94
|
+
].join('\n'),
|
95
|
+
})
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
export class ResourceNotFoundRpcError extends RpcRequestError {
|
100
|
+
name = 'ResourceNotFoundRpcError'
|
101
|
+
code = -32001
|
102
|
+
|
103
|
+
constructor(err: RpcError) {
|
104
|
+
super(err, { humanMessage: 'Requested resource not found.' })
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
export class ResourceUnavailableRpcError extends RpcRequestError {
|
109
|
+
name = 'ResourceUnavailableRpcError'
|
110
|
+
code = -32002
|
111
|
+
|
112
|
+
constructor(err: RpcError) {
|
113
|
+
super(err, { humanMessage: 'Requested resource not available.' })
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
export class TransactionRejectedRpcError extends RpcRequestError {
|
118
|
+
name = 'TransactionRejectedRpcError'
|
119
|
+
code = -32003
|
120
|
+
|
121
|
+
constructor(err: RpcError) {
|
122
|
+
super(err, { humanMessage: 'Transaction creation failed.' })
|
123
|
+
}
|
124
|
+
}
|
125
|
+
|
126
|
+
export class MethodNotSupportedRpcError extends RpcRequestError {
|
127
|
+
name = 'MethodNotSupportedRpcError'
|
128
|
+
code = -32004
|
129
|
+
|
130
|
+
constructor(err: RpcError) {
|
131
|
+
super(err, { humanMessage: 'Method is not implemented.' })
|
132
|
+
}
|
133
|
+
}
|
134
|
+
|
135
|
+
export class LimitExceededRpcError extends RpcRequestError {
|
136
|
+
name = 'LimitExceededRpcError'
|
137
|
+
code = -32005
|
138
|
+
|
139
|
+
constructor(err: RpcError) {
|
140
|
+
super(err, { humanMessage: 'Request exceeds defined limit.' })
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
export class JsonRpcVersionUnsupportedError extends RpcRequestError {
|
145
|
+
name = 'JsonRpcVersionUnsupportedError'
|
146
|
+
code = -32006
|
147
|
+
|
148
|
+
constructor(err: RpcError) {
|
149
|
+
super(err, {
|
150
|
+
humanMessage: 'Version of JSON-RPC protocol is not supported.',
|
151
|
+
})
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
export class UnknownRpcError extends RequestError {
|
156
|
+
name = 'UnknownRpcError'
|
157
|
+
|
158
|
+
constructor(err: Error) {
|
159
|
+
super(err, {
|
160
|
+
humanMessage: 'An unknown RPC error occurred.',
|
161
|
+
})
|
162
|
+
}
|
163
|
+
}
|
@@ -0,0 +1,88 @@
|
|
1
|
+
import { expect, test } from 'vitest'
|
2
|
+
import { initialBlockNumber } from '../_test'
|
3
|
+
import { numberToHex } from '../utils'
|
4
|
+
import {
|
5
|
+
HttpRequestError,
|
6
|
+
RpcError,
|
7
|
+
TimeoutError,
|
8
|
+
WebSocketRequestError,
|
9
|
+
} from './rpc'
|
10
|
+
|
11
|
+
test('RpcError', () => {
|
12
|
+
const err = new RpcError({
|
13
|
+
body: { foo: 'bar' },
|
14
|
+
error: { code: 420, message: 'Error' },
|
15
|
+
url: 'https://lol.com',
|
16
|
+
})
|
17
|
+
expect(err).toMatchInlineSnapshot(`
|
18
|
+
[RpcError: RPC Request failed.
|
19
|
+
|
20
|
+
URL: https://lol.com
|
21
|
+
Request body: {"foo":"bar"}
|
22
|
+
|
23
|
+
Details: Error
|
24
|
+
Version: viem@1.0.2
|
25
|
+
Internal Error: {"code":420,"message":"Error"}]
|
26
|
+
`)
|
27
|
+
})
|
28
|
+
|
29
|
+
test('HttpRequestError', () => {
|
30
|
+
const err = new HttpRequestError({
|
31
|
+
url: 'https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
|
32
|
+
body: {
|
33
|
+
method: 'eth_getBlockByNumber',
|
34
|
+
params: [numberToHex(initialBlockNumber), false],
|
35
|
+
},
|
36
|
+
status: 500,
|
37
|
+
details: 'Some error',
|
38
|
+
})
|
39
|
+
expect(err).toMatchInlineSnapshot(`
|
40
|
+
[HttpRequestError: HTTP request failed.
|
41
|
+
|
42
|
+
Status: 500
|
43
|
+
URL: https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
|
44
|
+
Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
|
45
|
+
|
46
|
+
Details: Some error
|
47
|
+
Version: viem@1.0.2]
|
48
|
+
`)
|
49
|
+
})
|
50
|
+
|
51
|
+
test('WebSocketRequestError', () => {
|
52
|
+
const err = new WebSocketRequestError({
|
53
|
+
url: 'ws://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
|
54
|
+
body: {
|
55
|
+
method: 'eth_getBlockByNumber',
|
56
|
+
params: [numberToHex(initialBlockNumber), false],
|
57
|
+
},
|
58
|
+
details: 'Some error',
|
59
|
+
})
|
60
|
+
expect(err).toMatchInlineSnapshot(`
|
61
|
+
[WebSocketRequestError: WebSocket request failed.
|
62
|
+
|
63
|
+
URL: ws://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
|
64
|
+
Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
|
65
|
+
|
66
|
+
Details: Some error
|
67
|
+
Version: viem@1.0.2]
|
68
|
+
`)
|
69
|
+
})
|
70
|
+
|
71
|
+
test('TimeoutError', () => {
|
72
|
+
const err = new TimeoutError({
|
73
|
+
url: 'https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC',
|
74
|
+
body: {
|
75
|
+
method: 'eth_getBlockByNumber',
|
76
|
+
params: [numberToHex(initialBlockNumber), false],
|
77
|
+
},
|
78
|
+
})
|
79
|
+
expect(err).toMatchInlineSnapshot(`
|
80
|
+
[TimeoutError: The request took too long to respond.
|
81
|
+
|
82
|
+
URL: https://eth-mainnet.g.alchemy.com/v2/_gg7wSSi0KMBsdKnGVfHDueq6xMB9EkC
|
83
|
+
Request body: {"method":"eth_getBlockByNumber","params":["0xf86cc2",false]}
|
84
|
+
|
85
|
+
Details: The request timed out.
|
86
|
+
Version: viem@1.0.2]
|
87
|
+
`)
|
88
|
+
})
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import { stringify } from '../utils'
|
2
|
+
import { BaseError } from './base'
|
3
|
+
|
4
|
+
export class HttpRequestError extends BaseError {
|
5
|
+
name = 'HttpRequestError'
|
6
|
+
status
|
7
|
+
|
8
|
+
constructor({
|
9
|
+
body,
|
10
|
+
details,
|
11
|
+
status,
|
12
|
+
url,
|
13
|
+
}: {
|
14
|
+
body: { [key: string]: unknown }
|
15
|
+
details: string
|
16
|
+
status: number
|
17
|
+
url: string
|
18
|
+
}) {
|
19
|
+
super(
|
20
|
+
[
|
21
|
+
'HTTP request failed.',
|
22
|
+
'',
|
23
|
+
`Status: ${status}`,
|
24
|
+
`URL: ${url}`,
|
25
|
+
`Request body: ${stringify(body)}`,
|
26
|
+
].join('\n'),
|
27
|
+
{
|
28
|
+
details,
|
29
|
+
},
|
30
|
+
)
|
31
|
+
this.status = status
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
export class WebSocketRequestError extends BaseError {
|
36
|
+
name = 'WebSocketRequestError'
|
37
|
+
|
38
|
+
constructor({
|
39
|
+
body,
|
40
|
+
details,
|
41
|
+
url,
|
42
|
+
}: {
|
43
|
+
body: { [key: string]: unknown }
|
44
|
+
details: string
|
45
|
+
url: string
|
46
|
+
}) {
|
47
|
+
super(
|
48
|
+
[
|
49
|
+
'WebSocket request failed.',
|
50
|
+
'',
|
51
|
+
`URL: ${url}`,
|
52
|
+
`Request body: ${stringify(body)}`,
|
53
|
+
].join('\n'),
|
54
|
+
{
|
55
|
+
details,
|
56
|
+
},
|
57
|
+
)
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
export class RpcError extends BaseError {
|
62
|
+
code: number
|
63
|
+
|
64
|
+
name = 'RpcError'
|
65
|
+
|
66
|
+
constructor({
|
67
|
+
body,
|
68
|
+
error,
|
69
|
+
url,
|
70
|
+
}: {
|
71
|
+
body: { [key: string]: unknown }
|
72
|
+
error: { code: number; message: string }
|
73
|
+
url: string
|
74
|
+
}) {
|
75
|
+
super(
|
76
|
+
[
|
77
|
+
'RPC Request failed.',
|
78
|
+
'',
|
79
|
+
`URL: ${url}`,
|
80
|
+
`Request body: ${stringify(body)}`,
|
81
|
+
].join('\n'),
|
82
|
+
{
|
83
|
+
cause: error as any,
|
84
|
+
details: error.message,
|
85
|
+
},
|
86
|
+
)
|
87
|
+
this.code = error.code
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
export class TimeoutError extends BaseError {
|
92
|
+
name = 'TimeoutError'
|
93
|
+
|
94
|
+
constructor({
|
95
|
+
body,
|
96
|
+
url,
|
97
|
+
}: {
|
98
|
+
body: { [key: string]: unknown }
|
99
|
+
url: string
|
100
|
+
}) {
|
101
|
+
super(
|
102
|
+
[
|
103
|
+
'The request took too long to respond.',
|
104
|
+
'',
|
105
|
+
`URL: ${url}`,
|
106
|
+
`Request body: ${stringify(body)}`,
|
107
|
+
].join('\n'),
|
108
|
+
{
|
109
|
+
details: 'The request timed out.',
|
110
|
+
},
|
111
|
+
)
|
112
|
+
}
|
113
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import { describe, expect, test } from 'vitest'
|
2
|
+
import {
|
3
|
+
InvalidGasArgumentsError,
|
4
|
+
TransactionNotFoundError,
|
5
|
+
TransactionReceiptNotFoundError,
|
6
|
+
WaitForTransactionReceiptTimeoutError,
|
7
|
+
} from './transaction'
|
8
|
+
|
9
|
+
describe('TransactionNotFoundError', () => {
|
10
|
+
test('no args', async () => {
|
11
|
+
expect(new TransactionNotFoundError({})).toMatchInlineSnapshot(`
|
12
|
+
[TransactionNotFoundError: Transaction could not be found.
|
13
|
+
|
14
|
+
Version: viem@1.0.2]
|
15
|
+
`)
|
16
|
+
})
|
17
|
+
|
18
|
+
test('blockHash', async () => {
|
19
|
+
expect(
|
20
|
+
new TransactionNotFoundError({ blockHash: '0x123', index: 420 }),
|
21
|
+
).toMatchInlineSnapshot(`
|
22
|
+
[TransactionNotFoundError: Transaction at block hash "0x123" at index "420" could not be found.
|
23
|
+
|
24
|
+
Version: viem@1.0.2]
|
25
|
+
`)
|
26
|
+
})
|
27
|
+
|
28
|
+
test('blockTag', async () => {
|
29
|
+
expect(
|
30
|
+
new TransactionNotFoundError({ blockTag: 'latest', index: 420 }),
|
31
|
+
).toMatchInlineSnapshot(`
|
32
|
+
[TransactionNotFoundError: Transaction at block time "latest" at index "420" could not be found.
|
33
|
+
|
34
|
+
Version: viem@1.0.2]
|
35
|
+
`)
|
36
|
+
})
|
37
|
+
|
38
|
+
test('blockNumber', async () => {
|
39
|
+
expect(
|
40
|
+
new TransactionNotFoundError({ blockNumber: 42069n, index: 420 }),
|
41
|
+
).toMatchInlineSnapshot(`
|
42
|
+
[TransactionNotFoundError: Transaction at block number "42069" at index "420" could not be found.
|
43
|
+
|
44
|
+
Version: viem@1.0.2]
|
45
|
+
`)
|
46
|
+
})
|
47
|
+
|
48
|
+
test('hash', async () => {
|
49
|
+
expect(
|
50
|
+
new TransactionNotFoundError({ hash: '0x123' }),
|
51
|
+
).toMatchInlineSnapshot(`
|
52
|
+
[TransactionNotFoundError: Transaction with hash "0x123" could not be found.
|
53
|
+
|
54
|
+
Version: viem@1.0.2]
|
55
|
+
`)
|
56
|
+
})
|
57
|
+
})
|
58
|
+
|
59
|
+
test('TransactionReceiptNotFoundError', () => {
|
60
|
+
const error = new TransactionReceiptNotFoundError({
|
61
|
+
hash: '0xa4b1f606b66105fa45cb5db23d2f6597075701e7f0e2367f4e6a39d17a8cf98a',
|
62
|
+
})
|
63
|
+
|
64
|
+
expect(error.message).toMatchInlineSnapshot(`
|
65
|
+
"Transaction receipt with hash \\"0xa4b1f606b66105fa45cb5db23d2f6597075701e7f0e2367f4e6a39d17a8cf98a\\" could not be found. The Transaction may not be processed on a block yet.
|
66
|
+
|
67
|
+
Version: viem@1.0.2"
|
68
|
+
`)
|
69
|
+
})
|
70
|
+
|
71
|
+
test('WaitForTransactionReceiptTimeoutError', () => {
|
72
|
+
expect(() => {
|
73
|
+
throw new WaitForTransactionReceiptTimeoutError({ hash: '0x123' })
|
74
|
+
}).toThrowError(WaitForTransactionReceiptTimeoutError)
|
75
|
+
})
|
76
|
+
|
77
|
+
test('InvalidGasArgumentsError', () => {
|
78
|
+
expect(new InvalidGasArgumentsError()).toMatchInlineSnapshot(`
|
79
|
+
[InvalidGasArgumentsError: \`maxFeePerGas\` cannot be less than \`maxPriorityFeePerGas\`
|
80
|
+
|
81
|
+
Version: viem@1.0.2]
|
82
|
+
`)
|
83
|
+
})
|
@@ -0,0 +1,54 @@
|
|
1
|
+
import { BlockTag, Hash } from '../types'
|
2
|
+
import { BaseError } from './base'
|
3
|
+
|
4
|
+
export class InvalidGasArgumentsError extends BaseError {
|
5
|
+
name = 'InvalidGasArgumentsError'
|
6
|
+
constructor() {
|
7
|
+
super('`maxFeePerGas` cannot be less than `maxPriorityFeePerGas`')
|
8
|
+
}
|
9
|
+
}
|
10
|
+
|
11
|
+
export class TransactionNotFoundError extends BaseError {
|
12
|
+
name = 'TransactionNotFoundError'
|
13
|
+
constructor({
|
14
|
+
blockHash,
|
15
|
+
blockNumber,
|
16
|
+
blockTag,
|
17
|
+
hash,
|
18
|
+
index,
|
19
|
+
}: {
|
20
|
+
blockHash?: Hash
|
21
|
+
blockNumber?: bigint
|
22
|
+
blockTag?: BlockTag
|
23
|
+
hash?: Hash
|
24
|
+
index?: number
|
25
|
+
}) {
|
26
|
+
let identifier = 'Transaction'
|
27
|
+
if (blockTag && index !== undefined)
|
28
|
+
identifier = `Transaction at block time "${blockTag}" at index "${index}"`
|
29
|
+
if (blockHash && index !== undefined)
|
30
|
+
identifier = `Transaction at block hash "${blockHash}" at index "${index}"`
|
31
|
+
if (blockNumber && index !== undefined)
|
32
|
+
identifier = `Transaction at block number "${blockNumber}" at index "${index}"`
|
33
|
+
if (hash) identifier = `Transaction with hash "${hash}"`
|
34
|
+
super(`${identifier} could not be found.`)
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
export class TransactionReceiptNotFoundError extends BaseError {
|
39
|
+
name = 'TransactionReceiptNotFoundError'
|
40
|
+
constructor({ hash }: { hash: Hash }) {
|
41
|
+
super(
|
42
|
+
`Transaction receipt with hash "${hash}" could not be found. The Transaction may not be processed on a block yet.`,
|
43
|
+
)
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
export class WaitForTransactionReceiptTimeoutError extends BaseError {
|
48
|
+
name = 'WaitForTransactionReceiptTimeoutError'
|
49
|
+
constructor({ hash }: { hash: Hash }) {
|
50
|
+
super(
|
51
|
+
`Timed out while waiting for transaction with hash "${hash}" to be confirmed.`,
|
52
|
+
)
|
53
|
+
}
|
54
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { expect, test } from 'vitest'
|
2
|
+
import { UrlRequiredError } from './transport'
|
3
|
+
|
4
|
+
test('UrlRequiredError', () => {
|
5
|
+
expect(new UrlRequiredError()).toMatchInlineSnapshot(`
|
6
|
+
[ViemError: No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.
|
7
|
+
|
8
|
+
Docs: https://viem.sh/docs/clients/intro
|
9
|
+
|
10
|
+
Version: viem@1.0.2]
|
11
|
+
`)
|
12
|
+
})
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { BaseError } from './base'
|
2
|
+
|
3
|
+
export class UrlRequiredError extends BaseError {
|
4
|
+
constructor() {
|
5
|
+
super(
|
6
|
+
'No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.',
|
7
|
+
{
|
8
|
+
docsPath: '/docs/clients/intro',
|
9
|
+
},
|
10
|
+
)
|
11
|
+
}
|
12
|
+
}
|