@wagmi/core 2.0.0 → 2.0.2
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 +13 -0
- package/actions/package.json +5 -0
- package/chains/package.json +5 -0
- package/dist/esm/actions/codegen/createReadContract.js +31 -0
- package/dist/esm/actions/codegen/createReadContract.js.map +1 -0
- package/dist/esm/actions/codegen/createSimulateContract.js +33 -0
- package/dist/esm/actions/codegen/createSimulateContract.js.map +1 -0
- package/dist/esm/actions/codegen/createWatchContractEvent.js +31 -0
- package/dist/esm/actions/codegen/createWatchContractEvent.js.map +1 -0
- package/dist/esm/actions/codegen/createWriteContract.js +43 -0
- package/dist/esm/actions/codegen/createWriteContract.js.map +1 -0
- package/dist/esm/actions/connect.js +15 -19
- package/dist/esm/actions/connect.js.map +1 -1
- package/dist/esm/actions/disconnect.js +10 -12
- package/dist/esm/actions/disconnect.js.map +1 -1
- package/dist/esm/actions/estimateFeesPerGas.js +3 -0
- package/dist/esm/actions/estimateFeesPerGas.js.map +1 -1
- package/dist/esm/actions/estimateGas.js +2 -2
- package/dist/esm/actions/estimateGas.js.map +1 -1
- package/dist/esm/actions/estimateMaxPriorityFeePerGas.js +12 -0
- package/dist/esm/actions/estimateMaxPriorityFeePerGas.js.map +1 -0
- package/dist/esm/actions/getAccount.js +6 -1
- package/dist/esm/actions/getAccount.js.map +1 -1
- package/dist/esm/actions/getBalance.js +14 -5
- package/dist/esm/actions/getBalance.js.map +1 -1
- package/dist/esm/actions/getBlock.js +15 -0
- package/dist/esm/actions/getBlock.js.map +1 -0
- package/dist/esm/actions/getBlockNumber.js +3 -1
- package/dist/esm/actions/getBlockNumber.js.map +1 -1
- package/dist/esm/actions/getBlockTransactionCount.js +11 -0
- package/dist/esm/actions/getBlockTransactionCount.js.map +1 -0
- package/dist/esm/actions/getChainId.js +2 -1
- package/dist/esm/actions/getChainId.js.map +1 -1
- package/dist/esm/actions/getClient.js +3 -0
- package/dist/esm/actions/getClient.js.map +1 -1
- package/dist/esm/actions/getConnections.js +2 -1
- package/dist/esm/actions/getConnections.js.map +1 -1
- package/dist/esm/actions/getConnectorClient.js +7 -3
- package/dist/esm/actions/getConnectorClient.js.map +1 -1
- package/dist/esm/actions/getConnectors.js +11 -0
- package/dist/esm/actions/getConnectors.js.map +1 -0
- package/dist/esm/actions/getEnsAddress.js +3 -1
- package/dist/esm/actions/getEnsAddress.js.map +1 -1
- package/dist/esm/actions/getEnsAvatar.js +3 -1
- package/dist/esm/actions/getEnsAvatar.js.map +1 -1
- package/dist/esm/actions/getEnsName.js +3 -1
- package/dist/esm/actions/getEnsName.js.map +1 -1
- package/dist/esm/actions/getEnsResolver.js +3 -1
- package/dist/esm/actions/getEnsResolver.js.map +1 -1
- package/dist/esm/actions/getFeeHistory.js +11 -0
- package/dist/esm/actions/getFeeHistory.js.map +1 -0
- package/dist/esm/actions/getGasPrice.js +11 -0
- package/dist/esm/actions/getGasPrice.js.map +1 -0
- package/dist/esm/actions/getPublicClient.js +3 -0
- package/dist/esm/actions/getPublicClient.js.map +1 -1
- package/dist/esm/actions/getToken.js +5 -0
- package/dist/esm/actions/getToken.js.map +1 -1
- package/dist/esm/actions/getTransaction.js +2 -1
- package/dist/esm/actions/getTransaction.js.map +1 -1
- package/dist/esm/actions/getTransactionCount.js +11 -0
- package/dist/esm/actions/getTransactionCount.js.map +1 -0
- package/dist/esm/actions/getWalletClient.js +4 -0
- package/dist/esm/actions/getWalletClient.js.map +1 -1
- package/dist/esm/actions/multicall.js +2 -0
- package/dist/esm/actions/multicall.js.map +1 -1
- package/dist/esm/actions/readContract.js +2 -1
- package/dist/esm/actions/readContract.js.map +1 -1
- package/dist/esm/actions/readContracts.js.map +1 -1
- package/dist/esm/actions/reconnect.js +13 -7
- package/dist/esm/actions/reconnect.js.map +1 -1
- package/dist/esm/actions/sendTransaction.js +5 -8
- package/dist/esm/actions/sendTransaction.js.map +1 -1
- package/dist/esm/actions/signMessage.js +4 -2
- package/dist/esm/actions/signMessage.js.map +1 -1
- package/dist/esm/actions/signTypedData.js +2 -2
- package/dist/esm/actions/signTypedData.js.map +1 -1
- package/dist/esm/actions/simulateContract.js +6 -7
- package/dist/esm/actions/simulateContract.js.map +1 -1
- package/dist/esm/actions/switchAccount.js +3 -2
- package/dist/esm/actions/switchAccount.js.map +1 -1
- package/dist/esm/actions/switchChain.js +5 -5
- package/dist/esm/actions/switchChain.js.map +1 -1
- package/dist/esm/actions/verifyMessage.js +11 -0
- package/dist/esm/actions/verifyMessage.js.map +1 -0
- package/dist/esm/actions/verifyTypedData.js +12 -0
- package/dist/esm/actions/verifyTypedData.js.map +1 -0
- package/dist/esm/actions/waitForTransactionReceipt.js +7 -1
- package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -1
- package/dist/esm/actions/watchAccount.js +1 -1
- package/dist/esm/actions/watchAccount.js.map +1 -1
- package/dist/esm/actions/watchBlockNumber.js +2 -4
- package/dist/esm/actions/watchBlockNumber.js.map +1 -1
- package/dist/esm/actions/watchBlocks.js +26 -0
- package/dist/esm/actions/watchBlocks.js.map +1 -0
- package/dist/esm/actions/watchChainId.js +2 -1
- package/dist/esm/actions/watchChainId.js.map +1 -1
- package/dist/esm/actions/watchClient.js +2 -1
- package/dist/esm/actions/watchClient.js.map +1 -1
- package/dist/esm/actions/watchConnections.js +2 -1
- package/dist/esm/actions/watchConnections.js.map +1 -1
- package/dist/esm/actions/watchConnectors.js +10 -0
- package/dist/esm/actions/watchConnectors.js.map +1 -0
- package/dist/esm/actions/watchContractEvent.js +6 -4
- package/dist/esm/actions/watchContractEvent.js.map +1 -1
- package/dist/esm/actions/watchPendingTransactions.js +3 -4
- package/dist/esm/actions/watchPendingTransactions.js.map +1 -1
- package/dist/esm/actions/watchPublicClient.js +2 -1
- package/dist/esm/actions/watchPublicClient.js.map +1 -1
- package/dist/esm/actions/writeContract.js +9 -11
- package/dist/esm/actions/writeContract.js.map +1 -1
- package/dist/esm/connectors/createConnector.js +8 -0
- package/dist/esm/connectors/createConnector.js.map +1 -0
- package/dist/esm/connectors/injected.js +402 -0
- package/dist/esm/connectors/injected.js.map +1 -0
- package/dist/esm/connectors/mock.js +131 -0
- package/dist/esm/connectors/mock.js.map +1 -0
- package/dist/esm/createConfig.js +65 -23
- package/dist/esm/createConfig.js.map +1 -1
- package/dist/esm/createStorage.js +4 -2
- package/dist/esm/createStorage.js.map +1 -1
- package/dist/esm/errors/base.js +1 -1
- package/dist/esm/errors/base.js.map +1 -1
- package/dist/esm/errors/config.js +3 -15
- package/dist/esm/errors/config.js.map +1 -1
- package/dist/esm/errors/connector.js.map +1 -1
- package/dist/esm/exports/actions.js +43 -11
- package/dist/esm/exports/actions.js.map +1 -1
- package/dist/esm/exports/chains.js +1 -0
- package/dist/esm/exports/chains.js.map +1 -1
- package/dist/esm/exports/codegen.js +5 -0
- package/dist/esm/exports/codegen.js.map +1 -0
- package/dist/esm/exports/index.js +67 -18
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/internal.js +5 -0
- package/dist/esm/exports/internal.js.map +1 -1
- package/dist/esm/exports/query.js +10 -0
- package/dist/esm/exports/query.js.map +1 -1
- package/dist/esm/hydrate.js +34 -0
- package/dist/esm/hydrate.js.map +1 -0
- package/dist/esm/query/disconnect.js +1 -0
- package/dist/esm/query/disconnect.js.map +1 -1
- package/dist/esm/query/estimateFeesPerGas.js +1 -0
- package/dist/esm/query/estimateFeesPerGas.js.map +1 -1
- package/dist/esm/query/estimateGas.js +1 -0
- package/dist/esm/query/estimateGas.js.map +1 -1
- package/dist/esm/query/estimateMaxPriorityFeePerGas.js +19 -0
- package/dist/esm/query/estimateMaxPriorityFeePerGas.js.map +1 -0
- package/dist/esm/query/getBalance.js +6 -4
- package/dist/esm/query/getBalance.js.map +1 -1
- package/dist/esm/query/getBlock.js +18 -0
- package/dist/esm/query/getBlock.js.map +1 -0
- package/dist/esm/query/getBlockNumber.js +1 -0
- package/dist/esm/query/getBlockNumber.js.map +1 -1
- package/dist/esm/query/getBlockTransactionCount.js +20 -0
- package/dist/esm/query/getBlockTransactionCount.js.map +1 -0
- package/dist/esm/query/getConnectorClient.js +2 -0
- package/dist/esm/query/getConnectorClient.js.map +1 -1
- package/dist/esm/query/getEnsAddress.js +1 -0
- package/dist/esm/query/getEnsAddress.js.map +1 -1
- package/dist/esm/query/getEnsAvatar.js +1 -0
- package/dist/esm/query/getEnsAvatar.js.map +1 -1
- package/dist/esm/query/getEnsName.js +1 -0
- package/dist/esm/query/getEnsName.js.map +1 -1
- package/dist/esm/query/getEnsResolver.js +1 -0
- package/dist/esm/query/getEnsResolver.js.map +1 -1
- package/dist/esm/query/getFeeHistory.js +27 -0
- package/dist/esm/query/getFeeHistory.js.map +1 -0
- package/dist/esm/query/getGasPrice.js +20 -0
- package/dist/esm/query/getGasPrice.js.map +1 -0
- package/dist/esm/query/getToken.js +1 -0
- package/dist/esm/query/getToken.js.map +1 -1
- package/dist/esm/query/getTransaction.js +4 -2
- package/dist/esm/query/getTransaction.js.map +1 -1
- package/dist/esm/query/getTransactionCount.js +23 -0
- package/dist/esm/query/getTransactionCount.js.map +1 -0
- package/dist/esm/query/getWalletClient.js +2 -0
- package/dist/esm/query/getWalletClient.js.map +1 -1
- package/dist/esm/query/infiniteReadContracts.js +25 -0
- package/dist/esm/query/infiniteReadContracts.js.map +1 -0
- package/dist/esm/query/readContract.js +7 -2
- package/dist/esm/query/readContract.js.map +1 -1
- package/dist/esm/query/readContracts.js +5 -3
- package/dist/esm/query/readContracts.js.map +1 -1
- package/dist/esm/query/reconnect.js +2 -0
- package/dist/esm/query/reconnect.js.map +1 -1
- package/dist/esm/query/sendTransaction.js +1 -0
- package/dist/esm/query/sendTransaction.js.map +1 -1
- package/dist/esm/query/signTypedData.js +1 -0
- package/dist/esm/query/signTypedData.js.map +1 -1
- package/dist/esm/query/simulateContract.js +6 -1
- package/dist/esm/query/simulateContract.js.map +1 -1
- package/dist/esm/query/switchAccount.js +3 -0
- package/dist/esm/query/switchAccount.js.map +1 -1
- package/dist/esm/query/switchChain.js +2 -0
- package/dist/esm/query/switchChain.js.map +1 -1
- package/dist/esm/query/types.js +2 -1
- package/dist/esm/query/types.js.map +1 -1
- package/dist/esm/query/utils.js +13 -0
- package/dist/esm/query/utils.js.map +1 -1
- package/dist/esm/query/verifyMessage.js +21 -0
- package/dist/esm/query/verifyMessage.js.map +1 -0
- package/dist/esm/query/verifyTypedData.js +38 -0
- package/dist/esm/query/verifyTypedData.js.map +1 -0
- package/dist/esm/query/waitForTransactionReceipt.js +3 -0
- package/dist/esm/query/waitForTransactionReceipt.js.map +1 -1
- package/dist/esm/query/writeContract.js +3 -0
- package/dist/esm/query/writeContract.js.map +1 -1
- package/dist/esm/transports/connector.js +37 -0
- package/dist/esm/transports/connector.js.map +1 -0
- package/dist/esm/transports/fallback.js +6 -0
- package/dist/esm/transports/fallback.js.map +1 -0
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/types/chain.js +3 -1
- package/dist/esm/types/chain.js.map +1 -1
- package/dist/esm/types/properties.js +1 -1
- package/dist/esm/types/properties.js.map +1 -1
- package/dist/esm/types/register.js +1 -1
- package/dist/esm/types/register.js.map +1 -1
- package/dist/esm/utils/cookie.js +37 -0
- package/dist/esm/utils/cookie.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/types/actions/codegen/createReadContract.d.ts +16 -0
- package/dist/types/actions/codegen/createReadContract.d.ts.map +1 -0
- package/dist/types/actions/codegen/createSimulateContract.d.ts +20 -0
- package/dist/types/actions/codegen/createSimulateContract.d.ts.map +1 -0
- package/dist/types/actions/codegen/createWatchContractEvent.d.ts +14 -0
- package/dist/types/actions/codegen/createWatchContractEvent.d.ts.map +1 -0
- package/dist/types/actions/codegen/createWriteContract.d.ts +22 -0
- package/dist/types/actions/codegen/createWriteContract.d.ts.map +1 -0
- package/dist/types/actions/connect.d.ts +10 -11
- package/dist/types/actions/connect.d.ts.map +1 -1
- package/dist/types/actions/disconnect.d.ts +7 -6
- package/dist/types/actions/disconnect.d.ts.map +1 -1
- package/dist/types/actions/estimateFeesPerGas.d.ts +7 -5
- package/dist/types/actions/estimateFeesPerGas.d.ts.map +1 -1
- package/dist/types/actions/estimateGas.d.ts +7 -5
- package/dist/types/actions/estimateGas.d.ts.map +1 -1
- package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts +11 -0
- package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
- package/dist/types/actions/getAccount.d.ts +6 -2
- package/dist/types/actions/getAccount.d.ts.map +1 -1
- package/dist/types/actions/getBalance.d.ts +7 -5
- package/dist/types/actions/getBalance.d.ts.map +1 -1
- package/dist/types/actions/getBlock.d.ts +16 -0
- package/dist/types/actions/getBlock.d.ts.map +1 -0
- package/dist/types/actions/getBlockNumber.d.ts +7 -7
- package/dist/types/actions/getBlockNumber.d.ts.map +1 -1
- package/dist/types/actions/getBlockTransactionCount.d.ts +10 -0
- package/dist/types/actions/getBlockTransactionCount.d.ts.map +1 -0
- package/dist/types/actions/getChainId.d.ts +2 -2
- package/dist/types/actions/getChainId.d.ts.map +1 -1
- package/dist/types/actions/getClient.d.ts +3 -3
- package/dist/types/actions/getClient.d.ts.map +1 -1
- package/dist/types/actions/getConnections.d.ts +2 -2
- package/dist/types/actions/getConnections.d.ts.map +1 -1
- package/dist/types/actions/getConnectorClient.d.ts +6 -5
- package/dist/types/actions/getConnectorClient.d.ts.map +1 -1
- package/dist/types/actions/getConnectors.d.ts +5 -0
- package/dist/types/actions/getConnectors.d.ts.map +1 -0
- package/dist/types/actions/getEnsAddress.d.ts +5 -5
- package/dist/types/actions/getEnsAddress.d.ts.map +1 -1
- package/dist/types/actions/getEnsAvatar.d.ts +5 -5
- package/dist/types/actions/getEnsAvatar.d.ts.map +1 -1
- package/dist/types/actions/getEnsName.d.ts +5 -5
- package/dist/types/actions/getEnsName.d.ts.map +1 -1
- package/dist/types/actions/getEnsResolver.d.ts +5 -5
- package/dist/types/actions/getEnsResolver.d.ts.map +1 -1
- package/dist/types/actions/getFeeHistory.d.ts +10 -0
- package/dist/types/actions/getFeeHistory.d.ts.map +1 -0
- package/dist/types/actions/getGasPrice.d.ts +10 -0
- package/dist/types/actions/getGasPrice.d.ts.map +1 -0
- package/dist/types/actions/getPublicClient.d.ts +3 -3
- package/dist/types/actions/getPublicClient.d.ts.map +1 -1
- package/dist/types/actions/getToken.d.ts +10 -8
- package/dist/types/actions/getToken.d.ts.map +1 -1
- package/dist/types/actions/getTransaction.d.ts +8 -6
- package/dist/types/actions/getTransaction.d.ts.map +1 -1
- package/dist/types/actions/getTransactionCount.d.ts +10 -0
- package/dist/types/actions/getTransactionCount.d.ts.map +1 -0
- package/dist/types/actions/getWalletClient.d.ts +5 -4
- package/dist/types/actions/getWalletClient.d.ts.map +1 -1
- package/dist/types/actions/multicall.d.ts +5 -4
- package/dist/types/actions/multicall.d.ts.map +1 -1
- package/dist/types/actions/readContract.d.ts +4 -4
- package/dist/types/actions/readContract.d.ts.map +1 -1
- package/dist/types/actions/readContracts.d.ts +3 -1
- package/dist/types/actions/readContracts.d.ts.map +1 -1
- package/dist/types/actions/reconnect.d.ts +5 -4
- package/dist/types/actions/reconnect.d.ts.map +1 -1
- package/dist/types/actions/sendTransaction.d.ts +7 -5
- package/dist/types/actions/sendTransaction.d.ts.map +1 -1
- package/dist/types/actions/signMessage.d.ts +7 -5
- package/dist/types/actions/signMessage.d.ts.map +1 -1
- package/dist/types/actions/signTypedData.d.ts +7 -4
- package/dist/types/actions/signTypedData.d.ts.map +1 -1
- package/dist/types/actions/simulateContract.d.ts +15 -11
- package/dist/types/actions/simulateContract.d.ts.map +1 -1
- package/dist/types/actions/switchAccount.d.ts +5 -4
- package/dist/types/actions/switchAccount.d.ts.map +1 -1
- package/dist/types/actions/switchChain.d.ts +9 -8
- package/dist/types/actions/switchChain.d.ts.map +1 -1
- package/dist/types/actions/verifyMessage.d.ts +10 -0
- package/dist/types/actions/verifyMessage.d.ts.map +1 -0
- package/dist/types/actions/verifyTypedData.d.ts +11 -0
- package/dist/types/actions/verifyTypedData.d.ts.map +1 -0
- package/dist/types/actions/waitForTransactionReceipt.d.ts +9 -6
- package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -1
- package/dist/types/actions/watchAccount.d.ts +1 -1
- package/dist/types/actions/watchAccount.d.ts.map +1 -1
- package/dist/types/actions/watchBlockNumber.d.ts +1 -1
- package/dist/types/actions/watchBlockNumber.d.ts.map +1 -1
- package/dist/types/actions/watchBlocks.d.ts +13 -0
- package/dist/types/actions/watchBlocks.d.ts.map +1 -0
- package/dist/types/actions/watchChainId.d.ts +2 -2
- package/dist/types/actions/watchChainId.d.ts.map +1 -1
- package/dist/types/actions/watchClient.d.ts +2 -2
- package/dist/types/actions/watchClient.d.ts.map +1 -1
- package/dist/types/actions/watchConnections.d.ts +2 -2
- package/dist/types/actions/watchConnections.d.ts.map +1 -1
- package/dist/types/actions/watchConnectors.d.ts +9 -0
- package/dist/types/actions/watchConnectors.d.ts.map +1 -0
- package/dist/types/actions/watchContractEvent.d.ts +5 -5
- package/dist/types/actions/watchContractEvent.d.ts.map +1 -1
- package/dist/types/actions/watchPendingTransactions.d.ts +2 -2
- package/dist/types/actions/watchPendingTransactions.d.ts.map +1 -1
- package/dist/types/actions/watchPublicClient.d.ts +2 -2
- package/dist/types/actions/watchPublicClient.d.ts.map +1 -1
- package/dist/types/actions/writeContract.d.ts +14 -10
- package/dist/types/actions/writeContract.d.ts.map +1 -1
- package/dist/types/{createConnector.d.ts → connectors/createConnector.d.ts} +7 -4
- package/dist/types/connectors/createConnector.d.ts.map +1 -0
- package/dist/types/connectors/injected.d.ts +356 -0
- package/dist/types/connectors/injected.d.ts.map +1 -0
- package/dist/types/connectors/mock.d.ts +20 -0
- package/dist/types/connectors/mock.d.ts.map +1 -0
- package/dist/types/createConfig.d.ts +30 -20
- package/dist/types/createConfig.d.ts.map +1 -1
- package/dist/types/createStorage.d.ts +4 -4
- package/dist/types/createStorage.d.ts.map +1 -1
- package/dist/types/errors/base.d.ts +13 -7
- package/dist/types/errors/base.d.ts.map +1 -1
- package/dist/types/errors/config.d.ts +17 -9
- package/dist/types/errors/config.d.ts.map +1 -1
- package/dist/types/errors/connector.d.ts +6 -0
- package/dist/types/errors/connector.d.ts.map +1 -1
- package/dist/types/exports/actions.d.ts +56 -25
- package/dist/types/exports/actions.d.ts.map +1 -1
- package/dist/types/exports/chains.d.ts.map +1 -1
- package/dist/types/exports/codegen.d.ts +5 -0
- package/dist/types/exports/codegen.d.ts.map +1 -0
- package/dist/types/exports/index.d.ts +67 -29
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/exports/internal.d.ts +3 -1
- package/dist/types/exports/internal.d.ts.map +1 -1
- package/dist/types/exports/query.d.ts +9 -0
- package/dist/types/exports/query.d.ts.map +1 -1
- package/dist/types/hydrate.d.ts +10 -0
- package/dist/types/hydrate.d.ts.map +1 -0
- package/dist/types/query/connect.d.ts +4 -4
- package/dist/types/query/connect.d.ts.map +1 -1
- package/dist/types/query/disconnect.d.ts +4 -4
- package/dist/types/query/disconnect.d.ts.map +1 -1
- package/dist/types/query/estimateFeesPerGas.d.ts +2 -2
- package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -1
- package/dist/types/query/estimateGas.d.ts +2 -2
- package/dist/types/query/estimateGas.d.ts.map +1 -1
- package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts +27 -0
- package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
- package/dist/types/query/getBalance.d.ts +2 -2
- package/dist/types/query/getBalance.d.ts.map +1 -1
- package/dist/types/query/getBlock.d.ts +19 -0
- package/dist/types/query/getBlock.d.ts.map +1 -0
- package/dist/types/query/getBlockNumber.d.ts +9 -12
- package/dist/types/query/getBlockNumber.d.ts.map +1 -1
- package/dist/types/query/getBlockTransactionCount.d.ts +18 -0
- package/dist/types/query/getBlockTransactionCount.d.ts.map +1 -0
- package/dist/types/query/getConnectorClient.d.ts +12 -3
- package/dist/types/query/getConnectorClient.d.ts.map +1 -1
- package/dist/types/query/getEnsAddress.d.ts +2 -2
- package/dist/types/query/getEnsAddress.d.ts.map +1 -1
- package/dist/types/query/getEnsAvatar.d.ts +2 -2
- package/dist/types/query/getEnsAvatar.d.ts.map +1 -1
- package/dist/types/query/getEnsName.d.ts +2 -2
- package/dist/types/query/getEnsName.d.ts.map +1 -1
- package/dist/types/query/getEnsResolver.d.ts +2 -2
- package/dist/types/query/getEnsResolver.d.ts.map +1 -1
- package/dist/types/query/getFeeHistory.d.ts +39 -0
- package/dist/types/query/getFeeHistory.d.ts.map +1 -0
- package/dist/types/query/getGasPrice.d.ts +27 -0
- package/dist/types/query/getGasPrice.d.ts.map +1 -0
- package/dist/types/query/getToken.d.ts +5 -5
- package/dist/types/query/getToken.d.ts.map +1 -1
- package/dist/types/query/getTransaction.d.ts +7 -95
- package/dist/types/query/getTransaction.d.ts.map +1 -1
- package/dist/types/query/getTransactionCount.d.ts +36 -0
- package/dist/types/query/getTransactionCount.d.ts.map +1 -0
- package/dist/types/query/getWalletClient.d.ts +27 -256
- package/dist/types/query/getWalletClient.d.ts.map +1 -1
- package/dist/types/query/infiniteReadContracts.d.ts +60 -0
- package/dist/types/query/infiniteReadContracts.d.ts.map +1 -0
- package/dist/types/query/readContract.d.ts +6 -6
- package/dist/types/query/readContract.d.ts.map +1 -1
- package/dist/types/query/readContracts.d.ts +15 -15
- package/dist/types/query/readContracts.d.ts.map +1 -1
- package/dist/types/query/reconnect.d.ts +5 -5
- package/dist/types/query/reconnect.d.ts.map +1 -1
- package/dist/types/query/sendTransaction.d.ts +4 -4
- package/dist/types/query/sendTransaction.d.ts.map +1 -1
- package/dist/types/query/signMessage.d.ts +3 -3
- package/dist/types/query/signMessage.d.ts.map +1 -1
- package/dist/types/query/signTypedData.d.ts +224 -211
- package/dist/types/query/signTypedData.d.ts.map +1 -1
- package/dist/types/query/simulateContract.d.ts +5 -5
- package/dist/types/query/simulateContract.d.ts.map +1 -1
- package/dist/types/query/switchAccount.d.ts +5 -5
- package/dist/types/query/switchAccount.d.ts.map +1 -1
- package/dist/types/query/switchChain.d.ts +6 -6
- package/dist/types/query/switchChain.d.ts.map +1 -1
- package/dist/types/query/types.d.ts +12 -5
- package/dist/types/query/types.d.ts.map +1 -1
- package/dist/types/query/utils.d.ts +1 -1
- package/dist/types/query/utils.d.ts.map +1 -1
- package/dist/types/query/verifyMessage.d.ts +42 -0
- package/dist/types/query/verifyMessage.d.ts.map +1 -0
- package/dist/types/query/verifyTypedData.d.ts +19 -0
- package/dist/types/query/verifyTypedData.d.ts.map +1 -0
- package/dist/types/query/waitForTransactionReceipt.d.ts +9 -97
- package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -1
- package/dist/types/query/writeContract.d.ts +12 -8
- package/dist/types/query/writeContract.d.ts.map +1 -1
- package/dist/types/transports/connector.d.ts +15 -0
- package/dist/types/transports/connector.d.ts.map +1 -0
- package/dist/types/transports/fallback.d.ts +4 -0
- package/dist/types/transports/fallback.d.ts.map +1 -0
- package/dist/types/types/chain.d.ts +3 -3
- package/dist/types/types/chain.d.ts.map +1 -1
- package/dist/types/types/properties.d.ts +4 -1
- package/dist/types/types/properties.d.ts.map +1 -1
- package/dist/types/types/register.d.ts +1 -1
- package/dist/types/types/register.d.ts.map +1 -1
- package/dist/types/types/utils.d.ts +9 -3
- package/dist/types/types/utils.d.ts.map +1 -1
- package/dist/types/utils/cookie.d.ts +9 -0
- package/dist/types/utils/cookie.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/internal/package.json +5 -0
- package/package.json +25 -27
- package/query/package.json +5 -0
- package/src/actions/codegen/createReadContract.ts +100 -0
- package/src/actions/codegen/createSimulateContract.ts +122 -0
- package/src/actions/codegen/createWatchContractEvent.ts +87 -0
- package/src/actions/codegen/createWriteContract.ts +142 -0
- package/src/actions/connect.ts +32 -32
- package/src/actions/disconnect.ts +23 -20
- package/src/actions/estimateFeesPerGas.ts +7 -4
- package/src/actions/estimateGas.ts +16 -4
- package/src/actions/estimateMaxPriorityFeePerGas.ts +41 -0
- package/src/actions/getAccount.ts +11 -2
- package/src/actions/getBalance.ts +19 -8
- package/src/actions/getBlock.ts +71 -0
- package/src/actions/getBlockNumber.ts +14 -9
- package/src/actions/getBlockTransactionCount.ts +36 -0
- package/src/actions/getChainId.ts +2 -2
- package/src/actions/getClient.ts +3 -3
- package/src/actions/getConnections.ts +2 -2
- package/src/actions/getConnectorClient.ts +18 -9
- package/src/actions/getConnectors.ts +14 -0
- package/src/actions/getEnsAddress.ts +5 -4
- package/src/actions/getEnsAvatar.ts +5 -4
- package/src/actions/getEnsName.ts +5 -4
- package/src/actions/getEnsResolver.ts +5 -4
- package/src/actions/getFeeHistory.ts +32 -0
- package/src/actions/getGasPrice.ts +31 -0
- package/src/actions/getPublicClient.ts +3 -3
- package/src/actions/getToken.ts +10 -9
- package/src/actions/getTransaction.ts +8 -5
- package/src/actions/getTransactionCount.ts +31 -0
- package/src/actions/getWalletClient.ts +13 -4
- package/src/actions/multicall.ts +6 -3
- package/src/actions/readContract.ts +4 -3
- package/src/actions/readContracts.ts +4 -4
- package/src/actions/reconnect.ts +15 -10
- package/src/actions/sendTransaction.ts +20 -13
- package/src/actions/signMessage.ts +17 -5
- package/src/actions/signTypedData.ts +22 -5
- package/src/actions/simulateContract.ts +38 -31
- package/src/actions/switchAccount.ts +12 -4
- package/src/actions/switchChain.ts +27 -16
- package/src/actions/verifyMessage.ts +28 -0
- package/src/actions/verifyTypedData.ts +38 -0
- package/src/actions/waitForTransactionReceipt.ts +22 -16
- package/src/actions/watchAccount.ts +2 -1
- package/src/actions/watchBlockNumber.ts +4 -6
- package/src/actions/watchBlocks.ts +85 -0
- package/src/actions/watchChainId.ts +2 -2
- package/src/actions/watchClient.ts +2 -2
- package/src/actions/watchConnections.ts +2 -2
- package/src/actions/watchConnectors.ts +22 -0
- package/src/actions/watchContractEvent.ts +9 -10
- package/src/actions/watchPendingTransactions.ts +3 -5
- package/src/actions/watchPublicClient.ts +2 -2
- package/src/actions/writeContract.ts +52 -44
- package/src/{createConnector.ts → connectors/createConnector.ts} +12 -16
- package/src/connectors/injected.ts +556 -0
- package/src/connectors/mock.ts +176 -0
- package/src/createConfig.ts +153 -76
- package/src/createStorage.ts +7 -6
- package/src/errors/base.ts +9 -6
- package/src/errors/config.ts +20 -18
- package/src/errors/connector.ts +6 -0
- package/src/exports/actions.ts +121 -29
- package/src/exports/chains.ts +1 -0
- package/src/exports/codegen.ts +7 -0
- package/src/exports/index.ts +177 -47
- package/src/exports/internal.ts +12 -0
- package/src/exports/query.ts +82 -0
- package/src/hydrate.ts +42 -0
- package/src/query/connect.ts +4 -4
- package/src/query/disconnect.ts +5 -5
- package/src/query/estimateFeesPerGas.ts +4 -4
- package/src/query/estimateGas.ts +5 -5
- package/src/query/estimateMaxPriorityFeePerGas.ts +51 -0
- package/src/query/getBalance.ts +9 -17
- package/src/query/getBlock.ts +84 -0
- package/src/query/getBlockNumber.ts +22 -17
- package/src/query/getBlockTransactionCount.ts +62 -0
- package/src/query/getConnectorClient.ts +5 -4
- package/src/query/getEnsAddress.ts +4 -4
- package/src/query/getEnsAvatar.ts +4 -4
- package/src/query/getEnsName.ts +4 -4
- package/src/query/getEnsResolver.ts +4 -4
- package/src/query/getFeeHistory.ts +69 -0
- package/src/query/getGasPrice.ts +54 -0
- package/src/query/getToken.ts +4 -4
- package/src/query/getTransaction.ts +7 -13
- package/src/query/getTransactionCount.ts +55 -0
- package/src/query/getWalletClient.ts +5 -4
- package/src/query/infiniteReadContracts.ts +129 -0
- package/src/query/readContract.ts +14 -12
- package/src/query/readContracts.ts +16 -16
- package/src/query/reconnect.ts +6 -6
- package/src/query/sendTransaction.ts +5 -5
- package/src/query/signMessage.ts +4 -4
- package/src/query/signTypedData.ts +20 -8
- package/src/query/simulateContract.ts +12 -8
- package/src/query/switchAccount.ts +7 -7
- package/src/query/switchChain.ts +6 -6
- package/src/query/types.ts +63 -34
- package/src/query/utils.ts +16 -1
- package/src/query/verifyMessage.ts +54 -0
- package/src/query/verifyTypedData.ts +81 -0
- package/src/query/waitForTransactionReceipt.ts +6 -6
- package/src/query/writeContract.ts +39 -10
- package/src/transports/connector.ts +87 -0
- package/src/transports/fallback.ts +10 -0
- package/src/types/chain.ts +5 -4
- package/src/types/properties.ts +3 -1
- package/src/types/register.ts +1 -1
- package/src/types/utils.ts +10 -2
- package/src/utils/cookie.ts +34 -0
- package/src/version.ts +1 -1
- package/dist/esm/createConnector.js +0 -8
- package/dist/esm/createConnector.js.map +0 -1
- package/dist/esm/utils/assertActiveChain.js +0 -14
- package/dist/esm/utils/assertActiveChain.js.map +0 -1
- package/dist/types/createConnector.d.ts.map +0 -1
- package/dist/types/utils/assertActiveChain.d.ts +0 -8
- package/dist/types/utils/assertActiveChain.d.ts.map +0 -1
- package/src/utils/assertActiveChain.ts +0 -26
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type Address,
|
|
3
|
+
type EIP1193RequestFn,
|
|
4
|
+
type Hex,
|
|
5
|
+
RpcRequestError,
|
|
6
|
+
SwitchChainError,
|
|
7
|
+
type Transport,
|
|
8
|
+
UserRejectedRequestError,
|
|
9
|
+
type WalletRpcSchema,
|
|
10
|
+
custom,
|
|
11
|
+
fromHex,
|
|
12
|
+
getAddress,
|
|
13
|
+
numberToHex,
|
|
14
|
+
} from 'viem'
|
|
15
|
+
import { rpc } from 'viem/utils'
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
ChainNotConfiguredError,
|
|
19
|
+
ConnectorNotConnectedError,
|
|
20
|
+
} from '../errors/config.js'
|
|
21
|
+
import { normalizeChainId } from '../utils/normalizeChainId.js'
|
|
22
|
+
import { createConnector } from './createConnector.js'
|
|
23
|
+
|
|
24
|
+
export type MockParameters = {
|
|
25
|
+
accounts: readonly [Address, ...Address[]]
|
|
26
|
+
features?:
|
|
27
|
+
| {
|
|
28
|
+
connectError?: boolean | Error | undefined
|
|
29
|
+
switchChainError?: boolean | Error | undefined
|
|
30
|
+
signMessageError?: boolean | Error | undefined
|
|
31
|
+
signTypedDataError?: boolean | Error | undefined
|
|
32
|
+
reconnect?: boolean | undefined
|
|
33
|
+
}
|
|
34
|
+
| undefined
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
mock.type = 'mock' as const
|
|
38
|
+
export function mock(parameters: MockParameters) {
|
|
39
|
+
const features = parameters.features ?? {}
|
|
40
|
+
|
|
41
|
+
type Provider = ReturnType<
|
|
42
|
+
Transport<'custom', {}, EIP1193RequestFn<WalletRpcSchema>>
|
|
43
|
+
>
|
|
44
|
+
let connected = false
|
|
45
|
+
let connectedChainId: number
|
|
46
|
+
|
|
47
|
+
return createConnector<Provider>((config) => ({
|
|
48
|
+
id: 'mock',
|
|
49
|
+
name: 'Mock Connector',
|
|
50
|
+
type: mock.type,
|
|
51
|
+
async setup() {
|
|
52
|
+
connectedChainId = config.chains[0].id
|
|
53
|
+
},
|
|
54
|
+
async connect({ chainId } = {}) {
|
|
55
|
+
if (features.connectError) {
|
|
56
|
+
if (typeof features.connectError === 'boolean')
|
|
57
|
+
throw new UserRejectedRequestError(new Error('Failed to connect.'))
|
|
58
|
+
throw features.connectError
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const provider = await this.getProvider()
|
|
62
|
+
const accounts = await provider.request({
|
|
63
|
+
method: 'eth_requestAccounts',
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
let currentChainId = await this.getChainId()
|
|
67
|
+
if (chainId && currentChainId !== chainId) {
|
|
68
|
+
const chain = await this.switchChain!({ chainId })
|
|
69
|
+
currentChainId = chain.id
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
connected = true
|
|
73
|
+
|
|
74
|
+
return { accounts, chainId: currentChainId }
|
|
75
|
+
},
|
|
76
|
+
async disconnect() {
|
|
77
|
+
connected = false
|
|
78
|
+
},
|
|
79
|
+
async getAccounts() {
|
|
80
|
+
if (!connected) throw new ConnectorNotConnectedError()
|
|
81
|
+
const provider = await this.getProvider()
|
|
82
|
+
const accounts = await provider.request({ method: 'eth_accounts' })
|
|
83
|
+
return accounts.map(getAddress)
|
|
84
|
+
},
|
|
85
|
+
async getChainId() {
|
|
86
|
+
const provider = await this.getProvider()
|
|
87
|
+
const hexChainId = await provider.request({ method: 'eth_chainId' })
|
|
88
|
+
return fromHex(hexChainId, 'number')
|
|
89
|
+
},
|
|
90
|
+
async isAuthorized() {
|
|
91
|
+
if (!features.reconnect) return false
|
|
92
|
+
if (!connected) return false
|
|
93
|
+
const accounts = await this.getAccounts()
|
|
94
|
+
return !!accounts.length
|
|
95
|
+
},
|
|
96
|
+
async switchChain({ chainId }) {
|
|
97
|
+
const provider = await this.getProvider()
|
|
98
|
+
const chain = config.chains.find((x) => x.id === chainId)
|
|
99
|
+
if (!chain) throw new SwitchChainError(new ChainNotConfiguredError())
|
|
100
|
+
|
|
101
|
+
await provider.request({
|
|
102
|
+
method: 'wallet_switchEthereumChain',
|
|
103
|
+
params: [{ chainId: numberToHex(chainId) }],
|
|
104
|
+
})
|
|
105
|
+
return chain
|
|
106
|
+
},
|
|
107
|
+
onAccountsChanged(accounts) {
|
|
108
|
+
if (accounts.length === 0) this.onDisconnect()
|
|
109
|
+
else config.emitter.emit('change', { accounts: accounts.map(getAddress) })
|
|
110
|
+
},
|
|
111
|
+
onChainChanged(chain) {
|
|
112
|
+
const chainId = normalizeChainId(chain)
|
|
113
|
+
config.emitter.emit('change', { chainId })
|
|
114
|
+
},
|
|
115
|
+
async onDisconnect(_error) {
|
|
116
|
+
config.emitter.emit('disconnect')
|
|
117
|
+
connected = false
|
|
118
|
+
},
|
|
119
|
+
async getProvider({ chainId } = {}) {
|
|
120
|
+
const chain =
|
|
121
|
+
config.chains.find((x) => x.id === chainId) ?? config.chains[0]
|
|
122
|
+
const url = chain.rpcUrls.default.http[0]!
|
|
123
|
+
|
|
124
|
+
const request: EIP1193RequestFn = async ({ method, params }) => {
|
|
125
|
+
// eth methods
|
|
126
|
+
if (method === 'eth_chainId') return numberToHex(connectedChainId)
|
|
127
|
+
if (method === 'eth_requestAccounts') return parameters.accounts
|
|
128
|
+
if (method === 'eth_signTypedData_v4')
|
|
129
|
+
if (features.signTypedDataError) {
|
|
130
|
+
if (typeof features.signTypedDataError === 'boolean')
|
|
131
|
+
throw new UserRejectedRequestError(
|
|
132
|
+
new Error('Failed to sign typed data.'),
|
|
133
|
+
)
|
|
134
|
+
throw features.signTypedDataError
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// wallet methods
|
|
138
|
+
if (method === 'wallet_switchEthereumChain') {
|
|
139
|
+
if (features.switchChainError) {
|
|
140
|
+
if (typeof features.switchChainError === 'boolean')
|
|
141
|
+
throw new UserRejectedRequestError(
|
|
142
|
+
new Error('Failed to switch chain.'),
|
|
143
|
+
)
|
|
144
|
+
throw features.switchChainError
|
|
145
|
+
}
|
|
146
|
+
type Params = [{ chainId: Hex }]
|
|
147
|
+
connectedChainId = fromHex((params as Params)[0].chainId, 'number')
|
|
148
|
+
this.onChainChanged(connectedChainId.toString())
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// other methods
|
|
153
|
+
if (method === 'personal_sign') {
|
|
154
|
+
if (features.signMessageError) {
|
|
155
|
+
if (typeof features.signMessageError === 'boolean')
|
|
156
|
+
throw new UserRejectedRequestError(
|
|
157
|
+
new Error('Failed to sign message.'),
|
|
158
|
+
)
|
|
159
|
+
throw features.signMessageError
|
|
160
|
+
}
|
|
161
|
+
// Change `personal_sign` to `eth_sign` and swap params
|
|
162
|
+
method = 'eth_sign'
|
|
163
|
+
type Params = [data: Hex, address: Address]
|
|
164
|
+
params = [(params as Params)[1], (params as Params)[0]]
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const body = { method, params }
|
|
168
|
+
const { error, result } = await rpc.http(url, { body })
|
|
169
|
+
if (error) throw new RpcRequestError({ body, error, url })
|
|
170
|
+
|
|
171
|
+
return result
|
|
172
|
+
}
|
|
173
|
+
return custom({ request })({ retryCount: 0 })
|
|
174
|
+
},
|
|
175
|
+
}))
|
|
176
|
+
}
|
package/src/createConfig.ts
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type EIP6963ProviderDetail,
|
|
3
|
+
type Store as MipdStore,
|
|
4
|
+
createStore as createMipd,
|
|
5
|
+
} from 'mipd'
|
|
1
6
|
import {
|
|
2
7
|
type Address,
|
|
3
8
|
type Chain,
|
|
4
9
|
type Client,
|
|
5
10
|
type ClientConfig as viem_ClientConfig,
|
|
6
|
-
type Transport,
|
|
11
|
+
type Transport as viem_Transport,
|
|
7
12
|
createClient,
|
|
8
13
|
} from 'viem'
|
|
9
14
|
import { persist, subscribeWithSelector } from 'zustand/middleware'
|
|
10
|
-
import { createStore } from 'zustand/vanilla'
|
|
15
|
+
import { type Mutate, type StoreApi, createStore } from 'zustand/vanilla'
|
|
11
16
|
|
|
12
17
|
import {
|
|
13
18
|
type ConnectorEventMap,
|
|
14
19
|
type CreateConnectorFn,
|
|
15
|
-
} from './createConnector.js'
|
|
20
|
+
} from './connectors/createConnector.js'
|
|
21
|
+
import { injected } from './connectors/injected.js'
|
|
16
22
|
import { Emitter, type EventData, createEmitter } from './createEmitter.js'
|
|
17
23
|
import { type Storage, createStorage, noopStorage } from './createStorage.js'
|
|
18
24
|
import { ChainNotConfiguredError } from './errors/config.js'
|
|
@@ -29,8 +35,9 @@ export type CreateConfigParameters<
|
|
|
29
35
|
{
|
|
30
36
|
chains: chains
|
|
31
37
|
connectors?: CreateConnectorFn[] | undefined
|
|
32
|
-
|
|
38
|
+
multiInjectedProviderDiscovery?: boolean | undefined
|
|
33
39
|
storage?: Storage | null | undefined
|
|
40
|
+
ssr?: boolean | undefined
|
|
34
41
|
syncConnectedChain?: boolean | undefined
|
|
35
42
|
} & OneOf<
|
|
36
43
|
| ({ transports: transports } & {
|
|
@@ -45,57 +52,9 @@ export type CreateConfigParameters<
|
|
|
45
52
|
chains[number]
|
|
46
53
|
>
|
|
47
54
|
}
|
|
48
|
-
>
|
|
49
|
-
OneOf<
|
|
50
|
-
| {
|
|
51
|
-
/** @deprecated Use `reconnectOnMount` instead */
|
|
52
|
-
autoConnect?: boolean | undefined
|
|
53
|
-
}
|
|
54
|
-
| { reconnectOnMount?: boolean | undefined }
|
|
55
|
-
>
|
|
55
|
+
>
|
|
56
56
|
>
|
|
57
57
|
|
|
58
|
-
export type Config<
|
|
59
|
-
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
60
|
-
transports extends Record<chains[number]['id'], Transport> = Record<
|
|
61
|
-
chains[number]['id'],
|
|
62
|
-
Transport
|
|
63
|
-
>,
|
|
64
|
-
> = {
|
|
65
|
-
readonly chains: chains
|
|
66
|
-
readonly connectors: readonly Connector[]
|
|
67
|
-
readonly state: State<chains>
|
|
68
|
-
readonly storage: Storage | null
|
|
69
|
-
|
|
70
|
-
getClient<chainId extends chains[number]['id']>(parameters?: {
|
|
71
|
-
chainId?: chainId | chains[number]['id'] | undefined
|
|
72
|
-
}): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
|
|
73
|
-
setState<tchains extends readonly [Chain, ...Chain[]] = chains>(
|
|
74
|
-
value: State<tchains> | ((state: State<tchains>) => State<tchains>),
|
|
75
|
-
): void
|
|
76
|
-
subscribe<state>(
|
|
77
|
-
selector: (state: State<chains>) => state,
|
|
78
|
-
listener: (selectedState: state, previousSelectedState: state) => void,
|
|
79
|
-
options?:
|
|
80
|
-
| {
|
|
81
|
-
equalityFn?: ((a: state, b: state) => boolean) | undefined
|
|
82
|
-
fireImmediately?: boolean | undefined
|
|
83
|
-
}
|
|
84
|
-
| undefined,
|
|
85
|
-
): () => void
|
|
86
|
-
|
|
87
|
-
_internal: {
|
|
88
|
-
readonly reconnectOnMount: boolean
|
|
89
|
-
readonly syncConnectedChain: boolean
|
|
90
|
-
readonly transports: transports
|
|
91
|
-
|
|
92
|
-
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
93
|
-
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
94
|
-
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
95
|
-
setup(connectorFn: CreateConnectorFn): Connector
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
58
|
export function createConfig<
|
|
100
59
|
const chains extends readonly [Chain, ...Chain[]],
|
|
101
60
|
transports extends Record<chains[number]['id'], Transport>,
|
|
@@ -103,9 +62,8 @@ export function createConfig<
|
|
|
103
62
|
parameters: CreateConfigParameters<chains, transports>,
|
|
104
63
|
): Config<chains, transports> {
|
|
105
64
|
const {
|
|
106
|
-
autoConnect,
|
|
107
65
|
chains,
|
|
108
|
-
|
|
66
|
+
multiInjectedProviderDiscovery = true,
|
|
109
67
|
storage = createStorage({
|
|
110
68
|
storage:
|
|
111
69
|
typeof window !== 'undefined' && window.localStorage
|
|
@@ -113,6 +71,7 @@ export function createConfig<
|
|
|
113
71
|
: noopStorage,
|
|
114
72
|
}),
|
|
115
73
|
syncConnectedChain = true,
|
|
74
|
+
ssr,
|
|
116
75
|
...rest
|
|
117
76
|
} = parameters
|
|
118
77
|
|
|
@@ -120,8 +79,20 @@ export function createConfig<
|
|
|
120
79
|
// Set up connectors, clients, etc.
|
|
121
80
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
122
81
|
|
|
123
|
-
const
|
|
124
|
-
|
|
82
|
+
const mipd =
|
|
83
|
+
typeof window !== 'undefined' && multiInjectedProviderDiscovery
|
|
84
|
+
? createMipd()
|
|
85
|
+
: undefined
|
|
86
|
+
|
|
87
|
+
const connectors = createStore(() =>
|
|
88
|
+
[
|
|
89
|
+
...(rest.connectors ?? []),
|
|
90
|
+
...(!ssr
|
|
91
|
+
? mipd?.getProviders().map(providerDetailToConnector) ?? []
|
|
92
|
+
: []),
|
|
93
|
+
].map(setup),
|
|
94
|
+
)
|
|
95
|
+
function setup(connectorFn: CreateConnectorFn): Connector {
|
|
125
96
|
// Set up emitter with uid and add to connector so they are "linked" together.
|
|
126
97
|
const emitter = createEmitter<ConnectorEventMap>(uid())
|
|
127
98
|
const connector = {
|
|
@@ -130,13 +101,19 @@ export function createConfig<
|
|
|
130
101
|
uid: emitter.uid,
|
|
131
102
|
}
|
|
132
103
|
|
|
133
|
-
// Start listening for `connect` events
|
|
104
|
+
// Start listening for `connect` events on connector setup
|
|
134
105
|
// This allows connectors to "connect" themselves without user interaction (e.g. MetaMask's "Manually connect to current site")
|
|
135
|
-
|
|
106
|
+
emitter.on('connect', connect)
|
|
136
107
|
connector.setup?.()
|
|
137
108
|
|
|
138
109
|
return connector
|
|
139
110
|
}
|
|
111
|
+
function providerDetailToConnector(providerDetail: EIP6963ProviderDetail) {
|
|
112
|
+
const { info, provider } = providerDetail
|
|
113
|
+
return injected({
|
|
114
|
+
target: { ...info, id: info.rdns, provider: provider as any },
|
|
115
|
+
})
|
|
116
|
+
}
|
|
140
117
|
|
|
141
118
|
const clients = new Map<number, Client<Transport, chains[number]>>()
|
|
142
119
|
function getClient<chainId extends chains[number]['id']>(
|
|
@@ -146,7 +123,6 @@ export function createConfig<
|
|
|
146
123
|
const chain = chains.find((x) => x.id === chainId)
|
|
147
124
|
|
|
148
125
|
// If the target chain is not configured, use the client of the current chain.
|
|
149
|
-
// TODO: should we error instead? idk. figure out later.
|
|
150
126
|
type Return = Client<Transport, Extract<chains[number], { id: chainId }>>
|
|
151
127
|
{
|
|
152
128
|
const client = clients.get(store.getState().chainId)
|
|
@@ -179,7 +155,11 @@ export function createConfig<
|
|
|
179
155
|
...properties,
|
|
180
156
|
chain,
|
|
181
157
|
batch: properties.batch ?? { multicall: true },
|
|
182
|
-
transport:
|
|
158
|
+
transport: (parameters) =>
|
|
159
|
+
rest.transports[chainId]({
|
|
160
|
+
...parameters,
|
|
161
|
+
connectors,
|
|
162
|
+
}),
|
|
183
163
|
})
|
|
184
164
|
}
|
|
185
165
|
|
|
@@ -206,13 +186,12 @@ export function createConfig<
|
|
|
206
186
|
name: 'store',
|
|
207
187
|
partialize(state) {
|
|
208
188
|
return {
|
|
209
|
-
chainId: state.chainId,
|
|
210
189
|
connections: state.connections,
|
|
190
|
+
chainId: state.chainId,
|
|
211
191
|
current: state.current,
|
|
212
|
-
status: state.status,
|
|
213
192
|
} satisfies PartializedState
|
|
214
193
|
},
|
|
215
|
-
skipHydration:
|
|
194
|
+
skipHydration: ssr,
|
|
216
195
|
storage: storage as Storage<Record<string, unknown>>,
|
|
217
196
|
version: 1,
|
|
218
197
|
})
|
|
@@ -241,6 +220,23 @@ export function createConfig<
|
|
|
241
220
|
},
|
|
242
221
|
)
|
|
243
222
|
|
|
223
|
+
// EIP-6963 subscribe for new wallet providers
|
|
224
|
+
mipd?.subscribe((providerDetails) => {
|
|
225
|
+
const currentConnectorIds = new Map()
|
|
226
|
+
for (const connector of connectors.getState()) {
|
|
227
|
+
currentConnectorIds.set(connector.id, true)
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
const newConnectors: Connector[] = []
|
|
231
|
+
for (const providerDetail of providerDetails) {
|
|
232
|
+
const connector = setup(providerDetailToConnector(providerDetail))
|
|
233
|
+
if (currentConnectorIds.has(connector.id)) continue
|
|
234
|
+
newConnectors.push(connector)
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
connectors.setState((x) => [...x, ...newConnectors], true)
|
|
238
|
+
})
|
|
239
|
+
|
|
244
240
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
245
241
|
// Emitter listeners
|
|
246
242
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -261,11 +257,15 @@ export function createConfig<
|
|
|
261
257
|
})
|
|
262
258
|
}
|
|
263
259
|
function connect(data: EventData<ConnectorEventMap, 'connect'>) {
|
|
264
|
-
// Disable handling if reconnecting
|
|
265
|
-
if (
|
|
260
|
+
// Disable handling if reconnecting/connecting
|
|
261
|
+
if (
|
|
262
|
+
store.getState().status === 'connecting' ||
|
|
263
|
+
store.getState().status === 'reconnecting'
|
|
264
|
+
)
|
|
265
|
+
return
|
|
266
266
|
|
|
267
267
|
store.setState((x) => {
|
|
268
|
-
const connector = connectors.find((x) => x.uid === data.uid)
|
|
268
|
+
const connector = connectors.getState().find((x) => x.uid === data.uid)
|
|
269
269
|
if (!connector) return x
|
|
270
270
|
return {
|
|
271
271
|
...x,
|
|
@@ -309,13 +309,15 @@ export function createConfig<
|
|
|
309
309
|
|
|
310
310
|
return {
|
|
311
311
|
chains: chains as chains,
|
|
312
|
-
connectors
|
|
313
|
-
|
|
314
|
-
return store.getState() as unknown as State<chains>
|
|
312
|
+
get connectors() {
|
|
313
|
+
return connectors.getState()
|
|
315
314
|
},
|
|
316
315
|
storage,
|
|
317
316
|
|
|
318
317
|
getClient,
|
|
318
|
+
get state() {
|
|
319
|
+
return store.getState() as unknown as State<chains>
|
|
320
|
+
},
|
|
319
321
|
setState(value) {
|
|
320
322
|
let newState: State
|
|
321
323
|
if (typeof value === 'function') newState = value(store.getState() as any)
|
|
@@ -332,18 +334,29 @@ export function createConfig<
|
|
|
332
334
|
return store.subscribe(
|
|
333
335
|
selector as unknown as (state: State) => any,
|
|
334
336
|
listener,
|
|
335
|
-
options
|
|
337
|
+
options
|
|
338
|
+
? { ...options, fireImmediately: options.emitImmediately }
|
|
339
|
+
: undefined,
|
|
336
340
|
)
|
|
337
341
|
},
|
|
338
342
|
|
|
339
343
|
_internal: {
|
|
340
|
-
|
|
344
|
+
mipd,
|
|
345
|
+
store,
|
|
346
|
+
ssr: Boolean(ssr),
|
|
341
347
|
syncConnectedChain,
|
|
342
348
|
transports: rest.transports as transports,
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
349
|
+
connectors: {
|
|
350
|
+
providerDetailToConnector,
|
|
351
|
+
setup,
|
|
352
|
+
setState: (value) =>
|
|
353
|
+
connectors.setState(
|
|
354
|
+
typeof value === 'function' ? value(connectors.getState()) : value,
|
|
355
|
+
true,
|
|
356
|
+
),
|
|
357
|
+
subscribe: (listener) => connectors.subscribe(listener),
|
|
358
|
+
},
|
|
359
|
+
events: { change, connect, disconnect },
|
|
347
360
|
},
|
|
348
361
|
}
|
|
349
362
|
}
|
|
@@ -352,6 +365,64 @@ export function createConfig<
|
|
|
352
365
|
// Types
|
|
353
366
|
/////////////////////////////////////////////////////////////////////////////////////////////////
|
|
354
367
|
|
|
368
|
+
export type Config<
|
|
369
|
+
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
370
|
+
transports extends Record<chains[number]['id'], Transport> = Record<
|
|
371
|
+
chains[number]['id'],
|
|
372
|
+
Transport
|
|
373
|
+
>,
|
|
374
|
+
> = {
|
|
375
|
+
readonly chains: chains
|
|
376
|
+
readonly connectors: readonly Connector[]
|
|
377
|
+
readonly storage: Storage | null
|
|
378
|
+
|
|
379
|
+
readonly state: State<chains>
|
|
380
|
+
setState<tchains extends readonly [Chain, ...Chain[]] = chains>(
|
|
381
|
+
value: State<tchains> | ((state: State<tchains>) => State<tchains>),
|
|
382
|
+
): void
|
|
383
|
+
subscribe<state>(
|
|
384
|
+
selector: (state: State<chains>) => state,
|
|
385
|
+
listener: (state: state, previousState: state) => void,
|
|
386
|
+
options?:
|
|
387
|
+
| {
|
|
388
|
+
emitImmediately?: boolean | undefined
|
|
389
|
+
equalityFn?: ((a: state, b: state) => boolean) | undefined
|
|
390
|
+
}
|
|
391
|
+
| undefined,
|
|
392
|
+
): () => void
|
|
393
|
+
|
|
394
|
+
getClient<chainId extends chains[number]['id']>(parameters?: {
|
|
395
|
+
chainId?: chainId | chains[number]['id'] | undefined
|
|
396
|
+
}): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
|
|
397
|
+
|
|
398
|
+
_internal: {
|
|
399
|
+
readonly mipd: MipdStore | undefined
|
|
400
|
+
readonly store: Mutate<StoreApi<any>, [['zustand/persist', any]]>
|
|
401
|
+
readonly ssr: boolean
|
|
402
|
+
readonly syncConnectedChain: boolean
|
|
403
|
+
readonly transports: transports
|
|
404
|
+
|
|
405
|
+
connectors: {
|
|
406
|
+
providerDetailToConnector(
|
|
407
|
+
providerDetail: EIP6963ProviderDetail,
|
|
408
|
+
): CreateConnectorFn
|
|
409
|
+
setup(connectorFn: CreateConnectorFn): Connector
|
|
410
|
+
setState(value: Connector[] | ((state: Connector[]) => Connector[])): void
|
|
411
|
+
subscribe(
|
|
412
|
+
listener: (
|
|
413
|
+
state: readonly Connector[],
|
|
414
|
+
prevState: readonly Connector[],
|
|
415
|
+
) => void,
|
|
416
|
+
): () => void
|
|
417
|
+
}
|
|
418
|
+
events: {
|
|
419
|
+
change(data: EventData<ConnectorEventMap, 'change'>): void
|
|
420
|
+
connect(data: EventData<ConnectorEventMap, 'connect'>): void
|
|
421
|
+
disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
355
426
|
export type State<
|
|
356
427
|
chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
|
|
357
428
|
> = {
|
|
@@ -376,6 +447,12 @@ export type Connector = ReturnType<CreateConnectorFn> & {
|
|
|
376
447
|
uid: string
|
|
377
448
|
}
|
|
378
449
|
|
|
450
|
+
export type Transport = (
|
|
451
|
+
params: Parameters<viem_Transport>[0] & {
|
|
452
|
+
connectors?: StoreApi<Connector[]>
|
|
453
|
+
},
|
|
454
|
+
) => ReturnType<viem_Transport>
|
|
455
|
+
|
|
379
456
|
type ClientConfig = LooseOmit<
|
|
380
457
|
viem_ClientConfig,
|
|
381
458
|
'account' | 'chain' | 'key' | 'name' | 'transport' | 'type'
|
package/src/createStorage.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PartializedState } from './createConfig.js'
|
|
2
|
-
import type
|
|
2
|
+
import { type Evaluate } from './types/utils.js'
|
|
3
3
|
import { deserialize as deserialize_ } from './utils/deserialize.js'
|
|
4
4
|
import { serialize as serialize_ } from './utils/serialize.js'
|
|
5
5
|
|
|
@@ -14,6 +14,7 @@ export type Storage<
|
|
|
14
14
|
///
|
|
15
15
|
storageItemMap extends StorageItemMap = StorageItemMap & itemMap,
|
|
16
16
|
> = {
|
|
17
|
+
key: string
|
|
17
18
|
getItem<
|
|
18
19
|
key extends keyof storageItemMap,
|
|
19
20
|
value extends storageItemMap[key],
|
|
@@ -31,7 +32,7 @@ export type Storage<
|
|
|
31
32
|
removeItem(key: keyof storageItemMap): void | Promise<void>
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
type BaseStorage = {
|
|
35
|
+
export type BaseStorage = {
|
|
35
36
|
getItem(
|
|
36
37
|
key: string,
|
|
37
38
|
): string | null | undefined | Promise<string | null | undefined>
|
|
@@ -43,7 +44,7 @@ export type CreateStorageParameters = {
|
|
|
43
44
|
deserialize?: (<T>(value: string) => T) | undefined
|
|
44
45
|
key?: string | undefined
|
|
45
46
|
serialize?: (<T>(value: T) => string) | undefined
|
|
46
|
-
storage
|
|
47
|
+
storage?: Evaluate<BaseStorage> | undefined
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
export function createStorage<
|
|
@@ -54,17 +55,17 @@ export function createStorage<
|
|
|
54
55
|
deserialize = deserialize_,
|
|
55
56
|
key: prefix = 'wagmi',
|
|
56
57
|
serialize = serialize_,
|
|
57
|
-
storage,
|
|
58
|
+
storage = noopStorage,
|
|
58
59
|
} = parameters
|
|
59
60
|
|
|
60
61
|
function unwrap<type>(value: type): type | Promise<type> {
|
|
61
|
-
if (value instanceof Promise)
|
|
62
|
-
return value.then((x) => x).catch(() => undefined)
|
|
62
|
+
if (value instanceof Promise) return value.then((x) => x).catch(() => null)
|
|
63
63
|
return value
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
return {
|
|
67
67
|
...storage,
|
|
68
|
+
key: prefix,
|
|
68
69
|
async getItem(key, defaultValue) {
|
|
69
70
|
const value = storage.getItem(`${prefix}.${key as string}`)
|
|
70
71
|
const unwrapped = await unwrap(value)
|
package/src/errors/base.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import type { Evaluate, OneOf } from '../types/utils.js'
|
|
2
2
|
import { getVersion } from '../utils/getVersion.js'
|
|
3
3
|
|
|
4
|
+
export type ErrorType<name extends string = 'Error'> = Error & { name: name }
|
|
5
|
+
|
|
4
6
|
type BaseErrorOptions = Evaluate<
|
|
5
|
-
{
|
|
6
|
-
docsPath?: string
|
|
7
|
-
docsSlug?: string
|
|
8
|
-
metaMessages?: string[]
|
|
9
|
-
}
|
|
7
|
+
OneOf<{ details?: string | undefined } | { cause: BaseError | Error }> & {
|
|
8
|
+
docsPath?: string | undefined
|
|
9
|
+
docsSlug?: string | undefined
|
|
10
|
+
metaMessages?: string[] | undefined
|
|
11
|
+
}
|
|
10
12
|
>
|
|
11
13
|
|
|
14
|
+
export type BaseErrorType = BaseError & { name: 'WagmiCoreError' }
|
|
12
15
|
export class BaseError extends Error {
|
|
13
16
|
details: string
|
|
14
17
|
docsPath?: string | undefined
|
|
@@ -17,7 +20,7 @@ export class BaseError extends Error {
|
|
|
17
20
|
|
|
18
21
|
override name = 'WagmiCoreError'
|
|
19
22
|
get docsBaseUrl() {
|
|
20
|
-
return 'https://
|
|
23
|
+
return 'https://wagmi.sh/core'
|
|
21
24
|
}
|
|
22
25
|
get version() {
|
|
23
26
|
return getVersion()
|