viem 0.0.0-portable-types-20230523145621 → 0.0.0-tmm-sign-typed-data-types.20230619T221425
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/README.md +12 -0
- package/dist/cjs/actions/ens/getEnsAddress.js +34 -23
- package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
- package/dist/cjs/actions/getContract.js +22 -16
- package/dist/cjs/actions/getContract.js.map +1 -1
- package/dist/cjs/actions/public/call.js +1 -1
- package/dist/cjs/actions/public/call.js.map +1 -1
- package/dist/cjs/actions/public/createContractEventFilter.js +2 -1
- package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/createEventFilter.js +2 -1
- package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/estimateContractGas.js +1 -1
- package/dist/cjs/actions/public/estimateContractGas.js.map +1 -1
- package/dist/cjs/actions/public/estimateGas.js.map +1 -1
- package/dist/cjs/actions/public/getBlock.js.map +1 -1
- package/dist/cjs/actions/public/getBlockTransactionCount.js +1 -1
- package/dist/cjs/actions/public/getBlockTransactionCount.js.map +1 -1
- package/dist/cjs/actions/public/getChainId.js +3 -1
- package/dist/cjs/actions/public/getChainId.js.map +1 -1
- package/dist/cjs/actions/public/getFilterChanges.js +15 -3
- package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
- package/dist/cjs/actions/public/getFilterLogs.js +14 -2
- package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
- package/dist/cjs/actions/public/getGasPrice.js.map +1 -1
- package/dist/cjs/actions/public/getLogs.js +15 -3
- package/dist/cjs/actions/public/getLogs.js.map +1 -1
- package/dist/cjs/actions/public/getTransactionCount.js.map +1 -1
- package/dist/cjs/actions/public/verifyTypedData.js +6 -1
- package/dist/cjs/actions/public/verifyTypedData.js.map +1 -1
- package/dist/cjs/actions/public/watchContractEvent.js +3 -1
- package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
- package/dist/cjs/actions/public/watchEvent.js +3 -1
- package/dist/cjs/actions/public/watchEvent.js.map +1 -1
- package/dist/cjs/actions/test/getAutomine.js +4 -0
- package/dist/cjs/actions/test/getAutomine.js.map +1 -1
- package/dist/cjs/actions/test/mine.js +10 -4
- package/dist/cjs/actions/test/mine.js.map +1 -1
- package/dist/cjs/actions/test/sendUnsignedTransaction.js +21 -3
- package/dist/cjs/actions/test/sendUnsignedTransaction.js.map +1 -1
- package/dist/cjs/actions/test/setAutomine.js +11 -4
- package/dist/cjs/actions/test/setAutomine.js.map +1 -1
- package/dist/cjs/actions/test/setBalance.js +10 -4
- package/dist/cjs/actions/test/setBalance.js.map +1 -1
- package/dist/cjs/actions/wallet/sendTransaction.js +1 -1
- package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
- package/dist/cjs/actions/wallet/signMessage.js +8 -1
- package/dist/cjs/actions/wallet/signMessage.js.map +1 -1
- package/dist/cjs/chains.js +14 -2
- package/dist/cjs/chains.js.map +1 -1
- package/dist/cjs/clients/createClient.js +1 -1
- package/dist/cjs/clients/createClient.js.map +1 -1
- package/dist/cjs/clients/createPublicClient.js.map +1 -1
- package/dist/cjs/clients/createTestClient.js.map +1 -1
- package/dist/cjs/clients/createWalletClient.js.map +1 -1
- package/dist/cjs/clients/decorators/public.js.map +1 -1
- package/dist/cjs/clients/decorators/test.js.map +1 -1
- package/dist/cjs/clients/transports/createTransport.js.map +1 -1
- package/dist/cjs/clients/transports/custom.js.map +1 -1
- package/dist/cjs/clients/transports/fallback.js.map +1 -1
- package/dist/cjs/clients/transports/http.js +25 -7
- package/dist/cjs/clients/transports/http.js.map +1 -1
- package/dist/cjs/clients/transports/webSocket.js +22 -14
- package/dist/cjs/clients/transports/webSocket.js.map +1 -1
- package/dist/cjs/errors/abi.js +15 -1
- package/dist/cjs/errors/abi.js.map +1 -1
- package/dist/cjs/errors/base.js +4 -11
- package/dist/cjs/errors/base.js.map +1 -1
- package/dist/cjs/errors/request.js.map +1 -1
- package/dist/cjs/errors/rpc.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/errors/version.js.map +1 -1
- package/dist/cjs/index.js +26 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/eip1193.js.map +1 -1
- package/dist/cjs/utils/abi/decodeEventLog.js +33 -19
- package/dist/cjs/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/cjs/utils/abi/encodeEventTopics.js +11 -7
- package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/cjs/utils/abi/getAbiItem.js +2 -0
- package/dist/cjs/utils/abi/getAbiItem.js.map +1 -1
- package/dist/cjs/utils/encoding/toBytes.js.map +1 -1
- package/dist/cjs/utils/encoding/toHex.js.map +1 -1
- package/dist/cjs/utils/ens/encodeLabelhash.js +8 -0
- package/dist/cjs/utils/ens/encodeLabelhash.js.map +1 -0
- package/dist/cjs/utils/ens/encodedLabelToLabelhash.js +18 -0
- package/dist/cjs/utils/ens/encodedLabelToLabelhash.js.map +1 -0
- package/dist/cjs/utils/ens/labelhash.js +2 -1
- package/dist/cjs/utils/ens/labelhash.js.map +1 -1
- package/dist/cjs/utils/ens/namehash.js +5 -1
- package/dist/cjs/utils/ens/namehash.js.map +1 -1
- package/dist/cjs/utils/ens/packetToBytes.js +10 -9
- package/dist/cjs/utils/ens/packetToBytes.js.map +1 -1
- package/dist/cjs/utils/filters/createFilterRequestScope.js.map +1 -1
- package/dist/cjs/utils/formatters/block.js +3 -1
- package/dist/cjs/utils/formatters/block.js.map +1 -1
- package/dist/cjs/utils/formatters/log.js +2 -2
- package/dist/cjs/utils/formatters/transaction.js +3 -1
- package/dist/cjs/utils/formatters/transaction.js.map +1 -1
- package/dist/cjs/utils/formatters/transactionReceipt.js +1 -1
- package/dist/cjs/utils/formatters/transactionReceipt.js.map +1 -1
- package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
- package/dist/cjs/utils/hash/getEventSelector.js +5 -1
- package/dist/cjs/utils/hash/getEventSelector.js.map +1 -1
- package/dist/cjs/utils/hash/getFunctionSelector.js +5 -1
- package/dist/cjs/utils/hash/getFunctionSelector.js.map +1 -1
- package/dist/cjs/utils/hash/hashFunction.js +6 -4
- package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/observe.js.map +1 -1
- package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -1
- package/dist/cjs/utils/promise/withCache.js +8 -4
- package/dist/cjs/utils/promise/withCache.js.map +1 -1
- package/dist/cjs/utils/rpc.js +12 -17
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/cjs/utils/signature/hashMessage.js +7 -1
- package/dist/cjs/utils/signature/hashMessage.js.map +1 -1
- package/dist/cjs/utils/transaction/getTransactionType.js.map +1 -1
- package/dist/cjs/utils/transaction/serializeTransaction.js.map +1 -1
- package/dist/cjs/utils/typedData.js.map +1 -1
- package/dist/cjs/utils/unit/parseUnits.js +13 -3
- package/dist/cjs/utils/unit/parseUnits.js.map +1 -1
- package/dist/esm/accounts/generateMnemonic.js +7 -0
- package/dist/esm/accounts/generateMnemonic.js.map +1 -1
- package/dist/esm/accounts/generatePrivateKey.js +5 -0
- package/dist/esm/accounts/generatePrivateKey.js.map +1 -1
- package/dist/esm/accounts/hdKeyToAccount.js +5 -0
- package/dist/esm/accounts/hdKeyToAccount.js.map +1 -1
- package/dist/esm/accounts/mnemonicToAccount.js +5 -0
- package/dist/esm/accounts/mnemonicToAccount.js.map +1 -1
- package/dist/esm/accounts/privateKeyToAccount.js +5 -0
- package/dist/esm/accounts/privateKeyToAccount.js.map +1 -1
- package/dist/esm/accounts/toAccount.js +5 -0
- package/dist/esm/accounts/toAccount.js.map +1 -1
- package/dist/esm/accounts/utils/publicKeyToAddress.js +7 -0
- package/dist/esm/accounts/utils/publicKeyToAddress.js.map +1 -1
- package/dist/esm/accounts/utils/sign.js +8 -0
- package/dist/esm/accounts/utils/sign.js.map +1 -1
- package/dist/esm/accounts/utils/signMessage.js +6 -0
- package/dist/esm/accounts/utils/signMessage.js.map +1 -1
- package/dist/esm/accounts/utils/signTypedData.js +6 -0
- package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
- package/dist/esm/actions/ens/getEnsAddress.js +62 -23
- package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
- package/dist/esm/actions/ens/getEnsAvatar.js +28 -0
- package/dist/esm/actions/ens/getEnsAvatar.js.map +1 -1
- package/dist/esm/actions/ens/getEnsName.js +27 -0
- package/dist/esm/actions/ens/getEnsName.js.map +1 -1
- package/dist/esm/actions/ens/getEnsResolver.js +28 -0
- package/dist/esm/actions/ens/getEnsResolver.js.map +1 -1
- package/dist/esm/actions/ens/getEnsText.js +29 -0
- package/dist/esm/actions/ens/getEnsText.js.map +1 -1
- package/dist/esm/actions/getContract.js +58 -16
- package/dist/esm/actions/getContract.js.map +1 -1
- package/dist/esm/actions/public/call.js +32 -1
- package/dist/esm/actions/public/call.js.map +1 -1
- package/dist/esm/actions/public/createBlockFilter.js +21 -0
- package/dist/esm/actions/public/createBlockFilter.js.map +1 -1
- package/dist/esm/actions/public/createContractEventFilter.js +24 -1
- package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/esm/actions/public/createEventFilter.js +25 -1
- package/dist/esm/actions/public/createEventFilter.js.map +1 -1
- package/dist/esm/actions/public/createPendingTransactionFilter.js +21 -0
- package/dist/esm/actions/public/createPendingTransactionFilter.js.map +1 -1
- package/dist/esm/actions/public/estimateContractGas.js +28 -1
- package/dist/esm/actions/public/estimateContractGas.js.map +1 -1
- package/dist/esm/actions/public/estimateGas.js +26 -0
- package/dist/esm/actions/public/estimateGas.js.map +1 -1
- package/dist/esm/actions/public/getBalance.js +35 -0
- package/dist/esm/actions/public/getBalance.js.map +1 -1
- package/dist/esm/actions/public/getBlock.js +24 -0
- package/dist/esm/actions/public/getBlock.js.map +1 -1
- package/dist/esm/actions/public/getBlockNumber.js +23 -0
- package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
- package/dist/esm/actions/public/getBlockTransactionCount.js +24 -1
- package/dist/esm/actions/public/getBlockTransactionCount.js.map +1 -1
- package/dist/esm/actions/public/getBytecode.js +23 -0
- package/dist/esm/actions/public/getBytecode.js.map +1 -1
- package/dist/esm/actions/public/getChainId.js +24 -1
- package/dist/esm/actions/public/getChainId.js.map +1 -1
- package/dist/esm/actions/public/getFeeHistory.js +24 -0
- package/dist/esm/actions/public/getFeeHistory.js.map +1 -1
- package/dist/esm/actions/public/getFilterChanges.js +99 -3
- package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
- package/dist/esm/actions/public/getFilterLogs.js +43 -2
- package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
- package/dist/esm/actions/public/getGasPrice.js +20 -0
- package/dist/esm/actions/public/getGasPrice.js.map +1 -1
- package/dist/esm/actions/public/getLogs.js +39 -3
- package/dist/esm/actions/public/getLogs.js.map +1 -1
- package/dist/esm/actions/public/getStorageAt.js +24 -0
- package/dist/esm/actions/public/getStorageAt.js.map +1 -1
- package/dist/esm/actions/public/getTransaction.js +24 -0
- package/dist/esm/actions/public/getTransaction.js.map +1 -1
- package/dist/esm/actions/public/getTransactionConfirmations.js +24 -0
- package/dist/esm/actions/public/getTransactionConfirmations.js.map +1 -1
- package/dist/esm/actions/public/getTransactionCount.js +23 -0
- package/dist/esm/actions/public/getTransactionCount.js.map +1 -1
- package/dist/esm/actions/public/getTransactionReceipt.js +24 -0
- package/dist/esm/actions/public/getTransactionReceipt.js.map +1 -1
- package/dist/esm/actions/public/multicall.js +40 -0
- package/dist/esm/actions/public/multicall.js.map +1 -1
- package/dist/esm/actions/public/readContract.js +31 -0
- package/dist/esm/actions/public/readContract.js.map +1 -1
- package/dist/esm/actions/public/simulateContract.js +31 -0
- package/dist/esm/actions/public/simulateContract.js.map +1 -1
- package/dist/esm/actions/public/uninstallFilter.js +24 -0
- package/dist/esm/actions/public/uninstallFilter.js.map +1 -1
- package/dist/esm/actions/public/verifyHash.js +10 -0
- package/dist/esm/actions/public/verifyHash.js.map +1 -1
- package/dist/esm/actions/public/verifyMessage.js +11 -0
- package/dist/esm/actions/public/verifyMessage.js.map +1 -1
- package/dist/esm/actions/public/verifyTypedData.js +16 -2
- package/dist/esm/actions/public/verifyTypedData.js.map +1 -1
- package/dist/esm/actions/public/waitForTransactionReceipt.js +52 -0
- package/dist/esm/actions/public/waitForTransactionReceipt.js.map +1 -1
- package/dist/esm/actions/public/watchBlockNumber.js +31 -0
- package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
- package/dist/esm/actions/public/watchBlocks.js +35 -1
- package/dist/esm/actions/public/watchBlocks.js.map +1 -1
- package/dist/esm/actions/public/watchContractEvent.js +39 -1
- package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
- package/dist/esm/actions/public/watchEvent.js +41 -1
- package/dist/esm/actions/public/watchEvent.js.map +1 -1
- package/dist/esm/actions/public/watchPendingTransactions.js +29 -0
- package/dist/esm/actions/public/watchPendingTransactions.js.map +1 -1
- package/dist/esm/actions/test/dropTransaction.js +22 -0
- package/dist/esm/actions/test/dropTransaction.js.map +1 -1
- package/dist/esm/actions/test/getAutomine.js +24 -0
- package/dist/esm/actions/test/getAutomine.js.map +1 -1
- package/dist/esm/actions/test/getTxpoolContent.js +20 -0
- package/dist/esm/actions/test/getTxpoolContent.js.map +1 -1
- package/dist/esm/actions/test/getTxpoolStatus.js +20 -0
- package/dist/esm/actions/test/getTxpoolStatus.js.map +1 -1
- package/dist/esm/actions/test/impersonateAccount.js +22 -0
- package/dist/esm/actions/test/impersonateAccount.js.map +1 -1
- package/dist/esm/actions/test/increaseTime.js +22 -0
- package/dist/esm/actions/test/increaseTime.js.map +1 -1
- package/dist/esm/actions/test/inspectTxpool.js +20 -0
- package/dist/esm/actions/test/inspectTxpool.js.map +1 -1
- package/dist/esm/actions/test/mine.js +30 -4
- package/dist/esm/actions/test/mine.js.map +1 -1
- package/dist/esm/actions/test/removeBlockTimestampInterval.js +19 -0
- package/dist/esm/actions/test/removeBlockTimestampInterval.js.map +1 -1
- package/dist/esm/actions/test/reset.js +20 -0
- package/dist/esm/actions/test/reset.js.map +1 -1
- package/dist/esm/actions/test/revert.js +20 -0
- package/dist/esm/actions/test/revert.js.map +1 -1
- package/dist/esm/actions/test/sendUnsignedTransaction.js +48 -4
- package/dist/esm/actions/test/sendUnsignedTransaction.js.map +1 -1
- package/dist/esm/actions/test/setAutomine.js +30 -4
- package/dist/esm/actions/test/setAutomine.js.map +1 -1
- package/dist/esm/actions/test/setBalance.js +33 -4
- package/dist/esm/actions/test/setBalance.js.map +1 -1
- package/dist/esm/actions/test/setBlockGasLimit.js +20 -0
- package/dist/esm/actions/test/setBlockGasLimit.js.map +1 -1
- package/dist/esm/actions/test/setBlockTimestampInterval.js +20 -0
- package/dist/esm/actions/test/setBlockTimestampInterval.js.map +1 -1
- package/dist/esm/actions/test/setCode.js +23 -0
- package/dist/esm/actions/test/setCode.js.map +1 -1
- package/dist/esm/actions/test/setCoinbase.js +22 -0
- package/dist/esm/actions/test/setCoinbase.js.map +1 -1
- package/dist/esm/actions/test/setIntervalMining.js +20 -0
- package/dist/esm/actions/test/setIntervalMining.js.map +1 -1
- package/dist/esm/actions/test/setLoggingEnabled.js +19 -0
- package/dist/esm/actions/test/setLoggingEnabled.js.map +1 -1
- package/dist/esm/actions/test/setMinGasPrice.js +24 -0
- package/dist/esm/actions/test/setMinGasPrice.js.map +1 -1
- package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js +22 -0
- package/dist/esm/actions/test/setNextBlockBaseFeePerGas.js.map +1 -1
- package/dist/esm/actions/test/setNextBlockTimestamp.js +20 -0
- package/dist/esm/actions/test/setNextBlockTimestamp.js.map +1 -1
- package/dist/esm/actions/test/setNonce.js +23 -0
- package/dist/esm/actions/test/setNonce.js.map +1 -1
- package/dist/esm/actions/test/setRpcUrl.js +20 -0
- package/dist/esm/actions/test/setRpcUrl.js.map +1 -1
- package/dist/esm/actions/test/setStorageAt.js +24 -0
- package/dist/esm/actions/test/setStorageAt.js.map +1 -1
- package/dist/esm/actions/test/snapshot.js +19 -0
- package/dist/esm/actions/test/snapshot.js.map +1 -1
- package/dist/esm/actions/test/stopImpersonatingAccount.js +22 -0
- package/dist/esm/actions/test/stopImpersonatingAccount.js.map +1 -1
- package/dist/esm/actions/wallet/addChain.js +19 -0
- package/dist/esm/actions/wallet/addChain.js.map +1 -1
- package/dist/esm/actions/wallet/deployContract.js +27 -0
- package/dist/esm/actions/wallet/deployContract.js.map +1 -1
- package/dist/esm/actions/wallet/getAddresses.js +20 -0
- package/dist/esm/actions/wallet/getAddresses.js.map +1 -1
- package/dist/esm/actions/wallet/getPermissions.js +20 -0
- package/dist/esm/actions/wallet/getPermissions.js.map +1 -1
- package/dist/esm/actions/wallet/requestAddresses.js +24 -0
- package/dist/esm/actions/wallet/requestAddresses.js.map +1 -1
- package/dist/esm/actions/wallet/requestPermissions.js +23 -0
- package/dist/esm/actions/wallet/requestPermissions.js.map +1 -1
- package/dist/esm/actions/wallet/sendTransaction.js +48 -1
- package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
- package/dist/esm/actions/wallet/signMessage.js +55 -2
- package/dist/esm/actions/wallet/signMessage.js.map +1 -1
- package/dist/esm/actions/wallet/signTypedData.js +100 -0
- package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
- package/dist/esm/actions/wallet/switchChain.js +20 -0
- package/dist/esm/actions/wallet/switchChain.js.map +1 -1
- package/dist/esm/actions/wallet/watchAsset.js +28 -0
- package/dist/esm/actions/wallet/watchAsset.js.map +1 -1
- package/dist/esm/actions/wallet/writeContract.js +50 -0
- package/dist/esm/actions/wallet/writeContract.js.map +1 -1
- package/dist/esm/chains.js +99 -87
- package/dist/esm/chains.js.map +1 -1
- package/dist/esm/clients/createClient.js +4 -1
- package/dist/esm/clients/createClient.js.map +1 -1
- package/dist/esm/clients/createPublicClient.js +19 -0
- package/dist/esm/clients/createPublicClient.js.map +1 -1
- package/dist/esm/clients/createTestClient.js +23 -0
- package/dist/esm/clients/createTestClient.js.map +1 -1
- package/dist/esm/clients/createWalletClient.js +36 -0
- package/dist/esm/clients/createWalletClient.js.map +1 -1
- package/dist/esm/clients/decorators/public.js.map +1 -1
- package/dist/esm/clients/decorators/test.js.map +1 -1
- package/dist/esm/clients/transports/createTransport.js +3 -0
- package/dist/esm/clients/transports/createTransport.js.map +1 -1
- package/dist/esm/clients/transports/custom.js +3 -0
- package/dist/esm/clients/transports/custom.js.map +1 -1
- package/dist/esm/clients/transports/fallback.js +11 -0
- package/dist/esm/clients/transports/fallback.js.map +1 -1
- package/dist/esm/clients/transports/http.js +31 -8
- package/dist/esm/clients/transports/http.js.map +1 -1
- package/dist/esm/clients/transports/webSocket.js +28 -15
- package/dist/esm/clients/transports/webSocket.js.map +1 -1
- package/dist/esm/constants/abis.js +6 -0
- package/dist/esm/constants/abis.js.map +1 -1
- package/dist/esm/constants/solidity.js +1 -0
- package/dist/esm/constants/solidity.js.map +1 -1
- package/dist/esm/contract.js +0 -1
- package/dist/esm/contract.js.map +1 -1
- package/dist/esm/errors/abi.js +15 -1
- package/dist/esm/errors/abi.js.map +1 -1
- package/dist/esm/errors/base.js +4 -11
- package/dist/esm/errors/base.js.map +1 -1
- package/dist/esm/errors/node.js +9 -0
- package/dist/esm/errors/node.js.map +1 -1
- package/dist/esm/errors/request.js.map +1 -1
- package/dist/esm/errors/rpc.js +103 -0
- package/dist/esm/errors/rpc.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/errors/version.js.map +1 -1
- package/dist/esm/index.js +2 -52
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/types/account.js +1 -1
- package/dist/esm/types/account.js.map +1 -1
- package/dist/esm/types/eip1193.js +2 -0
- package/dist/esm/types/eip1193.js.map +1 -1
- package/dist/esm/utils/abi/decodeAbiParameters.js +29 -0
- package/dist/esm/utils/abi/decodeAbiParameters.js.map +1 -1
- package/dist/esm/utils/abi/decodeEventLog.js +35 -19
- package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
- package/dist/esm/utils/abi/encodeAbiParameters.js +10 -1
- package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
- package/dist/esm/utils/abi/encodeEventTopics.js +11 -7
- package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
- package/dist/esm/utils/abi/getAbiItem.js +9 -0
- package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
- package/dist/esm/utils/accounts.js +3 -0
- package/dist/esm/utils/accounts.js.map +1 -1
- package/dist/esm/utils/buildRequest.js +2 -0
- package/dist/esm/utils/buildRequest.js.map +1 -1
- package/dist/esm/utils/data/size.js +6 -0
- package/dist/esm/utils/data/size.js.map +1 -1
- package/dist/esm/utils/data/slice.js +21 -0
- package/dist/esm/utils/data/slice.js.map +1 -1
- package/dist/esm/utils/encoding/fromBytes.js +79 -0
- package/dist/esm/utils/encoding/fromBytes.js.map +1 -1
- package/dist/esm/utils/encoding/fromHex.js +106 -0
- package/dist/esm/utils/encoding/fromHex.js.map +1 -1
- package/dist/esm/utils/encoding/toBytes.js +102 -1
- package/dist/esm/utils/encoding/toBytes.js.map +1 -1
- package/dist/esm/utils/encoding/toHex.js +108 -2
- package/dist/esm/utils/encoding/toHex.js.map +1 -1
- package/dist/esm/utils/ens/avatar/parseAvatarRecord.js +6 -2
- package/dist/esm/utils/ens/avatar/parseAvatarRecord.js.map +1 -1
- package/dist/esm/utils/ens/avatar/utils.js +10 -0
- package/dist/esm/utils/ens/avatar/utils.js.map +1 -1
- package/dist/esm/utils/ens/encodeLabelhash.js +4 -0
- package/dist/esm/utils/ens/encodeLabelhash.js.map +1 -0
- package/dist/esm/utils/ens/encodedLabelToLabelhash.js +14 -0
- package/dist/esm/utils/ens/encodedLabelToLabelhash.js.map +1 -0
- package/dist/esm/utils/ens/labelhash.js +11 -1
- package/dist/esm/utils/ens/labelhash.js.map +1 -1
- package/dist/esm/utils/ens/namehash.js +18 -2
- package/dist/esm/utils/ens/namehash.js.map +1 -1
- package/dist/esm/utils/ens/normalize.js +10 -0
- package/dist/esm/utils/ens/normalize.js.map +1 -1
- package/dist/esm/utils/ens/packetToBytes.js +16 -9
- package/dist/esm/utils/ens/packetToBytes.js.map +1 -1
- package/dist/esm/utils/filters/createFilterRequestScope.js +5 -0
- package/dist/esm/utils/filters/createFilterRequestScope.js.map +1 -1
- package/dist/esm/utils/formatters/block.js +4 -1
- package/dist/esm/utils/formatters/block.js.map +1 -1
- package/dist/esm/utils/formatters/extract.js +3 -0
- package/dist/esm/utils/formatters/extract.js.map +1 -1
- package/dist/esm/utils/formatters/format.js +3 -0
- package/dist/esm/utils/formatters/format.js.map +1 -1
- package/dist/esm/utils/formatters/log.js +2 -2
- package/dist/esm/utils/formatters/transaction.js +3 -1
- package/dist/esm/utils/formatters/transaction.js.map +1 -1
- package/dist/esm/utils/formatters/transactionReceipt.js +2 -2
- package/dist/esm/utils/formatters/transactionReceipt.js.map +1 -1
- package/dist/esm/utils/formatters/transactionRequest.js +1 -1
- package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
- package/dist/esm/utils/hash/getEventSelector.js +6 -2
- package/dist/esm/utils/hash/getEventSelector.js.map +1 -1
- package/dist/esm/utils/hash/getFunctionSelector.js +6 -2
- package/dist/esm/utils/hash/getFunctionSelector.js.map +1 -1
- package/dist/esm/utils/hash/hashFunction.js +4 -3
- package/dist/esm/utils/hash/hashFunction.js.map +1 -1
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/observe.js +7 -2
- package/dist/esm/utils/observe.js.map +1 -1
- package/dist/esm/utils/poll.js +3 -0
- package/dist/esm/utils/poll.js.map +1 -1
- package/dist/esm/utils/promise/createBatchScheduler.js +1 -1
- package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -1
- package/dist/esm/utils/promise/withCache.js +23 -6
- package/dist/esm/utils/promise/withCache.js.map +1 -1
- package/dist/esm/utils/regex.js +4 -0
- package/dist/esm/utils/regex.js.map +1 -1
- package/dist/esm/utils/rpc.js +27 -19
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/esm/utils/signature/hashMessage.js +8 -2
- package/dist/esm/utils/signature/hashMessage.js.map +1 -1
- package/dist/esm/utils/signature/hashTypedData.js +3 -0
- package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
- package/dist/esm/utils/signature/recoverPublicKey.js +2 -0
- package/dist/esm/utils/signature/recoverPublicKey.js.map +1 -1
- package/dist/esm/utils/signature/verifyMessage.js +12 -0
- package/dist/esm/utils/signature/verifyMessage.js.map +1 -1
- package/dist/esm/utils/signature/verifyTypedData.js +12 -0
- package/dist/esm/utils/signature/verifyTypedData.js.map +1 -1
- package/dist/esm/utils/transaction/getTransactionType.js.map +1 -1
- package/dist/esm/utils/transaction/prepareRequest.js +5 -1
- package/dist/esm/utils/transaction/prepareRequest.js.map +1 -1
- package/dist/esm/utils/transaction/serializeTransaction.js +4 -2
- package/dist/esm/utils/transaction/serializeTransaction.js.map +1 -1
- package/dist/esm/utils/typedData.js +4 -0
- package/dist/esm/utils/typedData.js.map +1 -1
- package/dist/esm/utils/unit/parseUnits.js +15 -3
- package/dist/esm/utils/unit/parseUnits.js.map +1 -1
- package/dist/types/accounts/types.d.ts +3 -5
- package/dist/types/accounts/types.d.ts.map +1 -1
- package/dist/types/accounts/utils/signMessage.d.ts +2 -2
- package/dist/types/accounts/utils/signMessage.d.ts.map +1 -1
- package/dist/types/accounts/utils/signTypedData.d.ts +3 -6
- package/dist/types/accounts/utils/signTypedData.d.ts.map +1 -1
- package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
- package/dist/types/actions/getContract.d.ts +65 -21
- package/dist/types/actions/getContract.d.ts.map +1 -1
- package/dist/types/actions/public/createContractEventFilter.d.ts +8 -3
- package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts +17 -5
- package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/estimateContractGas.d.ts +4 -2
- package/dist/types/actions/public/estimateContractGas.d.ts.map +1 -1
- package/dist/types/actions/public/getBlockNumber.d.ts +2 -2
- package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
- package/dist/types/actions/public/getChainId.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts +4 -4
- package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts +4 -4
- package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
- package/dist/types/actions/public/getLogs.d.ts +10 -4
- package/dist/types/actions/public/getLogs.d.ts.map +1 -1
- package/dist/types/actions/public/verifyMessage.d.ts +2 -2
- package/dist/types/actions/public/verifyMessage.d.ts.map +1 -1
- package/dist/types/actions/public/verifyTypedData.d.ts +3 -4
- package/dist/types/actions/public/verifyTypedData.d.ts.map +1 -1
- package/dist/types/actions/public/watchContractEvent.d.ts +10 -5
- package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/public/watchEvent.d.ts +11 -5
- package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
- package/dist/types/actions/test/getAutomine.d.ts.map +1 -1
- package/dist/types/actions/test/mine.d.ts.map +1 -1
- package/dist/types/actions/test/sendUnsignedTransaction.d.ts +8 -2
- package/dist/types/actions/test/sendUnsignedTransaction.d.ts.map +1 -1
- package/dist/types/actions/test/setAutomine.d.ts.map +1 -1
- package/dist/types/actions/test/setBalance.d.ts.map +1 -1
- package/dist/types/actions/wallet/signMessage.d.ts +2 -2
- package/dist/types/actions/wallet/signMessage.d.ts.map +1 -1
- package/dist/types/actions/wallet/signTypedData.d.ts +4 -7
- package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
- package/dist/types/chains.d.ts +364 -16
- package/dist/types/chains.d.ts.map +1 -1
- package/dist/types/clients/createClient.d.ts +5 -5
- package/dist/types/clients/createClient.d.ts.map +1 -1
- package/dist/types/clients/createPublicClient.d.ts +3 -3
- package/dist/types/clients/createPublicClient.d.ts.map +1 -1
- package/dist/types/clients/createTestClient.d.ts +2 -2
- package/dist/types/clients/createTestClient.d.ts.map +1 -1
- package/dist/types/clients/createWalletClient.d.ts +2 -2
- package/dist/types/clients/createWalletClient.d.ts.map +1 -1
- package/dist/types/clients/decorators/public.d.ts +8 -8
- package/dist/types/clients/decorators/public.d.ts.map +1 -1
- package/dist/types/clients/decorators/test.d.ts +1 -1
- package/dist/types/clients/decorators/test.d.ts.map +1 -1
- package/dist/types/clients/decorators/wallet.d.ts +1 -3
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
- package/dist/types/clients/transports/createTransport.d.ts +5 -8
- package/dist/types/clients/transports/createTransport.d.ts.map +1 -1
- package/dist/types/clients/transports/custom.d.ts +2 -2
- package/dist/types/clients/transports/custom.d.ts.map +1 -1
- package/dist/types/clients/transports/http.d.ts +11 -0
- package/dist/types/clients/transports/http.d.ts.map +1 -1
- package/dist/types/clients/transports/webSocket.d.ts.map +1 -1
- package/dist/types/contract.d.ts +1 -1
- package/dist/types/contract.d.ts.map +1 -1
- package/dist/types/errors/abi.d.ts +6 -4
- package/dist/types/errors/abi.d.ts.map +1 -1
- package/dist/types/errors/base.d.ts +0 -1
- package/dist/types/errors/base.d.ts.map +1 -1
- package/dist/types/errors/request.d.ts +16 -8
- package/dist/types/errors/request.d.ts.map +1 -1
- package/dist/types/errors/rpc.d.ts +2 -2
- package/dist/types/errors/rpc.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/errors/version.d.ts.map +1 -1
- package/dist/types/index.d.ts +55 -53
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +1 -1
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/types/contract.d.ts +11 -6
- package/dist/types/types/contract.d.ts.map +1 -1
- package/dist/types/types/eip1193.d.ts +1042 -827
- package/dist/types/types/eip1193.d.ts.map +1 -1
- package/dist/types/types/filter.d.ts +12 -3
- package/dist/types/types/filter.d.ts.map +1 -1
- package/dist/types/types/log.d.ts +5 -3
- package/dist/types/types/log.d.ts.map +1 -1
- package/dist/types/types/misc.d.ts +4 -0
- package/dist/types/types/misc.d.ts.map +1 -1
- package/dist/types/types/rpc.d.ts +1 -1
- package/dist/types/types/rpc.d.ts.map +1 -1
- package/dist/types/types/transaction.d.ts +14 -5
- package/dist/types/types/transaction.d.ts.map +1 -1
- package/dist/types/types/typedData.d.ts +17 -29
- package/dist/types/types/typedData.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +11 -0
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/utils/abi/decodeEventLog.d.ts +6 -5
- package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
- package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
- package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
- package/dist/types/utils/ens/encodeLabelhash.d.ts +3 -0
- package/dist/types/utils/ens/encodeLabelhash.d.ts.map +1 -0
- package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts +3 -0
- package/dist/types/utils/ens/encodedLabelToLabelhash.d.ts.map +1 -0
- package/dist/types/utils/ens/labelhash.d.ts.map +1 -1
- package/dist/types/utils/ens/namehash.d.ts.map +1 -1
- package/dist/types/utils/ens/packetToBytes.d.ts.map +1 -1
- package/dist/types/utils/filters/createFilterRequestScope.d.ts +6 -2
- package/dist/types/utils/filters/createFilterRequestScope.d.ts.map +1 -1
- package/dist/types/utils/formatters/block.d.ts.map +1 -1
- package/dist/types/utils/formatters/transaction.d.ts +1 -1
- package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
- package/dist/types/utils/formatters/transactionReceipt.d.ts.map +1 -1
- package/dist/types/utils/hash/getEventSelector.d.ts +2 -1
- package/dist/types/utils/hash/getEventSelector.d.ts.map +1 -1
- package/dist/types/utils/hash/getFunctionSelector.d.ts +2 -1
- package/dist/types/utils/hash/getFunctionSelector.d.ts.map +1 -1
- package/dist/types/utils/hash/hashFunction.d.ts +2 -0
- package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/observe.d.ts.map +1 -1
- package/dist/types/utils/promise/withCache.d.ts.map +1 -1
- package/dist/types/utils/rpc.d.ts +18 -10
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/dist/types/utils/signature/hashMessage.d.ts +2 -2
- package/dist/types/utils/signature/hashMessage.d.ts.map +1 -1
- package/dist/types/utils/signature/hashTypedData.d.ts +3 -6
- package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
- package/dist/types/utils/signature/recoverMessageAddress.d.ts +2 -2
- package/dist/types/utils/signature/recoverMessageAddress.d.ts.map +1 -1
- package/dist/types/utils/signature/recoverTypedDataAddress.d.ts +3 -6
- package/dist/types/utils/signature/recoverTypedDataAddress.d.ts.map +1 -1
- package/dist/types/utils/signature/verifyTypedData.d.ts +3 -6
- package/dist/types/utils/signature/verifyTypedData.d.ts.map +1 -1
- package/dist/types/utils/transaction/getTransactionType.d.ts +2 -2
- package/dist/types/utils/transaction/getTransactionType.d.ts.map +1 -1
- package/dist/types/utils/typedData.d.ts +2 -3
- package/dist/types/utils/typedData.d.ts.map +1 -1
- package/dist/types/utils/unit/parseUnits.d.ts.map +1 -1
- package/package.json +7 -13
- package/src/accounts/types.ts +4 -4
- package/src/accounts/utils/signMessage.ts +2 -2
- package/src/accounts/utils/signTypedData.ts +4 -4
- package/src/actions/ens/getEnsAddress.ts +37 -22
- package/src/actions/getContract.ts +133 -69
- package/src/actions/public/call.ts +1 -1
- package/src/actions/public/createContractEventFilter.ts +21 -4
- package/src/actions/public/createEventFilter.ts +34 -13
- package/src/actions/public/estimateContractGas.ts +10 -4
- package/src/actions/public/estimateGas.ts +1 -1
- package/src/actions/public/getBlock.ts +2 -2
- package/src/actions/public/getBlockTransactionCount.ts +1 -1
- package/src/actions/public/getChainId.ts +3 -1
- package/src/actions/public/getFilterChanges.ts +32 -7
- package/src/actions/public/getFilterLogs.ts +34 -8
- package/src/actions/public/getGasPrice.ts +1 -1
- package/src/actions/public/getLogs.ts +39 -10
- package/src/actions/public/getTransactionCount.ts +1 -1
- package/src/actions/public/verifyMessage.ts +2 -2
- package/src/actions/public/verifyTypedData.ts +18 -6
- package/src/actions/public/watchContractEvent.ts +16 -4
- package/src/actions/public/watchEvent.ts +17 -4
- package/src/actions/test/getAutomine.ts +4 -0
- package/src/actions/test/mine.ts +10 -4
- package/src/actions/test/sendUnsignedTransaction.ts +54 -5
- package/src/actions/test/setAutomine.ts +8 -4
- package/src/actions/test/setBalance.ts +10 -4
- package/src/actions/wallet/sendTransaction.ts +1 -1
- package/src/actions/wallet/signMessage.ts +11 -4
- package/src/actions/wallet/signTypedData.ts +5 -5
- package/src/chains.ts +123 -88
- package/src/clients/createClient.ts +13 -11
- package/src/clients/createPublicClient.ts +3 -4
- package/src/clients/createTestClient.ts +2 -3
- package/src/clients/createWalletClient.ts +2 -3
- package/src/clients/decorators/public.ts +43 -17
- package/src/clients/decorators/test.ts +4 -3
- package/src/clients/decorators/wallet.ts +2 -2
- package/src/clients/transports/createTransport.ts +5 -9
- package/src/clients/transports/custom.ts +1 -2
- package/src/clients/transports/fallback.ts +1 -1
- package/src/clients/transports/http.ts +44 -7
- package/src/clients/transports/webSocket.ts +23 -15
- package/src/contract.ts +3 -3
- package/src/errors/abi.ts +16 -4
- package/src/errors/base.ts +6 -6
- package/src/errors/request.ts +4 -4
- package/src/errors/rpc.ts +3 -2
- package/src/errors/version.ts +1 -1
- package/src/index.ts +263 -249
- package/src/types/account.ts +9 -9
- package/src/types/contract.ts +33 -15
- package/src/types/eip1193.ts +1084 -827
- package/src/types/filter.ts +15 -3
- package/src/types/log.ts +13 -3
- package/src/types/misc.ts +6 -0
- package/src/types/rpc.ts +1 -1
- package/src/types/transaction.ts +24 -6
- package/src/types/typedData.ts +36 -45
- package/src/types/utils.ts +15 -0
- package/src/utils/abi/decodeEventLog.ts +47 -22
- package/src/utils/abi/encodeEventTopics.ts +16 -11
- package/src/utils/abi/getAbiItem.ts +1 -0
- package/src/utils/encoding/toBytes.ts +1 -1
- package/src/utils/encoding/toHex.ts +2 -2
- package/src/utils/ens/encodeLabelhash.ts +5 -0
- package/src/utils/ens/encodedLabelToLabelhash.ts +11 -0
- package/src/utils/ens/labelhash.ts +2 -1
- package/src/utils/ens/namehash.ts +6 -2
- package/src/utils/ens/packetToBytes.ts +12 -8
- package/src/utils/filters/createFilterRequestScope.ts +12 -4
- package/src/utils/formatters/block.ts +3 -1
- package/src/utils/formatters/log.ts +2 -2
- package/src/utils/formatters/transaction.ts +3 -1
- package/src/utils/formatters/transactionReceipt.ts +4 -2
- package/src/utils/formatters/transactionRequest.ts +1 -1
- package/src/utils/hash/getEventSelector.ts +6 -2
- package/src/utils/hash/getFunctionSelector.ts +6 -2
- package/src/utils/hash/hashFunction.ts +6 -2
- package/src/utils/index.ts +6 -0
- package/src/utils/observe.ts +2 -2
- package/src/utils/promise/createBatchScheduler.ts +1 -1
- package/src/utils/promise/withCache.ts +13 -11
- package/src/utils/rpc.ts +53 -53
- package/src/utils/signature/hashMessage.ts +8 -4
- package/src/utils/signature/hashTypedData.ts +4 -4
- package/src/utils/signature/recoverMessageAddress.ts +2 -2
- package/src/utils/signature/recoverTypedDataAddress.ts +4 -4
- package/src/utils/signature/verifyTypedData.ts +4 -4
- package/src/utils/transaction/getTransactionType.ts +10 -9
- package/src/utils/transaction/serializeTransaction.ts +3 -3
- package/src/utils/typedData.ts +3 -3
- package/src/utils/unit/parseUnits.ts +15 -5
- package/dist/cjs/adapters/ethers.js +0 -49
- package/dist/cjs/adapters/ethers.js.map +0 -1
- package/dist/cjs/ethers.js +0 -6
- package/dist/cjs/ethers.js.map +0 -1
- package/dist/esm/adapters/ethers.js +0 -45
- package/dist/esm/adapters/ethers.js.map +0 -1
- package/dist/esm/ethers.js +0 -2
- package/dist/esm/ethers.js.map +0 -1
- package/dist/types/adapters/ethers.d.ts +0 -27
- package/dist/types/adapters/ethers.d.ts.map +0 -1
- package/dist/types/ethers.d.ts +0 -2
- package/dist/types/ethers.d.ts.map +0 -1
- package/ethers/package.json +0 -5
- package/src/adapters/ethers.ts +0 -94
- package/src/ethers.ts +0 -1
package/src/types/filter.ts
CHANGED
@@ -1,11 +1,19 @@
|
|
1
1
|
import type { Abi } from 'abitype'
|
2
2
|
|
3
3
|
import type { MaybeExtractEventArgsFromAbi } from './contract.js'
|
4
|
-
import type {
|
4
|
+
import type { EIP1193RequestFn, PublicRpcSchema } from './eip1193.js'
|
5
5
|
import type { Hex } from './misc.js'
|
6
|
+
import type { Filter as Filter_ } from './utils.js'
|
6
7
|
|
7
8
|
export type FilterType = 'transaction' | 'block' | 'event'
|
8
9
|
|
10
|
+
type FilterRpcSchema = Filter_<
|
11
|
+
PublicRpcSchema,
|
12
|
+
{
|
13
|
+
Method: 'eth_getFilterLogs' | 'eth_getFilterChanges' | 'eth_uninstallFilter'
|
14
|
+
}
|
15
|
+
>
|
16
|
+
|
9
17
|
export type Filter<
|
10
18
|
TFilterType extends FilterType = 'event',
|
11
19
|
TAbi extends Abi | readonly unknown[] = Abi,
|
@@ -13,10 +21,10 @@ export type Filter<
|
|
13
21
|
TArgs extends
|
14
22
|
| MaybeExtractEventArgsFromAbi<TAbi, TEventName>
|
15
23
|
| undefined = MaybeExtractEventArgsFromAbi<TAbi, TEventName>,
|
24
|
+
TStrict extends boolean | undefined = undefined,
|
16
25
|
> = {
|
17
26
|
id: Hex
|
18
|
-
|
19
|
-
request: Requests['request']
|
27
|
+
request: EIP1193RequestFn<FilterRpcSchema>
|
20
28
|
type: TFilterType
|
21
29
|
} & (TFilterType extends 'event'
|
22
30
|
? TAbi extends Abi
|
@@ -25,21 +33,25 @@ export type Filter<
|
|
25
33
|
abi: TAbi
|
26
34
|
args?: never
|
27
35
|
eventName?: never
|
36
|
+
strict: TStrict
|
28
37
|
}
|
29
38
|
: TArgs extends MaybeExtractEventArgsFromAbi<TAbi, TEventName>
|
30
39
|
? {
|
31
40
|
abi: TAbi
|
32
41
|
args: TArgs
|
33
42
|
eventName: TEventName
|
43
|
+
strict: TStrict
|
34
44
|
}
|
35
45
|
: {
|
36
46
|
abi: TAbi
|
37
47
|
args?: never
|
38
48
|
eventName: TEventName
|
49
|
+
strict: TStrict
|
39
50
|
}
|
40
51
|
: {
|
41
52
|
abi?: never
|
42
53
|
args?: never
|
43
54
|
eventName?: never
|
55
|
+
strict?: never
|
44
56
|
}
|
45
57
|
: {})
|
package/src/types/log.ts
CHANGED
@@ -16,6 +16,7 @@ export type Log<
|
|
16
16
|
TQuantity = bigint,
|
17
17
|
TIndex = number,
|
18
18
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
19
|
+
TStrict extends boolean | undefined = undefined,
|
19
20
|
TAbi extends Abi | readonly unknown[] = [TAbiEvent],
|
20
21
|
TEventName extends string | undefined = TAbiEvent extends AbiEvent
|
21
22
|
? TAbiEvent['name']
|
@@ -37,7 +38,7 @@ export type Log<
|
|
37
38
|
transactionIndex: TIndex | null
|
38
39
|
/** `true` if this filter has been destroyed and is invalid */
|
39
40
|
removed: boolean
|
40
|
-
} & GetInferredLogValues<TAbiEvent, TAbi, TEventName>
|
41
|
+
} & GetInferredLogValues<TAbiEvent, TAbi, TEventName, TStrict>
|
41
42
|
|
42
43
|
type Topics<
|
43
44
|
THead extends AbiEvent['inputs'],
|
@@ -82,6 +83,7 @@ type GetInferredLogValues<
|
|
82
83
|
TEventName extends string | undefined = TAbiEvent extends AbiEvent
|
83
84
|
? TAbiEvent['name']
|
84
85
|
: undefined,
|
86
|
+
TStrict extends boolean | undefined = undefined,
|
85
87
|
_EventNames extends string = TAbi extends Abi
|
86
88
|
? Abi extends TAbi
|
87
89
|
? string
|
@@ -93,7 +95,11 @@ type GetInferredLogValues<
|
|
93
95
|
args: GetEventArgs<
|
94
96
|
TAbi,
|
95
97
|
TEventName,
|
96
|
-
{
|
98
|
+
{
|
99
|
+
EnableUnion: false
|
100
|
+
IndexedOnly: false
|
101
|
+
Required: TStrict extends boolean ? TStrict : false
|
102
|
+
}
|
97
103
|
>
|
98
104
|
/** The event name decoded from `topics`. */
|
99
105
|
eventName: TEventName
|
@@ -105,7 +111,11 @@ type GetInferredLogValues<
|
|
105
111
|
args: GetEventArgs<
|
106
112
|
TAbi,
|
107
113
|
string,
|
108
|
-
{
|
114
|
+
{
|
115
|
+
EnableUnion: false
|
116
|
+
IndexedOnly: false
|
117
|
+
Required: TStrict extends boolean ? TStrict : false
|
118
|
+
}
|
109
119
|
>
|
110
120
|
/** The event name decoded from `topics`. */
|
111
121
|
eventName: TName
|
package/src/types/misc.ts
CHANGED
@@ -2,6 +2,12 @@ export type ByteArray = Uint8Array
|
|
2
2
|
export type Hex = `0x${string}`
|
3
3
|
export type Hash = `0x${string}`
|
4
4
|
export type LogTopic = Hex | Hex[] | null
|
5
|
+
export type SignableMessage =
|
6
|
+
| string
|
7
|
+
| {
|
8
|
+
/** Raw data representation of the message. */
|
9
|
+
raw: Hex | ByteArray
|
10
|
+
}
|
5
11
|
export type Signature = {
|
6
12
|
r: Hex
|
7
13
|
s: Hex
|
package/src/types/rpc.ts
CHANGED
@@ -12,7 +12,7 @@ import type {
|
|
12
12
|
export type Index = `0x${string}`
|
13
13
|
export type Quantity = `0x${string}`
|
14
14
|
export type Status = '0x0' | '0x1'
|
15
|
-
export type TransactionType = '0x0' | '0x1' | '0x2'
|
15
|
+
export type TransactionType = '0x0' | '0x1' | '0x2' | (string & {})
|
16
16
|
|
17
17
|
export type RpcBlock = Block<Quantity, RpcTransaction>
|
18
18
|
export type RpcBlockNumber = BlockNumber<Quantity>
|
package/src/types/transaction.ts
CHANGED
@@ -9,7 +9,7 @@ import type { ValueOf } from './utils.js'
|
|
9
9
|
|
10
10
|
export type AccessList = { address: Address; storageKeys: Hex[] }[]
|
11
11
|
|
12
|
-
export type TransactionType = ValueOf<typeof transactionType>
|
12
|
+
export type TransactionType = ValueOf<typeof transactionType> | (string & {})
|
13
13
|
|
14
14
|
export type TransactionReceipt<
|
15
15
|
TQuantity = bigint,
|
@@ -52,8 +52,6 @@ export type TransactionBase<TQuantity = bigint, TIndex = number> = {
|
|
52
52
|
blockHash: Hash | null
|
53
53
|
/** Number of block containing this transaction or `null` if pending */
|
54
54
|
blockNumber: TQuantity | null
|
55
|
-
/** Chain ID. */
|
56
|
-
chainId: TIndex
|
57
55
|
/** Transaction sender */
|
58
56
|
from: Address
|
59
57
|
/** Gas provided for transaction execution */
|
@@ -84,6 +82,7 @@ export type TransactionLegacy<
|
|
84
82
|
> = TransactionBase<TQuantity, TIndex> &
|
85
83
|
FeeValuesLegacy<TQuantity> & {
|
86
84
|
accessList?: never
|
85
|
+
chainId?: TIndex
|
87
86
|
type: TType
|
88
87
|
}
|
89
88
|
export type TransactionEIP2930<
|
@@ -93,6 +92,7 @@ export type TransactionEIP2930<
|
|
93
92
|
> = TransactionBase<TQuantity, TIndex> &
|
94
93
|
FeeValuesLegacy<TQuantity> & {
|
95
94
|
accessList: AccessList
|
95
|
+
chainId: TIndex
|
96
96
|
type: TType
|
97
97
|
}
|
98
98
|
export type TransactionEIP1559<
|
@@ -102,6 +102,7 @@ export type TransactionEIP1559<
|
|
102
102
|
> = TransactionBase<TQuantity, TIndex> &
|
103
103
|
FeeValuesEIP1559<TQuantity> & {
|
104
104
|
accessList: AccessList
|
105
|
+
chainId: TIndex
|
105
106
|
type: TType
|
106
107
|
}
|
107
108
|
export type Transaction<TQuantity = bigint, TIndex = number> =
|
@@ -152,10 +153,15 @@ export type TransactionRequest<TQuantity = bigint, TIndex = number> =
|
|
152
153
|
export type TransactionSerializedEIP1559 = `0x02${string}`
|
153
154
|
export type TransactionSerializedEIP2930 = `0x01${string}`
|
154
155
|
export type TransactionSerializedLegacy = Hex
|
156
|
+
export type TransactionSerializedGeneric = Hex
|
155
157
|
export type TransactionSerialized<TType extends TransactionType = 'legacy'> =
|
156
|
-
|
157
|
-
|
158
|
-
|
158
|
+
TType extends 'eip1559'
|
159
|
+
? TransactionSerializedEIP1559
|
160
|
+
: TType extends 'eip2930'
|
161
|
+
? TransactionSerializedEIP2930
|
162
|
+
: TType extends 'legacy'
|
163
|
+
? TransactionSerializedLegacy
|
164
|
+
: TransactionSerializedGeneric
|
159
165
|
|
160
166
|
export type TransactionSerializableBase<
|
161
167
|
TQuantity = bigint,
|
@@ -190,7 +196,19 @@ export type TransactionSerializableEIP1559<
|
|
190
196
|
type?: 'eip1559'
|
191
197
|
yParity?: number
|
192
198
|
}
|
199
|
+
export type TransactionSerializableGeneric<
|
200
|
+
TQuantity = bigint,
|
201
|
+
TIndex = number,
|
202
|
+
> = TransactionSerializableBase<TQuantity, TIndex> & {
|
203
|
+
accessList?: AccessList
|
204
|
+
gasPrice?: TQuantity
|
205
|
+
maxFeePerGas?: TQuantity
|
206
|
+
maxPriorityFeePerGas?: TQuantity
|
207
|
+
type: string
|
208
|
+
}
|
209
|
+
|
193
210
|
export type TransactionSerializable<TQuantity = bigint, TIndex = number> =
|
194
211
|
| TransactionSerializableLegacy<TQuantity, TIndex>
|
195
212
|
| TransactionSerializableEIP2930<TQuantity, TIndex>
|
196
213
|
| TransactionSerializableEIP1559<TQuantity, TIndex>
|
214
|
+
| TransactionSerializableGeneric<TQuantity, TIndex>
|
package/src/types/typedData.ts
CHANGED
@@ -1,81 +1,72 @@
|
|
1
1
|
import type {
|
2
|
-
Narrow,
|
3
2
|
TypedData,
|
4
3
|
TypedDataDomain,
|
5
4
|
TypedDataToPrimitiveTypes,
|
6
5
|
} from 'abitype'
|
7
6
|
|
8
7
|
export type TypedDataDefinition<
|
9
|
-
TTypedData extends TypedData |
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
TTypedData extends TypedData | Record<string, unknown> =
|
9
|
+
| TypedData
|
10
|
+
| Record<string, unknown>,
|
11
|
+
TPrimaryType extends keyof TTypedData | 'EIP712Domain' = keyof TTypedData,
|
12
|
+
> = GetTypedDataPrimaryType<TTypedData, TPrimaryType> &
|
13
|
+
GetTypedDataMessage<TTypedData, TPrimaryType> &
|
14
14
|
GetTypedDataTypes<TTypedData, TPrimaryType> &
|
15
15
|
GetTypedDataDomain<TTypedData, TPrimaryType>
|
16
16
|
|
17
17
|
export type GetTypedDataDomain<
|
18
|
-
TTypedData extends TypedData |
|
19
|
-
TPrimaryType extends
|
20
|
-
|
18
|
+
TTypedData extends TypedData | Record<string, unknown>,
|
19
|
+
TPrimaryType extends keyof TTypedData | 'EIP712Domain',
|
20
|
+
///
|
21
|
+
Schema extends Record<string, unknown> = TTypedData extends TypedData
|
21
22
|
? TypedDataToPrimitiveTypes<TTypedData>
|
22
|
-
: { [
|
23
|
-
TDomain =
|
23
|
+
: { [_: string]: any },
|
24
|
+
TDomain = Schema extends { EIP712Domain: infer Domain }
|
24
25
|
? Domain
|
25
26
|
: TypedDataDomain,
|
26
27
|
> = TPrimaryType extends 'EIP712Domain'
|
27
|
-
? {
|
28
|
-
|
29
|
-
}
|
30
|
-
: {
|
31
|
-
domain?: TDomain
|
32
|
-
}
|
28
|
+
? { domain: TDomain }
|
29
|
+
: { domain?: TDomain }
|
33
30
|
|
34
31
|
export type GetTypedDataMessage<
|
35
|
-
TTypedData extends TypedData |
|
36
|
-
TPrimaryType extends
|
37
|
-
|
32
|
+
TTypedData extends TypedData | Record<string, unknown>,
|
33
|
+
TPrimaryType extends keyof TTypedData | 'EIP712Domain',
|
34
|
+
///
|
35
|
+
Schema extends Record<string, unknown> = TTypedData extends TypedData
|
38
36
|
? TypedDataToPrimitiveTypes<TTypedData>
|
39
|
-
: { [
|
40
|
-
|
37
|
+
: { [_: string]: any },
|
38
|
+
Message extends Schema[keyof Schema] = Schema[TPrimaryType extends keyof Schema
|
41
39
|
? TPrimaryType
|
42
|
-
: keyof
|
40
|
+
: keyof Schema],
|
43
41
|
> = TPrimaryType extends 'EIP712Domain'
|
44
42
|
? {}
|
45
|
-
: { [key: string]: any } extends
|
43
|
+
: { [key: string]: any } extends Message // Check if we were able to infer the shape of typed data
|
46
44
|
? {
|
47
45
|
/**
|
48
46
|
* Data to sign
|
49
47
|
*
|
50
48
|
* Use a [const assertion](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) on {@link types} for type inference.
|
51
49
|
*/
|
52
|
-
message:
|
50
|
+
message: Record<string, unknown>
|
53
51
|
}
|
54
52
|
: {
|
55
53
|
/** Data to sign */
|
56
|
-
message:
|
54
|
+
message: Message
|
57
55
|
}
|
58
56
|
|
59
57
|
export type GetTypedDataPrimaryType<
|
60
|
-
TTypedData extends TypedData |
|
61
|
-
TPrimaryType extends
|
62
|
-
> =
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
| 'EIP712Domain'
|
69
|
-
: never
|
70
|
-
: TPrimaryType
|
58
|
+
TTypedData extends TypedData | Record<string, unknown>,
|
59
|
+
TPrimaryType extends keyof TTypedData,
|
60
|
+
> = {
|
61
|
+
primaryType:
|
62
|
+
| TPrimaryType // infer value
|
63
|
+
| keyof TTypedData // show all values
|
64
|
+
| 'EIP712Domain'
|
65
|
+
}
|
71
66
|
|
72
67
|
export type GetTypedDataTypes<
|
73
|
-
TTypedData extends TypedData |
|
74
|
-
TPrimaryType extends
|
68
|
+
TTypedData extends TypedData | Record<string, unknown>,
|
69
|
+
TPrimaryType extends keyof TTypedData | 'EIP712Domain',
|
75
70
|
> = TPrimaryType extends 'EIP712Domain'
|
76
|
-
? {
|
77
|
-
|
78
|
-
}
|
79
|
-
: {
|
80
|
-
types: Narrow<TTypedData>
|
81
|
-
}
|
71
|
+
? { types?: TTypedData }
|
72
|
+
: { types: TTypedData }
|
package/src/types/utils.ts
CHANGED
@@ -106,6 +106,21 @@ export type MaybeRequired<T, TRequired extends boolean> = TRequired extends true
|
|
106
106
|
? Required<T>
|
107
107
|
: T
|
108
108
|
|
109
|
+
/**
|
110
|
+
* @description Makes the attribute on the type T allow undefined if TUndefinedish is true.
|
111
|
+
*
|
112
|
+
* @example
|
113
|
+
* MaybeUndefined<string, true>
|
114
|
+
* => string | undefined
|
115
|
+
*
|
116
|
+
* MaybeUndefined<string, false>
|
117
|
+
* => string
|
118
|
+
*/
|
119
|
+
export type MaybeUndefined<
|
120
|
+
T,
|
121
|
+
TUndefinedish extends boolean,
|
122
|
+
> = TUndefinedish extends true ? T | undefined : T
|
123
|
+
|
109
124
|
/**
|
110
125
|
* @description Merges the intersection properties of T and U.
|
111
126
|
*
|
@@ -24,10 +24,12 @@ export type DecodeEventLogParameters<
|
|
24
24
|
TEventName extends string | undefined = string,
|
25
25
|
TTopics extends Hex[] = Hex[],
|
26
26
|
TData extends Hex | undefined = undefined,
|
27
|
+
TStrict extends boolean = true,
|
27
28
|
> = {
|
28
29
|
abi: Narrow<TAbi>
|
29
30
|
data?: TData
|
30
31
|
eventName?: InferEventName<TAbi, TEventName>
|
32
|
+
strict?: TStrict
|
31
33
|
topics: [signature: Hex, ...args: TTopics] | []
|
32
34
|
}
|
33
35
|
|
@@ -36,6 +38,7 @@ export type DecodeEventLogReturnType<
|
|
36
38
|
TEventName extends string | undefined = string,
|
37
39
|
TTopics extends Hex[] = Hex[],
|
38
40
|
TData extends Hex | undefined = undefined,
|
41
|
+
TStrict extends boolean = true,
|
39
42
|
_EventNames extends string = TAbi extends Abi
|
40
43
|
? Abi extends TAbi
|
41
44
|
? string
|
@@ -45,13 +48,13 @@ export type DecodeEventLogReturnType<
|
|
45
48
|
? Prettify<
|
46
49
|
{
|
47
50
|
eventName: TEventName
|
48
|
-
} & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData>
|
51
|
+
} & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData, TStrict>
|
49
52
|
>
|
50
53
|
: {
|
51
54
|
[TName in _EventNames]: Prettify<
|
52
55
|
{
|
53
56
|
eventName: TName
|
54
|
-
} & GetEventArgsFromTopics<TAbi, TName, TTopics, TData>
|
57
|
+
} & GetEventArgsFromTopics<TAbi, TName, TTopics, TData, TStrict>
|
55
58
|
>
|
56
59
|
}[_EventNames]
|
57
60
|
|
@@ -62,16 +65,20 @@ export function decodeEventLog<
|
|
62
65
|
TEventName extends string | undefined = undefined,
|
63
66
|
TTopics extends Hex[] = Hex[],
|
64
67
|
TData extends Hex | undefined = undefined,
|
68
|
+
TStrict extends boolean = true,
|
65
69
|
>({
|
66
70
|
abi,
|
67
71
|
data,
|
72
|
+
strict: strict_,
|
68
73
|
topics,
|
69
74
|
}: DecodeEventLogParameters<
|
70
75
|
TAbi,
|
71
76
|
TEventName,
|
72
77
|
TTopics,
|
73
|
-
TData
|
74
|
-
|
78
|
+
TData,
|
79
|
+
TStrict
|
80
|
+
>): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData, TStrict> {
|
81
|
+
const strict = strict_ ?? true
|
75
82
|
const [signature, ...argTopics] = topics
|
76
83
|
if (!signature)
|
77
84
|
throw new AbiEventSignatureEmptyTopicsError({
|
@@ -82,7 +89,7 @@ export function decodeEventLog<
|
|
82
89
|
x.type === 'event' &&
|
83
90
|
signature === getEventSelector(formatAbiItem(x) as EventDefinition),
|
84
91
|
)
|
85
|
-
if (!(abiItem && 'name' in abiItem))
|
92
|
+
if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')
|
86
93
|
throw new AbiEventSignatureNotFoundError(signature, {
|
87
94
|
docsPath,
|
88
95
|
})
|
@@ -109,32 +116,50 @@ export function decodeEventLog<
|
|
109
116
|
|
110
117
|
// Decode data (non-indexed args).
|
111
118
|
const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed))
|
112
|
-
if (
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
if (
|
117
|
-
|
118
|
-
|
119
|
-
|
119
|
+
if (nonIndexedInputs.length > 0) {
|
120
|
+
if (data && data !== '0x') {
|
121
|
+
try {
|
122
|
+
const decodedData = decodeAbiParameters(nonIndexedInputs, data)
|
123
|
+
if (decodedData) {
|
124
|
+
if (isUnnamed) args = [...args, ...decodedData]
|
125
|
+
else {
|
126
|
+
for (let i = 0; i < nonIndexedInputs.length; i++) {
|
127
|
+
args[nonIndexedInputs[i].name!] = decodedData[i]
|
128
|
+
}
|
120
129
|
}
|
121
130
|
}
|
131
|
+
} catch (err) {
|
132
|
+
if (strict) {
|
133
|
+
if (err instanceof AbiDecodingDataSizeTooSmallError)
|
134
|
+
throw new DecodeLogDataMismatch({
|
135
|
+
abiItem,
|
136
|
+
data: err.data,
|
137
|
+
params: err.params,
|
138
|
+
size: err.size,
|
139
|
+
})
|
140
|
+
throw err
|
141
|
+
}
|
122
142
|
}
|
123
|
-
}
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
throw err
|
143
|
+
} else if (strict) {
|
144
|
+
throw new DecodeLogDataMismatch({
|
145
|
+
abiItem,
|
146
|
+
data: '0x',
|
147
|
+
params: nonIndexedInputs,
|
148
|
+
size: 0,
|
149
|
+
})
|
131
150
|
}
|
132
151
|
}
|
133
152
|
|
134
153
|
return {
|
135
154
|
eventName: name,
|
136
155
|
args: Object.values(args).length > 0 ? args : undefined,
|
137
|
-
} as unknown as DecodeEventLogReturnType<
|
156
|
+
} as unknown as DecodeEventLogReturnType<
|
157
|
+
TAbi,
|
158
|
+
TEventName,
|
159
|
+
TTopics,
|
160
|
+
TData,
|
161
|
+
TStrict
|
162
|
+
>
|
138
163
|
}
|
139
164
|
|
140
165
|
function decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {
|
@@ -66,17 +66,22 @@ export function encodeEventTopics<
|
|
66
66
|
)
|
67
67
|
const args_ = Array.isArray(args)
|
68
68
|
? args
|
69
|
-
:
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
69
|
+
: Object.values(args).length > 0
|
70
|
+
? indexedInputs?.map((x: any) => (args as any)[x.name]) ?? []
|
71
|
+
: []
|
72
|
+
|
73
|
+
if (args_.length > 0) {
|
74
|
+
topics =
|
75
|
+
indexedInputs?.map((param, i) =>
|
76
|
+
Array.isArray(args_[i])
|
77
|
+
? args_[i].map((_: any, j: number) =>
|
78
|
+
encodeArg({ param, value: args_[i][j] }),
|
79
|
+
)
|
80
|
+
: args_[i]
|
81
|
+
? encodeArg({ param, value: args_[i] })
|
82
|
+
: null,
|
83
|
+
) ?? []
|
84
|
+
}
|
80
85
|
}
|
81
86
|
return [signature, ...topics]
|
82
87
|
}
|
@@ -45,6 +45,7 @@ export function getAbiItem<
|
|
45
45
|
}
|
46
46
|
if (!abiItem.inputs) continue
|
47
47
|
if (abiItem.inputs.length === 0) continue
|
48
|
+
if (abiItem.inputs.length !== args.length) continue
|
48
49
|
const matched = (args as readonly unknown[]).every((arg, index) => {
|
49
50
|
const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]
|
50
51
|
if (!abiParameter) return false
|
@@ -6,7 +6,7 @@ import { pad } from '../data/pad.js'
|
|
6
6
|
import { assertSize } from './fromHex.js'
|
7
7
|
import { type NumberToHexOpts, numberToHex } from './toHex.js'
|
8
8
|
|
9
|
-
const encoder = new TextEncoder()
|
9
|
+
const encoder = /*#__PURE__*/ new TextEncoder()
|
10
10
|
|
11
11
|
export type ToBytesParameters = {
|
12
12
|
/** Size of the output bytes. */
|
@@ -4,7 +4,7 @@ import { pad } from '../data/pad.js'
|
|
4
4
|
|
5
5
|
import { assertSize } from './fromHex.js'
|
6
6
|
|
7
|
-
const hexes = Array.from({ length: 256 }, (_v, i) =>
|
7
|
+
const hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>
|
8
8
|
i.toString(16).padStart(2, '0'),
|
9
9
|
)
|
10
10
|
|
@@ -201,7 +201,7 @@ export type StringToHexOpts = {
|
|
201
201
|
size?: number
|
202
202
|
}
|
203
203
|
|
204
|
-
const encoder = new TextEncoder()
|
204
|
+
const encoder = /*#__PURE__*/ new TextEncoder()
|
205
205
|
|
206
206
|
/**
|
207
207
|
* Encodes a UTF-8 string into a hex string
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import type { Hex } from '../../index.js'
|
2
|
+
import { isHex } from '../index.js'
|
3
|
+
|
4
|
+
export function encodedLabelToLabelhash(label: string): Hex | null {
|
5
|
+
if (label.length !== 66) return null
|
6
|
+
if (label.indexOf('[') !== 0) return null
|
7
|
+
if (label.indexOf(']') !== 65) return null
|
8
|
+
const hash = `0x${label.slice(1, 65)}`
|
9
|
+
if (!isHex(hash)) return null
|
10
|
+
return hash
|
11
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { stringToBytes } from '../encoding/toBytes.js'
|
2
2
|
import { bytesToHex } from '../encoding/toHex.js'
|
3
3
|
import { keccak256 } from '../hash/keccak256.js'
|
4
|
+
import { encodedLabelToLabelhash } from './encodedLabelToLabelhash.js'
|
4
5
|
|
5
6
|
/**
|
6
7
|
* @description Hashes ENS label
|
@@ -14,5 +15,5 @@ import { keccak256 } from '../hash/keccak256.js'
|
|
14
15
|
export function labelhash(label: string) {
|
15
16
|
const result = new Uint8Array(32).fill(0)
|
16
17
|
if (!label) return bytesToHex(result)
|
17
|
-
return keccak256(stringToBytes(label))
|
18
|
+
return encodedLabelToLabelhash(label) || keccak256(stringToBytes(label))
|
18
19
|
}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { concat } from '../data/concat.js'
|
2
|
-
import { stringToBytes } from '../encoding/toBytes.js'
|
2
|
+
import { stringToBytes, toBytes } from '../encoding/toBytes.js'
|
3
3
|
import { bytesToHex } from '../encoding/toHex.js'
|
4
4
|
import { keccak256 } from '../hash/keccak256.js'
|
5
|
+
import { encodedLabelToLabelhash } from './encodedLabelToLabelhash.js'
|
5
6
|
|
6
7
|
/**
|
7
8
|
* @description Hashes ENS name
|
@@ -21,7 +22,10 @@ export function namehash(name: string) {
|
|
21
22
|
const labels = name.split('.')
|
22
23
|
// Iterate in reverse order building up hash
|
23
24
|
for (let i = labels.length - 1; i >= 0; i -= 1) {
|
24
|
-
const
|
25
|
+
const hashFromEncodedLabel = encodedLabelToLabelhash(labels[i])
|
26
|
+
const hashed = hashFromEncodedLabel
|
27
|
+
? toBytes(hashFromEncodedLabel)
|
28
|
+
: keccak256(stringToBytes(labels[i]), 'bytes')
|
25
29
|
result = keccak256(concat([result, hashed]), 'bytes')
|
26
30
|
}
|
27
31
|
|
@@ -1,29 +1,33 @@
|
|
1
1
|
// Adapted from https://github.com/mafintosh/dns-packet
|
2
2
|
import type { ByteArray } from '../../types/misc.js'
|
3
3
|
import { stringToBytes } from '../encoding/toBytes.js'
|
4
|
+
import { encodeLabelhash } from './encodeLabelhash.js'
|
5
|
+
import { labelhash } from './labelhash.js'
|
4
6
|
|
5
7
|
/*
|
6
8
|
* @description Encodes a DNS packet into a ByteArray containing a UDP payload.
|
7
9
|
*/
|
8
10
|
export function packetToBytes(packet: string): ByteArray {
|
9
|
-
function length(value: string) {
|
10
|
-
if (value === '.' || value === '..') return 1
|
11
|
-
return stringToBytes(value.replace(/^\.|\.$/gm, '')).length + 2
|
12
|
-
}
|
13
|
-
|
14
|
-
const bytes = new Uint8Array(length(packet))
|
15
11
|
// strip leading and trailing `.`
|
16
12
|
const value = packet.replace(/^\.|\.$/gm, '')
|
17
|
-
if (
|
13
|
+
if (value.length === 0) return new Uint8Array(1)
|
14
|
+
|
15
|
+
const bytes = new Uint8Array(stringToBytes(value).byteLength + 2)
|
18
16
|
|
19
17
|
let offset = 0
|
20
18
|
const list = value.split('.')
|
21
19
|
for (let i = 0; i < list.length; i++) {
|
22
|
-
|
20
|
+
let encoded = stringToBytes(list[i])
|
21
|
+
// if the length is > 255, make the encoded label value a labelhash
|
22
|
+
// this is compatible with the universal resolver
|
23
|
+
if (encoded.byteLength > 255)
|
24
|
+
encoded = stringToBytes(encodeLabelhash(labelhash(list[i])))
|
23
25
|
bytes[offset] = encoded.length
|
24
26
|
bytes.set(encoded, offset + 1)
|
25
27
|
offset += encoded.length + 1
|
26
28
|
}
|
27
29
|
|
30
|
+
if (bytes.byteLength !== offset + 1) return bytes.slice(0, offset + 1)
|
31
|
+
|
28
32
|
return bytes
|
29
33
|
}
|