@multiplatform.one/web3 7.19.0 → 7.20.0
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 +49 -4
- package/dist/cjs/bridge/BridgeClient.native.js.map +1 -1
- package/dist/cjs/bridge/BridgeHost.native.js.map +1 -1
- package/dist/cjs/bridge/SolanaBridge.native.js.map +1 -1
- package/dist/cjs/bridge/base64.native.js.map +1 -1
- package/dist/cjs/bridge/bridgeConnector.native.js.map +1 -1
- package/dist/cjs/bridge/eip1193.native.js.map +1 -1
- package/dist/cjs/bridge/index.native.js.map +1 -1
- package/dist/cjs/bridge/postMessageTransport.native.js.map +1 -1
- package/dist/cjs/bridge/protocol.native.js.map +1 -1
- package/dist/cjs/bridge/transport.native.js.map +1 -1
- package/dist/cjs/bundler/metaMaskConnectTimeouts.cjs +92 -0
- package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js +123 -0
- package/dist/cjs/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
- package/dist/cjs/clients/adapter.native.js.map +1 -1
- package/dist/cjs/clients/bitcoin.native.js.map +1 -1
- package/dist/cjs/clients/connector.native.js.map +1 -1
- package/dist/cjs/clients/evm.native.js.map +1 -1
- package/dist/cjs/clients/gpg.native.js.map +1 -1
- package/dist/cjs/clients/hooks.native.js.map +1 -1
- package/dist/cjs/clients/index.native.js.map +1 -1
- package/dist/cjs/clients/solana.native.js.map +1 -1
- package/dist/cjs/clients/solanaMessage.native.js.map +1 -1
- package/dist/cjs/clients/sui.native.js.map +1 -1
- package/dist/cjs/clients/types.native.js.map +1 -1
- package/dist/cjs/clients/useSolanaClient.native.js.map +1 -1
- package/dist/cjs/clients/walletStandard.native.js.map +1 -1
- package/dist/cjs/components/NetworkSwitcher.native.js.map +1 -1
- package/dist/cjs/components/TransactionStatus.native.js.map +1 -1
- package/dist/cjs/components/index.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/BitcoinAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/EthereumAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SolanaAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/SuiAdapter.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/discover.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/index.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/messages.native.js.map +1 -1
- package/dist/cjs/connectkit/adapters/types.native.js.map +1 -1
- package/dist/cjs/connectkit/assets/chains.native.js.map +1 -1
- package/dist/cjs/connectkit/components/BalanceButton/index.native.js +1 -1
- package/dist/cjs/connectkit/components/BalanceButton/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/Avatar/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/Avatar/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/Chain/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/Chain/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js +2 -2
- package/dist/cjs/connectkit/components/Common/ChainSelect/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelectDropdown/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelectList/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ChainSelectList/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.cjs +10 -29
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js +11 -32
- package/dist/cjs/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Common/ConnectorList/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectButton/index.native.js +4 -4
- package/dist/cjs/connectkit/components/ConnectButton/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectButton/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.cjs +4 -38
- package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js +5 -43
- package/dist/cjs/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/CircleSpinner/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/SquircleSpinner/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.cjs +0 -14
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +10 -65
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithInjector/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/ConnectModal/demo.cjs +0 -15
- package/dist/cjs/connectkit/components/ConnectModal/demo.native.js +9 -24
- package/dist/cjs/connectkit/components/ConnectModal/demo.native.js.map +1 -1
- package/dist/cjs/connectkit/components/NetworkButton/index.native.js +2 -2
- package/dist/cjs/connectkit/components/NetworkButton/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/About/graphics.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/About/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/About/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js +1 -1
- package/dist/cjs/connectkit/components/Pages/Connectors/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Connectors/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/DownloadApp/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Onboarding/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Onboarding/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Profile/index.native.js +2 -2
- package/dist/cjs/connectkit/components/Pages/Profile/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/Profile/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js +3 -3
- package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/SignInWithEthereum/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js +1 -1
- package/dist/cjs/connectkit/components/Pages/SwitchNetworks/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js +1 -1
- package/dist/cjs/connectkit/components/Standard/SIWE/index.native.js.map +1 -1
- package/dist/cjs/connectkit/components/Standard/SIWE/styles.native.js.map +1 -1
- package/dist/cjs/connectkit/components/contexts/web3/index.cjs +0 -15
- package/dist/cjs/connectkit/components/contexts/web3/index.native.js +0 -17
- package/dist/cjs/connectkit/components/contexts/web3/index.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/aaveAccountConnector.cjs +57 -0
- package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js +67 -0
- package/dist/cjs/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
- package/dist/cjs/connectkit/connectors/createWalletMessage.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/embeddedDesktop.cjs +1 -1
- package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js +1 -1
- package/dist/cjs/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/ensureWalletConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/getWalletConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.cjs +255 -0
- package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
- package/dist/cjs/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
- package/dist/cjs/connectkit/connectors/syntheticChains.native.js.map +1 -1
- package/dist/cjs/connectkit/connectors/walletAdapterConnector.native.js.map +1 -1
- package/dist/cjs/connectkit/constants/chainConfigs.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultConfig.cjs +8 -2
- package/dist/cjs/connectkit/defaultConfig.native.js +8 -2
- package/dist/cjs/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultConnectors.cjs +19 -37
- package/dist/cjs/connectkit/defaultConnectors.native.js +19 -37
- package/dist/cjs/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/defaultTransports.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useChainIsSupported.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useChains.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useConnect.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useConnectCallback.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useConnectors.cjs +1 -5
- package/dist/cjs/connectkit/hooks/useConnectors.native.js +1 -5
- package/dist/cjs/connectkit/hooks/useConnectors.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useEnsFallbackConfig.native.js.map +1 -1
- package/dist/cjs/connectkit/hooks/useLastConnector.native.js.map +1 -1
- package/dist/cjs/connectkit/index.cjs +2 -0
- package/dist/cjs/connectkit/index.native.js +10 -8
- package/dist/cjs/connectkit/index.native.js.map +1 -1
- package/dist/cjs/connectkit/openConnector/context.native.js.map +1 -1
- package/dist/cjs/connectkit/openConnector/device.native.js.map +1 -1
- package/dist/cjs/connectkit/openConnector/index.native.js.map +1 -1
- package/dist/cjs/connectkit/openConnector/launcher.native.js.map +1 -1
- package/dist/cjs/connectkit/profileHeaderAction.native.js +1 -1
- package/dist/cjs/connectkit/profileHeaderAction.native.js.map +1 -1
- package/dist/cjs/connectkit/screens.cjs +1 -14
- package/dist/cjs/connectkit/screens.native.js +23 -40
- package/dist/cjs/connectkit/screens.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEContext.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/SIWEProvider.cjs +3 -2
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js +6 -4
- package/dist/cjs/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/connectIntent.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/index.native.js.map +1 -1
- package/dist/cjs/connectkit/siwe/useSIWE.native.js.map +1 -1
- package/dist/cjs/connectkit/useWeb3Modal.native.js +2 -2
- package/dist/cjs/connectkit/useWeb3Modal.native.js.map +1 -1
- package/dist/cjs/connectkit/wallets/index.cjs +4 -3
- package/dist/cjs/connectkit/wallets/index.native.js +4 -3
- package/dist/cjs/connectkit/wallets/index.native.js.map +1 -1
- package/dist/cjs/connectkit/wallets/useWallets.cjs +7 -22
- package/dist/cjs/connectkit/wallets/useWallets.native.js +6 -22
- package/dist/cjs/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/cjs/connectkit/wallets/walletConfigs.cjs +3 -62
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js +2 -65
- package/dist/cjs/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/cjs/connectkit/web3Bridge.cjs +2 -6
- package/dist/cjs/connectkit/web3Bridge.native.js +4 -9
- package/dist/cjs/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/cjs/connectkit/web3Provider.native.js.map +1 -1
- package/dist/cjs/esbuild.cjs +54 -0
- package/dist/cjs/esbuild.native.js +57 -0
- package/dist/cjs/esbuild.native.js.map +1 -0
- package/dist/cjs/examples/LockContract.native.js.map +1 -1
- package/dist/cjs/examples/index.native.js.map +1 -1
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useContractRead.native.js.map +1 -1
- package/dist/cjs/hooks/useContractWrite.native.js.map +1 -1
- package/dist/cjs/hooks/useWallet.cjs +1 -2
- package/dist/cjs/hooks/useWallet.native.js +1 -4
- package/dist/cjs/hooks/useWallet.native.js.map +1 -1
- package/dist/cjs/index.native.js +6 -6
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/providers/WalletProvider.cjs +1 -2
- package/dist/cjs/providers/index.native.js.map +1 -1
- package/dist/cjs/providers/mockConnector.native.js.map +1 -1
- package/dist/cjs/providers/native/deepLink.cjs +1 -1
- package/dist/cjs/providers/native/deepLink.native.js +1 -1
- package/dist/cjs/providers/native/deepLink.native.js.map +1 -1
- package/dist/cjs/providers/native/inject.native.js.map +1 -1
- package/dist/cjs/providers/native/visibility.native.js.map +1 -1
- package/dist/cjs/providers/walletConfig.native.js.map +1 -1
- package/dist/cjs/siws/index.native.js.map +1 -1
- package/dist/cjs/siws/message.native.js.map +1 -1
- package/dist/cjs/siws/signWithBridge.native.js.map +1 -1
- package/dist/cjs/siws/verify.native.js.map +1 -1
- package/dist/cjs/solana.native.js.map +1 -1
- package/dist/cjs/vite.cjs +76 -0
- package/dist/cjs/vite.native.js +79 -0
- package/dist/cjs/vite.native.js.map +1 -0
- package/dist/esm/bundler/metaMaskConnectTimeouts.mjs +64 -0
- package/dist/esm/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
- package/dist/esm/bundler/metaMaskConnectTimeouts.native.js +92 -0
- package/dist/esm/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
- package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs +11 -30
- package/dist/esm/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js +12 -33
- package/dist/esm/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
- package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
- package/dist/esm/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +8 -63
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/demo.mjs +0 -15
- package/dist/esm/connectkit/components/ConnectModal/demo.mjs.map +1 -1
- package/dist/esm/connectkit/components/ConnectModal/demo.native.js +0 -15
- package/dist/esm/connectkit/components/ConnectModal/demo.native.js.map +1 -1
- package/dist/esm/connectkit/components/contexts/web3/index.mjs +0 -15
- package/dist/esm/connectkit/components/contexts/web3/index.mjs.map +1 -1
- package/dist/esm/connectkit/components/contexts/web3/index.native.js +0 -17
- package/dist/esm/connectkit/components/contexts/web3/index.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs +31 -0
- package/dist/esm/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
- package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js +38 -0
- package/dist/esm/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
- package/dist/esm/connectkit/connectors/embeddedDesktop.mjs +1 -1
- package/dist/esm/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
- package/dist/esm/connectkit/connectors/embeddedDesktop.native.js +1 -1
- package/dist/esm/connectkit/connectors/embeddedDesktop.native.js.map +1 -1
- package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
- package/dist/esm/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
- package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js +273 -0
- package/dist/esm/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
- package/dist/esm/connectkit/defaultConfig.mjs +8 -2
- package/dist/esm/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/esm/connectkit/defaultConfig.native.js +8 -2
- package/dist/esm/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/esm/connectkit/defaultConnectors.mjs +16 -34
- package/dist/esm/connectkit/defaultConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/defaultConnectors.native.js +16 -34
- package/dist/esm/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/hooks/useConnectors.mjs +1 -4
- package/dist/esm/connectkit/hooks/useConnectors.mjs.map +1 -1
- package/dist/esm/connectkit/hooks/useConnectors.native.js +1 -4
- package/dist/esm/connectkit/hooks/useConnectors.native.js.map +1 -1
- package/dist/esm/connectkit/index.mjs +2 -1
- package/dist/esm/connectkit/index.mjs.map +1 -1
- package/dist/esm/connectkit/index.native.js +2 -1
- package/dist/esm/connectkit/index.native.js.map +1 -1
- package/dist/esm/connectkit/screens.mjs +1 -14
- package/dist/esm/connectkit/screens.mjs.map +1 -1
- package/dist/esm/connectkit/screens.native.js +16 -33
- package/dist/esm/connectkit/screens.native.js.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs +3 -2
- package/dist/esm/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js +6 -4
- package/dist/esm/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/esm/connectkit/wallets/index.mjs +3 -2
- package/dist/esm/connectkit/wallets/index.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/index.native.js +3 -2
- package/dist/esm/connectkit/wallets/index.native.js.map +1 -1
- package/dist/esm/connectkit/wallets/useWallets.mjs +2 -17
- package/dist/esm/connectkit/wallets/useWallets.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/useWallets.native.js +1 -17
- package/dist/esm/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.mjs +4 -63
- package/dist/esm/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/esm/connectkit/wallets/walletConfigs.native.js +3 -66
- package/dist/esm/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/esm/connectkit/web3Bridge.mjs +3 -7
- package/dist/esm/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/esm/connectkit/web3Bridge.native.js +3 -8
- package/dist/esm/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/esm/esbuild.mjs +29 -0
- package/dist/esm/esbuild.mjs.map +1 -0
- package/dist/esm/esbuild.native.js +29 -0
- package/dist/esm/esbuild.native.js.map +1 -0
- package/dist/esm/hooks/useWallet.mjs +1 -2
- package/dist/esm/hooks/useWallet.mjs.map +1 -1
- package/dist/esm/hooks/useWallet.native.js +1 -4
- package/dist/esm/hooks/useWallet.native.js.map +1 -1
- package/dist/esm/providers/WalletProvider.mjs +1 -2
- package/dist/esm/providers/WalletProvider.mjs.map +1 -1
- package/dist/esm/providers/native/deepLink.mjs +1 -1
- package/dist/esm/providers/native/deepLink.mjs.map +1 -1
- package/dist/esm/providers/native/deepLink.native.js +1 -1
- package/dist/esm/providers/native/deepLink.native.js.map +1 -1
- package/dist/esm/providers/walletConfig.mjs.map +1 -1
- package/dist/esm/providers/walletConfig.native.js.map +1 -1
- package/dist/esm/vite.mjs +51 -0
- package/dist/esm/vite.mjs.map +1 -0
- package/dist/esm/vite.native.js +51 -0
- package/dist/esm/vite.native.js.map +1 -0
- package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs +64 -0
- package/dist/jsx/bundler/metaMaskConnectTimeouts.mjs.map +1 -0
- package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js +123 -0
- package/dist/jsx/bundler/metaMaskConnectTimeouts.native.js.map +1 -0
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs +11 -30
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js +11 -32
- package/dist/jsx/connectkit/components/Common/ConnectorList/index.native.js.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs +4 -38
- package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.mjs.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js +4 -42
- package/dist/jsx/connectkit/components/ConnectModal/ConnectUsing.native.js.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs +1 -15
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js +7 -62
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithInjector/index.native.js.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/demo.mjs +0 -15
- package/dist/jsx/connectkit/components/ConnectModal/demo.mjs.map +1 -1
- package/dist/jsx/connectkit/components/ConnectModal/demo.native.js +0 -15
- package/dist/jsx/connectkit/components/ConnectModal/demo.native.js.map +1 -1
- package/dist/jsx/connectkit/components/contexts/web3/index.mjs +0 -15
- package/dist/jsx/connectkit/components/contexts/web3/index.mjs.map +1 -1
- package/dist/jsx/connectkit/components/contexts/web3/index.native.js +0 -17
- package/dist/jsx/connectkit/components/contexts/web3/index.native.js.map +1 -1
- package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs +31 -0
- package/dist/jsx/connectkit/connectors/aaveAccountConnector.mjs.map +1 -0
- package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js +67 -0
- package/dist/jsx/connectkit/connectors/aaveAccountConnector.native.js.map +1 -0
- package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs +1 -1
- package/dist/jsx/connectkit/connectors/embeddedDesktop.mjs.map +1 -1
- package/dist/jsx/connectkit/connectors/embeddedDesktop.native.js +1 -1
- package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs +216 -0
- package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.mjs.map +1 -0
- package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js +315 -0
- package/dist/jsx/connectkit/connectors/metaMaskConnectConnector.native.js.map +1 -0
- package/dist/jsx/connectkit/defaultConfig.mjs +8 -2
- package/dist/jsx/connectkit/defaultConfig.mjs.map +1 -1
- package/dist/jsx/connectkit/defaultConfig.native.js +8 -2
- package/dist/jsx/connectkit/defaultConfig.native.js.map +1 -1
- package/dist/jsx/connectkit/defaultConnectors.mjs +16 -34
- package/dist/jsx/connectkit/defaultConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/defaultConnectors.native.js +19 -37
- package/dist/jsx/connectkit/defaultConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/hooks/useConnectors.mjs +1 -4
- package/dist/jsx/connectkit/hooks/useConnectors.mjs.map +1 -1
- package/dist/jsx/connectkit/hooks/useConnectors.native.js +1 -5
- package/dist/jsx/connectkit/hooks/useConnectors.native.js.map +1 -1
- package/dist/jsx/connectkit/index.mjs +2 -1
- package/dist/jsx/connectkit/index.mjs.map +1 -1
- package/dist/jsx/connectkit/index.native.js +2 -0
- package/dist/jsx/connectkit/index.native.js.map +1 -1
- package/dist/jsx/connectkit/screens.mjs +1 -14
- package/dist/jsx/connectkit/screens.mjs.map +1 -1
- package/dist/jsx/connectkit/screens.native.js +16 -33
- package/dist/jsx/connectkit/screens.native.js.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs +3 -2
- package/dist/jsx/connectkit/siwe/SIWEProvider.mjs.map +1 -1
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js +6 -4
- package/dist/jsx/connectkit/siwe/SIWEProvider.native.js.map +1 -1
- package/dist/jsx/connectkit/wallets/index.mjs +3 -2
- package/dist/jsx/connectkit/wallets/index.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/index.native.js +4 -3
- package/dist/jsx/connectkit/wallets/index.native.js.map +1 -1
- package/dist/jsx/connectkit/wallets/useWallets.mjs +2 -17
- package/dist/jsx/connectkit/wallets/useWallets.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/useWallets.native.js +6 -22
- package/dist/jsx/connectkit/wallets/useWallets.native.js.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs +4 -63
- package/dist/jsx/connectkit/wallets/walletConfigs.mjs.map +1 -1
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js +2 -65
- package/dist/jsx/connectkit/wallets/walletConfigs.native.js.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.mjs +3 -7
- package/dist/jsx/connectkit/web3Bridge.mjs.map +1 -1
- package/dist/jsx/connectkit/web3Bridge.native.js +2 -7
- package/dist/jsx/connectkit/web3Bridge.native.js.map +1 -1
- package/dist/jsx/esbuild.mjs +29 -0
- package/dist/jsx/esbuild.mjs.map +1 -0
- package/dist/jsx/esbuild.native.js +57 -0
- package/dist/jsx/esbuild.native.js.map +1 -0
- package/dist/jsx/hooks/useWallet.mjs +1 -2
- package/dist/jsx/hooks/useWallet.mjs.map +1 -1
- package/dist/jsx/hooks/useWallet.native.js +1 -4
- package/dist/jsx/hooks/useWallet.native.js.map +1 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/providers/WalletProvider.mjs +1 -2
- package/dist/jsx/providers/WalletProvider.mjs.map +1 -1
- package/dist/jsx/providers/native/deepLink.mjs +1 -1
- package/dist/jsx/providers/native/deepLink.mjs.map +1 -1
- package/dist/jsx/providers/native/deepLink.native.js +1 -1
- package/dist/jsx/providers/native/deepLink.native.js.map +1 -1
- package/dist/jsx/providers/walletConfig.mjs.map +1 -1
- package/dist/jsx/providers/walletConfig.native.js.map +1 -1
- package/dist/jsx/vite.mjs +51 -0
- package/dist/jsx/vite.mjs.map +1 -0
- package/dist/jsx/vite.native.js +79 -0
- package/dist/jsx/vite.native.js.map +1 -0
- package/package.json +22 -10
- package/src/bundler/metaMaskConnectTimeouts.spec.ts +390 -0
- package/src/bundler/metaMaskConnectTimeouts.ts +126 -0
- package/src/connectkit/adapters/SolanaAdapter.ts +1 -1
- package/src/connectkit/adapters/discover.ts +1 -1
- package/src/connectkit/components/Common/ConnectorList/index.tsx +20 -50
- package/src/connectkit/components/ConnectModal/ConnectUsing.tsx +11 -62
- package/src/connectkit/components/ConnectModal/ConnectWithInjector/index.tsx +10 -70
- package/src/connectkit/components/ConnectModal/demo.tsx +1 -19
- package/src/connectkit/components/contexts/web3/index.tsx +1 -23
- package/src/connectkit/connectors/aaveAccountConnector.spec.ts +87 -0
- package/src/connectkit/connectors/aaveAccountConnector.ts +43 -0
- package/src/connectkit/connectors/embeddedDesktop.spec.ts +5 -5
- package/src/connectkit/connectors/embeddedDesktop.ts +5 -5
- package/src/connectkit/connectors/metaMaskConnectConnector.spec.ts +230 -0
- package/src/connectkit/connectors/metaMaskConnectConnector.ts +272 -0
- package/src/connectkit/defaultConfig.ts +16 -7
- package/src/connectkit/defaultConnectors.ts +19 -40
- package/src/connectkit/hooks/useConnectors.ts +0 -10
- package/src/connectkit/index.ts +4 -0
- package/src/connectkit/screens.tsx +1 -21
- package/src/connectkit/siwe/SIWEProvider.spec.tsx +70 -2
- package/src/connectkit/siwe/SIWEProvider.tsx +5 -3
- package/src/connectkit/wallets/index.ts +5 -2
- package/src/connectkit/wallets/useWallets.tsx +1 -20
- package/src/connectkit/wallets/walletConfigs.tsx +2 -64
- package/src/connectkit/web3Bridge.tsx +4 -21
- package/src/esbuild.ts +42 -0
- package/src/hooks/useWallet.spec.ts +6 -15
- package/src/hooks/useWallet.ts +1 -2
- package/src/providers/WalletProvider.native.tsx +1 -1
- package/src/providers/WalletProvider.tsx +5 -7
- package/src/providers/mockConnector.ts +2 -2
- package/src/providers/native/deepLink.spec.ts +3 -4
- package/src/providers/native/deepLink.ts +1 -2
- package/src/providers/native/inject.spec.ts +1 -1
- package/src/providers/walletConfig.spec.ts +1 -1
- package/src/providers/walletConfig.ts +2 -1
- package/src/vite.ts +60 -0
- package/types/bundler/metaMaskConnectTimeouts.d.ts +36 -0
- package/types/bundler/metaMaskConnectTimeouts.d.ts.map +1 -0
- package/types/connectkit/adapters/discover.d.ts +1 -1
- package/types/connectkit/components/Common/ConnectorList/index.d.ts.map +1 -1
- package/types/connectkit/components/ConnectModal/ConnectUsing.d.ts.map +1 -1
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts +0 -1
- package/types/connectkit/components/ConnectModal/ConnectWithInjector/index.d.ts.map +1 -1
- package/types/connectkit/components/ConnectModal/demo.d.ts.map +1 -1
- package/types/connectkit/components/contexts/web3/index.d.ts +1 -5
- package/types/connectkit/components/contexts/web3/index.d.ts.map +1 -1
- package/types/connectkit/connectors/aaveAccountConnector.d.ts +5 -0
- package/types/connectkit/connectors/aaveAccountConnector.d.ts.map +1 -0
- package/types/connectkit/connectors/embeddedDesktop.d.ts +4 -4
- package/types/connectkit/connectors/embeddedDesktop.d.ts.map +1 -1
- package/types/connectkit/connectors/metaMaskConnectConnector.d.ts +35 -0
- package/types/connectkit/connectors/metaMaskConnectConnector.d.ts.map +1 -0
- package/types/connectkit/defaultConfig.d.ts +3 -2
- package/types/connectkit/defaultConfig.d.ts.map +1 -1
- package/types/connectkit/defaultConnectors.d.ts +3 -4
- package/types/connectkit/defaultConnectors.d.ts.map +1 -1
- package/types/connectkit/hooks/useConnectors.d.ts +0 -1
- package/types/connectkit/hooks/useConnectors.d.ts.map +1 -1
- package/types/connectkit/index.d.ts +1 -0
- package/types/connectkit/index.d.ts.map +1 -1
- package/types/connectkit/screens.d.ts +0 -4
- package/types/connectkit/screens.d.ts.map +1 -1
- package/types/connectkit/siwe/SIWEProvider.d.ts.map +1 -1
- package/types/connectkit/wallets/index.d.ts.map +1 -1
- package/types/connectkit/wallets/useWallets.d.ts.map +1 -1
- package/types/connectkit/wallets/walletConfigs.d.ts +0 -2
- package/types/connectkit/wallets/walletConfigs.d.ts.map +1 -1
- package/types/connectkit/web3Bridge.d.ts.map +1 -1
- package/types/esbuild.d.ts +31 -0
- package/types/esbuild.d.ts.map +1 -0
- package/types/hooks/useWallet.d.ts.map +1 -1
- package/types/providers/WalletProvider.d.ts.map +1 -1
- package/types/providers/mockConnector.d.ts +2 -2
- package/types/providers/native/deepLink.d.ts +1 -1
- package/types/providers/native/deepLink.d.ts.map +1 -1
- package/types/providers/walletConfig.d.ts +2 -1
- package/types/providers/walletConfig.d.ts.map +1 -1
- package/types/vite.d.ts +12 -0
- package/types/vite.d.ts.map +1 -0
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.cjs +0 -133
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
- package/dist/cjs/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.cjs +0 -158
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.cjs +0 -90
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
- package/dist/cjs/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.cjs +0 -398
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
- package/dist/cjs/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
- package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.cjs +0 -0
- package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
- package/dist/cjs/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
- package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.cjs +0 -113
- package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
- package/dist/cjs/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
- package/dist/cjs/connectkit/hooks/useWalletConnectModal.cjs +0 -74
- package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js +0 -79
- package/dist/cjs/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -140
- package/dist/esm/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
- package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
- package/dist/esm/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
- package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js +0 -144
- package/dist/esm/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
- package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
- package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
- package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -67
- package/dist/esm/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js +0 -414
- package/dist/esm/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
- package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
- package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
- package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
- package/dist/esm/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
- package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
- package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
- package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -89
- package/dist/esm/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
- package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs +0 -49
- package/dist/esm/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
- package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js +0 -51
- package/dist/esm/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs +0 -108
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.mjs.map +0 -1
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js +0 -179
- package/dist/jsx/connectkit/components/ConnectModal/ConnectWithQRCode.native.js.map +0 -1
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs +0 -133
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.mjs.map +0 -1
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js +0 -183
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/index.native.js.map +0 -1
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs +0 -61
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.mjs.map +0 -1
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js +0 -99
- package/dist/jsx/connectkit/components/Pages/MobileConnectors/styles.native.js.map +0 -1
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs +0 -362
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.mjs.map +0 -1
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js +0 -453
- package/dist/jsx/connectkit/connectors/metaMaskSdkConnector.native.js.map +0 -1
- package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs +0 -2
- package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.mjs.map +0 -1
- package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js +0 -2
- package/dist/jsx/connectkit/hooks/connectors/useCoinbaseWalletUri.native.js.map +0 -1
- package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs +0 -88
- package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.mjs.map +0 -1
- package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js +0 -117
- package/dist/jsx/connectkit/hooks/connectors/useWalletConnectUri.native.js.map +0 -1
- package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs +0 -49
- package/dist/jsx/connectkit/hooks/useWalletConnectModal.mjs.map +0 -1
- package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js +0 -79
- package/dist/jsx/connectkit/hooks/useWalletConnectModal.native.js.map +0 -1
- package/src/connectkit/components/ConnectModal/ConnectWithQRCode.tsx +0 -188
- package/src/connectkit/components/Pages/MobileConnectors/index.tsx +0 -142
- package/src/connectkit/components/Pages/MobileConnectors/styles.ts +0 -66
- package/src/connectkit/connectors/metaMaskSdkConnector.ts +0 -505
- package/src/connectkit/hooks/connectors/useCoinbaseWalletUri.tsx +0 -101
- package/src/connectkit/hooks/connectors/useWalletConnectUri.ts +0 -99
- package/src/connectkit/hooks/useWalletConnectModal.tsx +0 -52
- package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts +0 -6
- package/types/connectkit/components/ConnectModal/ConnectWithQRCode.d.ts.map +0 -1
- package/types/connectkit/components/Pages/MobileConnectors/index.d.ts +0 -4
- package/types/connectkit/components/Pages/MobileConnectors/index.d.ts.map +0 -1
- package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts +0 -6
- package/types/connectkit/components/Pages/MobileConnectors/styles.d.ts.map +0 -1
- package/types/connectkit/connectors/metaMaskSdkConnector.d.ts +0 -30
- package/types/connectkit/connectors/metaMaskSdkConnector.d.ts.map +0 -1
- package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts +0 -1
- package/types/connectkit/hooks/connectors/useCoinbaseWalletUri.d.ts.map +0 -1
- package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts +0 -8
- package/types/connectkit/hooks/connectors/useWalletConnectUri.d.ts.map +0 -1
- package/types/connectkit/hooks/useWalletConnectModal.d.ts +0 -5
- package/types/connectkit/hooks/useWalletConnectModal.d.ts.map +0 -1
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { EventHandlers } from "@metamask/connect-evm";
|
|
2
|
+
import { connect, createConfig, http, reconnect } from "@wagmi/core";
|
|
3
|
+
import { createEmitter } from "@wagmi/core/internal";
|
|
4
|
+
import type { Chain } from "viem";
|
|
5
|
+
import { getAddress, SwitchChainError } from "viem";
|
|
6
|
+
import { base, mainnet, polygon } from "viem/chains";
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
metaMaskConnect,
|
|
11
|
+
metaMaskConnectChainIds,
|
|
12
|
+
metaMaskNetworks,
|
|
13
|
+
resetMetaMaskConnectClient,
|
|
14
|
+
} from "./metaMaskConnectConnector";
|
|
15
|
+
import {
|
|
16
|
+
BITCOIN_CHAIN_ID,
|
|
17
|
+
SOLANA_CHAIN_ID,
|
|
18
|
+
SUI_CHAIN_ID,
|
|
19
|
+
syntheticChains,
|
|
20
|
+
} from "./syntheticChains";
|
|
21
|
+
|
|
22
|
+
const { createEVMClient, client } = vi.hoisted(() => {
|
|
23
|
+
const client = {
|
|
24
|
+
accounts: [] as string[],
|
|
25
|
+
getChainId: vi.fn(() => "0x2105"),
|
|
26
|
+
connect: vi.fn(async (_options: { chainIds: string[] }) => ({
|
|
27
|
+
accounts: ["0x0000000000000000000000000000000000000001"],
|
|
28
|
+
chainId: "0x2105",
|
|
29
|
+
})),
|
|
30
|
+
switchChain: vi.fn(async () => undefined),
|
|
31
|
+
disconnect: vi.fn(async () => undefined),
|
|
32
|
+
getProvider: vi.fn(() => ({ request: vi.fn() })),
|
|
33
|
+
};
|
|
34
|
+
return { client, createEVMClient: vi.fn(async (_options: unknown) => client) };
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
vi.mock("@metamask/connect-evm", () => ({ createEVMClient }));
|
|
38
|
+
|
|
39
|
+
const synthetic = [SOLANA_CHAIN_ID, SUI_CHAIN_ID, BITCOIN_CHAIN_ID];
|
|
40
|
+
const hex = (id: number) => `0x${id.toString(16)}`;
|
|
41
|
+
|
|
42
|
+
function build(chains: readonly Chain[]) {
|
|
43
|
+
const transports = Object.fromEntries(chains.map((chain) => [chain.id, http()]));
|
|
44
|
+
return metaMaskConnect({ dapp: { name: "test", url: "https://example.test" } })({
|
|
45
|
+
chains: chains as [Chain, ...Chain[]],
|
|
46
|
+
emitter: createEmitter("metaMaskSDK"),
|
|
47
|
+
transports,
|
|
48
|
+
} as never);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
describe("metaMaskNetworks", () => {
|
|
52
|
+
it("drops the synthetic non-EVM chains", () => {
|
|
53
|
+
const networks = metaMaskNetworks([mainnet, polygon, ...syntheticChains]);
|
|
54
|
+
expect(Object.keys(networks)).toEqual([hex(mainnet.id), hex(polygon.id)]);
|
|
55
|
+
for (const id of synthetic) expect(networks).not.toHaveProperty(hex(id));
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("drops a chain with no usable RPC URL", () => {
|
|
59
|
+
const broken = { ...base, rpcUrls: { default: { http: [""] } } } as Chain;
|
|
60
|
+
expect(Object.keys(metaMaskNetworks([mainnet, broken]))).toEqual([hex(mainnet.id)]);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("prefers the transport's URL over the chain's default", () => {
|
|
64
|
+
const networks = metaMaskNetworks([mainnet], {
|
|
65
|
+
[mainnet.id]: http("https://rpc.example.test"),
|
|
66
|
+
});
|
|
67
|
+
expect(networks[hex(mainnet.id) as `0x${string}`]).toBe("https://rpc.example.test");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
describe("metaMaskConnectChainIds", () => {
|
|
72
|
+
const networks = metaMaskNetworks([mainnet, polygon, base]);
|
|
73
|
+
|
|
74
|
+
it("puts the requested chain first", () => {
|
|
75
|
+
expect(metaMaskConnectChainIds(networks, base.id)).toEqual([
|
|
76
|
+
hex(base.id),
|
|
77
|
+
hex(mainnet.id),
|
|
78
|
+
hex(polygon.id),
|
|
79
|
+
]);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("ignores a requested synthetic chain", () => {
|
|
83
|
+
expect(metaMaskConnectChainIds(networks, SOLANA_CHAIN_ID)).toEqual(Object.keys(networks));
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe("metaMaskConnect", () => {
|
|
88
|
+
beforeEach(() => {
|
|
89
|
+
resetMetaMaskConnectClient();
|
|
90
|
+
vi.clearAllMocks();
|
|
91
|
+
client.accounts = [];
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
afterEach(() => resetMetaMaskConnectClient());
|
|
95
|
+
|
|
96
|
+
it("keeps the metaMaskSDK id existing consumers key off", () => {
|
|
97
|
+
expect(build([mainnet]).id).toBe("metaMaskSDK");
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("never tells MetaMask about a synthetic chain id", async () => {
|
|
101
|
+
const connector = build([mainnet, polygon, ...syntheticChains]);
|
|
102
|
+
await connector.setup?.();
|
|
103
|
+
await connector.connect({ chainId: SOLANA_CHAIN_ID });
|
|
104
|
+
|
|
105
|
+
const options = createEVMClient.mock.calls[0]![0] as {
|
|
106
|
+
api: { supportedNetworks: Record<string, string> };
|
|
107
|
+
};
|
|
108
|
+
const supported = Object.keys(options.api.supportedNetworks);
|
|
109
|
+
const requested = client.connect.mock.calls[0]![0].chainIds;
|
|
110
|
+
for (const id of synthetic) {
|
|
111
|
+
expect(supported).not.toContain(hex(id));
|
|
112
|
+
expect(requested).not.toContain(hex(id));
|
|
113
|
+
}
|
|
114
|
+
expect(supported).toEqual([hex(mainnet.id), hex(polygon.id)]);
|
|
115
|
+
expect(requested).toEqual([hex(mainnet.id), hex(polygon.id)]);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it("asks for the requested EVM chain first and reports the wallet's chain", async () => {
|
|
119
|
+
const connector = build([mainnet, polygon, ...syntheticChains]);
|
|
120
|
+
const result = await connector.connect({ chainId: polygon.id });
|
|
121
|
+
expect(client.connect.mock.calls[0]![0].chainIds[0]).toBe(hex(polygon.id));
|
|
122
|
+
expect(result.chainId).toBe(base.id);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("refuses to switch MetaMask to a synthetic chain", async () => {
|
|
126
|
+
const connector = build([mainnet, ...syntheticChains]);
|
|
127
|
+
await expect(connector.switchChain!({ chainId: SUI_CHAIN_ID })).rejects.toBeInstanceOf(
|
|
128
|
+
SwitchChainError,
|
|
129
|
+
);
|
|
130
|
+
expect(client.switchChain).not.toHaveBeenCalled();
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it("builds one client per page across rebuilt configs", async () => {
|
|
134
|
+
await build([mainnet]).setup?.();
|
|
135
|
+
await build([mainnet]).setup?.();
|
|
136
|
+
expect(createEVMClient).toHaveBeenCalledTimes(1);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe("metaMaskConnect under wagmi", () => {
|
|
141
|
+
const first = "0x00000000000000000000000000000000000000aa";
|
|
142
|
+
const second = "0x00000000000000000000000000000000000000bb";
|
|
143
|
+
|
|
144
|
+
beforeEach(() => {
|
|
145
|
+
resetMetaMaskConnectClient();
|
|
146
|
+
vi.clearAllMocks();
|
|
147
|
+
client.accounts = [];
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
afterEach(() => resetMetaMaskConnectClient());
|
|
151
|
+
|
|
152
|
+
function wagmiConfig() {
|
|
153
|
+
return createConfig({
|
|
154
|
+
chains: [base, mainnet],
|
|
155
|
+
connectors: [metaMaskConnect({ dapp: { name: "test", url: "https://example.test" } })],
|
|
156
|
+
transports: { [base.id]: http(), [mainnet.id]: http() },
|
|
157
|
+
multiInjectedProviderDiscovery: false,
|
|
158
|
+
storage: null,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async function clientEvents() {
|
|
163
|
+
await vi.waitFor(() => expect(createEVMClient).toHaveBeenCalledTimes(1));
|
|
164
|
+
return (createEVMClient.mock.calls[0]![0] as { eventHandlers: EventHandlers }).eventHandlers;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
it("sends display_uri to the connector being connected, not the newest one built", async () => {
|
|
168
|
+
const before = wagmiConfig();
|
|
169
|
+
const used = wagmiConfig();
|
|
170
|
+
const newest = wagmiConfig();
|
|
171
|
+
const events = await clientEvents();
|
|
172
|
+
const seen = new Map([before, used, newest].map((config) => [config, [] as unknown[]]));
|
|
173
|
+
for (const [config, uris] of seen)
|
|
174
|
+
config.connectors[0]!.emitter.on("message", ({ type, data }) => {
|
|
175
|
+
if (type === "display_uri") uris.push(data);
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
client.connect.mockImplementationOnce(async () => {
|
|
179
|
+
events.displayUri("metamask://connect?id=1");
|
|
180
|
+
return { accounts: [first], chainId: "0x2105" };
|
|
181
|
+
});
|
|
182
|
+
await connect(used, { connector: used.connectors[0]! });
|
|
183
|
+
|
|
184
|
+
expect(seen.get(used)).toEqual(["metamask://connect?id=1"]);
|
|
185
|
+
expect(seen.get(before)).toEqual([]);
|
|
186
|
+
expect(seen.get(newest)).toEqual([]);
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
it("keeps account changes flowing to the config wagmi reconnects", async () => {
|
|
190
|
+
const cached = wagmiConfig();
|
|
191
|
+
const events = await clientEvents();
|
|
192
|
+
await connect(cached, { connector: cached.connectors[0]! });
|
|
193
|
+
const other = wagmiConfig();
|
|
194
|
+
await connect(other, { connector: other.connectors[0]! });
|
|
195
|
+
|
|
196
|
+
// The provider switches back to the cached config and reconnects it.
|
|
197
|
+
client.accounts = [first];
|
|
198
|
+
await reconnect(cached);
|
|
199
|
+
events.accountsChanged([second]);
|
|
200
|
+
|
|
201
|
+
const connector = cached.connectors[0]!;
|
|
202
|
+
expect(cached.state.connections.get(connector.uid)?.accounts).toEqual([getAddress(second)]);
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
it("connects wagmi to a session approved outside connect()", async () => {
|
|
206
|
+
const config = wagmiConfig();
|
|
207
|
+
const events = await clientEvents();
|
|
208
|
+
expect(config.state.status).toBe("disconnected");
|
|
209
|
+
|
|
210
|
+
events.connect({ chainId: "0x2105", accounts: [first] });
|
|
211
|
+
|
|
212
|
+
const connector = config.connectors[0]!;
|
|
213
|
+
expect(config.state.status).toBe("connected");
|
|
214
|
+
expect(config.state.current).toBe(connector.uid);
|
|
215
|
+
expect(config.state.connections.get(connector.uid)).toMatchObject({
|
|
216
|
+
accounts: [getAddress(first)],
|
|
217
|
+
chainId: base.id,
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
events.accountsChanged([second]);
|
|
221
|
+
expect(config.state.connections.get(connector.uid)?.accounts).toEqual([getAddress(second)]);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it("ignores a connect that carries no account", async () => {
|
|
225
|
+
const config = wagmiConfig();
|
|
226
|
+
const events = await clientEvents();
|
|
227
|
+
events.connect({ chainId: "0x2105", accounts: [] });
|
|
228
|
+
expect(config.state.status).toBe("disconnected");
|
|
229
|
+
});
|
|
230
|
+
});
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
// wagmi connector for MetaMask over MetaMask Connect (@metamask/connect-evm, the
|
|
2
|
+
// Mobile Wallet Protocol relay). It replaces the classic @metamask/sdk connector,
|
|
3
|
+
// whose socket.io relay never re-delivered a reply that arrived while Android 16
|
|
4
|
+
// had cut the browser's network (5-6 s after MetaMask takes focus). The MWP relay
|
|
5
|
+
// keeps each channel's history and the page recovers it when it resubscribes, so
|
|
6
|
+
// the reply lands as soon as the user switches back. Proven on Android 16 in
|
|
7
|
+
// PROMA-36 with the relay timers raised by `metaMaskConnectTimeouts` (see
|
|
8
|
+
// ../../vite.ts); without them a user who lingers in MetaMask past 60 s loses
|
|
9
|
+
// the request.
|
|
10
|
+
//
|
|
11
|
+
// The id stays `metaMaskSDK`: isMetaMaskConnector(), useWallets' EIP-6963 dedupe
|
|
12
|
+
// and ConnectWithInjector's display_uri listener all key off it, and so does
|
|
13
|
+
// every consumer's persisted "recent connector".
|
|
14
|
+
import type { EIP1193Provider, MetamaskConnectEVM } from "@metamask/connect-evm";
|
|
15
|
+
import {
|
|
16
|
+
ChainNotConfiguredError,
|
|
17
|
+
type CreateConnectorFn,
|
|
18
|
+
createConnector,
|
|
19
|
+
extractRpcUrls,
|
|
20
|
+
} from "@wagmi/core";
|
|
21
|
+
import {
|
|
22
|
+
type Address,
|
|
23
|
+
type Chain,
|
|
24
|
+
getAddress,
|
|
25
|
+
type Hex,
|
|
26
|
+
numberToHex,
|
|
27
|
+
ResourceUnavailableRpcError,
|
|
28
|
+
SwitchChainError,
|
|
29
|
+
UserRejectedRequestError,
|
|
30
|
+
} from "viem";
|
|
31
|
+
|
|
32
|
+
import { isSyntheticChainId } from "./syntheticChains";
|
|
33
|
+
|
|
34
|
+
export type MetaMaskConnectParameters = {
|
|
35
|
+
dapp: { name: string; url?: string; iconUrl?: string };
|
|
36
|
+
/** Run without MetaMask Connect's own install/QR modal (the modal renders `display_uri`). */
|
|
37
|
+
headless?: boolean;
|
|
38
|
+
/** Opens MetaMask's deeplink. Embedded desktop webviews must not navigate away. */
|
|
39
|
+
preferredOpenLink?: (deeplink: string, target?: string) => void;
|
|
40
|
+
/** `metamask://` instead of the https://metamask.app.link universal link. */
|
|
41
|
+
useDeeplink?: boolean;
|
|
42
|
+
debug?: boolean;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
type ConnectorConfig = Parameters<CreateConnectorFn>[0];
|
|
46
|
+
type Emitter = ConnectorConfig["emitter"];
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The chains MetaMask may be told about. Non-EVM wallets ride synthetic chain ids
|
|
50
|
+
* (syntheticChains.ts) that no EVM network carries, and a chain with no usable
|
|
51
|
+
* RPC URL fails MetaMask Connect's `new URL()` check in createEVMClient, which
|
|
52
|
+
* kills connect() before it ever emits `display_uri`.
|
|
53
|
+
*/
|
|
54
|
+
export function metaMaskNetworks(
|
|
55
|
+
chains: readonly Chain[],
|
|
56
|
+
transports?: ConnectorConfig["transports"],
|
|
57
|
+
): Record<Hex, string> {
|
|
58
|
+
const networks: Record<Hex, string> = {};
|
|
59
|
+
for (const chain of chains) {
|
|
60
|
+
if (isSyntheticChainId(chain.id)) continue;
|
|
61
|
+
const url = extractRpcUrls({ chain, transports })?.[0] ?? chain.rpcUrls.default?.http[0];
|
|
62
|
+
if (url && isUrl(url)) networks[numberToHex(chain.id)] = url;
|
|
63
|
+
}
|
|
64
|
+
return networks;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function isUrl(value: string): boolean {
|
|
68
|
+
try {
|
|
69
|
+
new URL(value);
|
|
70
|
+
return true;
|
|
71
|
+
} catch {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** The chain ids a connect asks MetaMask for, the requested one first (it becomes the active chain). */
|
|
77
|
+
export function metaMaskConnectChainIds(networks: Record<Hex, string>, chainId?: number): Hex[] {
|
|
78
|
+
const ids = Object.keys(networks) as Hex[];
|
|
79
|
+
if (!chainId || isSyntheticChainId(chainId)) return ids;
|
|
80
|
+
const first = numberToHex(chainId);
|
|
81
|
+
return ids.includes(first) ? [first, ...ids.filter((id) => id !== first)] : ids;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// One client per page. Its session lives in localStorage, and consumers rebuild
|
|
85
|
+
// the wagmi config (and so this connector) on re-render, so a client per
|
|
86
|
+
// connector instance would race itself over the same session. The events it
|
|
87
|
+
// raises go to the connector wagmi last drove: StrictMode and config caches
|
|
88
|
+
// build connectors that wagmi never uses, and one of those may be the newest.
|
|
89
|
+
let client: Promise<MetamaskConnectEVM> | undefined;
|
|
90
|
+
let owner: Emitter | undefined;
|
|
91
|
+
|
|
92
|
+
function getClient(
|
|
93
|
+
parameters: MetaMaskConnectParameters,
|
|
94
|
+
networks: Record<Hex, string>,
|
|
95
|
+
): Promise<MetamaskConnectEVM> {
|
|
96
|
+
if (client) return client;
|
|
97
|
+
client = import("@metamask/connect-evm").then(({ createEVMClient }) =>
|
|
98
|
+
createEVMClient({
|
|
99
|
+
dapp: {
|
|
100
|
+
name: parameters.dapp.name,
|
|
101
|
+
url:
|
|
102
|
+
parameters.dapp.url ??
|
|
103
|
+
(typeof window !== "undefined" ? window.location.origin : "https://multiplatform.one"),
|
|
104
|
+
...(parameters.dapp.iconUrl ? { iconUrl: parameters.dapp.iconUrl } : {}),
|
|
105
|
+
},
|
|
106
|
+
api: { supportedNetworks: networks },
|
|
107
|
+
analytics: { enabled: false },
|
|
108
|
+
skipAutoAnnounce: true,
|
|
109
|
+
debug: parameters.debug,
|
|
110
|
+
...(parameters.headless ? { ui: { headless: true } } : {}),
|
|
111
|
+
...(parameters.preferredOpenLink || parameters.useDeeplink !== undefined
|
|
112
|
+
? {
|
|
113
|
+
mobile: {
|
|
114
|
+
...(parameters.preferredOpenLink
|
|
115
|
+
? { preferredOpenLink: parameters.preferredOpenLink }
|
|
116
|
+
: {}),
|
|
117
|
+
...(parameters.useDeeplink !== undefined
|
|
118
|
+
? { useDeeplink: parameters.useDeeplink }
|
|
119
|
+
: {}),
|
|
120
|
+
},
|
|
121
|
+
}
|
|
122
|
+
: {}),
|
|
123
|
+
eventHandlers: {
|
|
124
|
+
// A session approved outside connect(), in another tab say. wagmi drops
|
|
125
|
+
// `change` for a connector it has no connection for, so only `connect`
|
|
126
|
+
// brings it in.
|
|
127
|
+
connect: ({ accounts, chainId }) => {
|
|
128
|
+
if (accounts.length)
|
|
129
|
+
owner?.emit("connect", {
|
|
130
|
+
accounts: accounts.map((a) => getAddress(a)),
|
|
131
|
+
chainId: Number(chainId),
|
|
132
|
+
});
|
|
133
|
+
},
|
|
134
|
+
accountsChanged: (accounts) => {
|
|
135
|
+
if (accounts.length === 0) owner?.emit("disconnect");
|
|
136
|
+
else owner?.emit("change", { accounts: accounts.map((a) => getAddress(a)) });
|
|
137
|
+
},
|
|
138
|
+
chainChanged: (chainId) => owner?.emit("change", { chainId: Number(chainId) }),
|
|
139
|
+
disconnect: () => owner?.emit("disconnect"),
|
|
140
|
+
displayUri: (uri) => owner?.emit("message", { type: "display_uri", data: uri }),
|
|
141
|
+
},
|
|
142
|
+
}),
|
|
143
|
+
);
|
|
144
|
+
client.catch(() => {
|
|
145
|
+
client = undefined;
|
|
146
|
+
});
|
|
147
|
+
return client;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/** Test seam: forget the page's client so the next connector builds a fresh one. */
|
|
151
|
+
export function resetMetaMaskConnectClient(): void {
|
|
152
|
+
client = undefined;
|
|
153
|
+
owner = undefined;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function rethrow(err: unknown): never {
|
|
157
|
+
const code = (err as { code?: number })?.code;
|
|
158
|
+
if (code === UserRejectedRequestError.code) throw new UserRejectedRequestError(err as Error);
|
|
159
|
+
if (code === ResourceUnavailableRpcError.code)
|
|
160
|
+
throw new ResourceUnavailableRpcError(err as Error);
|
|
161
|
+
throw err;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
metaMaskConnect.type = "metaMask" as const;
|
|
165
|
+
export function metaMaskConnect(parameters: MetaMaskConnectParameters) {
|
|
166
|
+
return createConnector<EIP1193Provider>((config) => {
|
|
167
|
+
owner ??= config.emitter;
|
|
168
|
+
const networks = metaMaskNetworks(config.chains, config.transports);
|
|
169
|
+
const fallbackChainId = Number(Object.keys(networks)[0] ?? 1);
|
|
170
|
+
const instance = () => getClient(parameters, networks);
|
|
171
|
+
// Every call wagmi makes on the connector it uses claims the client's events;
|
|
172
|
+
// setup() runs for every built config, so it does not.
|
|
173
|
+
const claim = () => {
|
|
174
|
+
owner = config.emitter;
|
|
175
|
+
return instance();
|
|
176
|
+
};
|
|
177
|
+
const accountsOf = (mm: MetamaskConnectEVM): Address[] => mm.accounts.map((a) => getAddress(a));
|
|
178
|
+
const chainIdOf = (mm: MetamaskConnectEVM) => {
|
|
179
|
+
const hex = mm.getChainId();
|
|
180
|
+
return hex ? Number(hex) : fallbackChainId;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
return {
|
|
184
|
+
id: "metaMaskSDK",
|
|
185
|
+
name: "MetaMask",
|
|
186
|
+
rdns: ["io.metamask", "io.metamask.mobile"],
|
|
187
|
+
type: metaMaskConnect.type,
|
|
188
|
+
async setup() {
|
|
189
|
+
// Build the client before the tap: mobile Chrome opens the MetaMask deeplink
|
|
190
|
+
// only inside the tap's short user activation, which a cold import outlasts.
|
|
191
|
+
await instance().catch(() => undefined);
|
|
192
|
+
},
|
|
193
|
+
async connect({ chainId, isReconnecting } = {}) {
|
|
194
|
+
// No separate chain switch: the requested chain leads the permission request
|
|
195
|
+
// and becomes the active chain, so connecting stays one wallet round trip.
|
|
196
|
+
const mm = await claim();
|
|
197
|
+
try {
|
|
198
|
+
let accounts = isReconnecting ? accountsOf(mm) : [];
|
|
199
|
+
if (!accounts.length) {
|
|
200
|
+
const result = await mm.connect({
|
|
201
|
+
chainIds: metaMaskConnectChainIds(networks, chainId),
|
|
202
|
+
});
|
|
203
|
+
accounts = result.accounts.map((a) => getAddress(a));
|
|
204
|
+
}
|
|
205
|
+
return { accounts: accounts as never, chainId: chainIdOf(mm) };
|
|
206
|
+
} catch (err) {
|
|
207
|
+
rethrow(err);
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
async disconnect() {
|
|
211
|
+
await (await claim()).disconnect();
|
|
212
|
+
},
|
|
213
|
+
async getAccounts() {
|
|
214
|
+
return accountsOf(await claim());
|
|
215
|
+
},
|
|
216
|
+
async getChainId() {
|
|
217
|
+
return chainIdOf(await claim());
|
|
218
|
+
},
|
|
219
|
+
async getProvider() {
|
|
220
|
+
return (await claim()).getProvider();
|
|
221
|
+
},
|
|
222
|
+
async isAuthorized() {
|
|
223
|
+
// createEVMClient has already resumed a stored session, so its cached
|
|
224
|
+
// accounts answer without a relay round trip that could sit on the long
|
|
225
|
+
// request timeout.
|
|
226
|
+
try {
|
|
227
|
+
return accountsOf(await claim()).length > 0;
|
|
228
|
+
} catch {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
async switchChain({ addEthereumChainParameter, chainId }) {
|
|
233
|
+
const chain = config.chains.find((c) => c.id === chainId);
|
|
234
|
+
if (!chain || !networks[numberToHex(chainId)])
|
|
235
|
+
throw new SwitchChainError(new ChainNotConfiguredError());
|
|
236
|
+
try {
|
|
237
|
+
await (
|
|
238
|
+
await claim()
|
|
239
|
+
).switchChain({
|
|
240
|
+
chainId: numberToHex(chainId),
|
|
241
|
+
chainConfiguration: {
|
|
242
|
+
chainId: numberToHex(chainId),
|
|
243
|
+
chainName: addEthereumChainParameter?.chainName ?? chain.name,
|
|
244
|
+
nativeCurrency: addEthereumChainParameter?.nativeCurrency ?? chain.nativeCurrency,
|
|
245
|
+
rpcUrls: addEthereumChainParameter?.rpcUrls
|
|
246
|
+
? [...addEthereumChainParameter.rpcUrls]
|
|
247
|
+
: [networks[numberToHex(chainId)]],
|
|
248
|
+
...(chain.blockExplorers?.default.url
|
|
249
|
+
? { blockExplorerUrls: [chain.blockExplorers.default.url] }
|
|
250
|
+
: {}),
|
|
251
|
+
},
|
|
252
|
+
});
|
|
253
|
+
return chain;
|
|
254
|
+
} catch (err) {
|
|
255
|
+
if ((err as { code?: number })?.code === UserRejectedRequestError.code)
|
|
256
|
+
throw new UserRejectedRequestError(err as Error);
|
|
257
|
+
throw new SwitchChainError(err as Error);
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
onAccountsChanged(accounts) {
|
|
261
|
+
if (accounts.length === 0) config.emitter.emit("disconnect");
|
|
262
|
+
else config.emitter.emit("change", { accounts: accounts.map((a) => getAddress(a)) });
|
|
263
|
+
},
|
|
264
|
+
onChainChanged(chain) {
|
|
265
|
+
config.emitter.emit("change", { chainId: Number(chain) });
|
|
266
|
+
},
|
|
267
|
+
onDisconnect() {
|
|
268
|
+
config.emitter.emit("disconnect");
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
});
|
|
272
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { http } from "wagmi";
|
|
2
2
|
import { type CreateConfigParameters } from "@wagmi/core";
|
|
3
3
|
import { mainnet, polygon, optimism, arbitrum } from "wagmi/chains";
|
|
4
|
-
import { CoinbaseWalletParameters } from "wagmi/connectors";
|
|
4
|
+
import type { CoinbaseWalletParameters } from "@wagmi/connectors/coinbaseWallet";
|
|
5
5
|
import { EthereumProviderOptions as AaveAccountOptions } from "@aave/account";
|
|
6
6
|
|
|
7
7
|
import { setAppMeta } from "@multiplatform.one/connectkit";
|
|
@@ -9,8 +9,8 @@ import defaultConnectors from "./defaultConnectors";
|
|
|
9
9
|
import { getWalletConnectors } from "./connectors/getWalletConnectors";
|
|
10
10
|
import { syntheticChains } from "./connectors/syntheticChains";
|
|
11
11
|
|
|
12
|
-
// App name/icon now live in connectkit's agnostic appMeta module
|
|
13
|
-
//
|
|
12
|
+
// App name/icon now live in connectkit's agnostic appMeta module; re-exported here
|
|
13
|
+
// for back-compat.
|
|
14
14
|
export { getAppName, getAppIcon } from "@multiplatform.one/connectkit";
|
|
15
15
|
|
|
16
16
|
type DefaultConfigProps = {
|
|
@@ -19,8 +19,8 @@ type DefaultConfigProps = {
|
|
|
19
19
|
appDescription?: string;
|
|
20
20
|
appUrl?: string;
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
walletConnectProjectId
|
|
22
|
+
/** @deprecated Ignored: no connector needs a project id. Removed in the next major. */
|
|
23
|
+
walletConnectProjectId?: string;
|
|
24
24
|
// Coinbase Wallet preference
|
|
25
25
|
coinbaseWalletPreference?: CoinbaseWalletParameters<"4">["preference"];
|
|
26
26
|
// Aave Account options
|
|
@@ -31,6 +31,15 @@ type DefaultConfigProps = {
|
|
|
31
31
|
enableWallet?: boolean;
|
|
32
32
|
} & Partial<CreateConfigParameters>;
|
|
33
33
|
|
|
34
|
+
let warnedProjectId = false;
|
|
35
|
+
function warnIgnoredProjectId() {
|
|
36
|
+
if (warnedProjectId) return;
|
|
37
|
+
warnedProjectId = true;
|
|
38
|
+
console.warn(
|
|
39
|
+
"@multiplatform.one/web3: walletConnectProjectId is ignored and will be removed in the next major.",
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
|
|
34
43
|
const defaultConfig = ({
|
|
35
44
|
appName = "ConnectKit",
|
|
36
45
|
appIcon,
|
|
@@ -40,12 +49,13 @@ const defaultConfig = ({
|
|
|
40
49
|
coinbaseWalletPreference,
|
|
41
50
|
chains = [mainnet, polygon, optimism, arbitrum],
|
|
42
51
|
client,
|
|
43
|
-
enableAaveAccount =
|
|
52
|
+
enableAaveAccount = false,
|
|
44
53
|
aaveAccountOptions,
|
|
45
54
|
enableWallet = true,
|
|
46
55
|
...props
|
|
47
56
|
}: DefaultConfigProps): CreateConfigParameters => {
|
|
48
57
|
setAppMeta(appName, appIcon);
|
|
58
|
+
if (walletConnectProjectId) warnIgnoredProjectId();
|
|
49
59
|
|
|
50
60
|
// Register the wallet synthetic chains so wagmi can resolve a `chain` object for a
|
|
51
61
|
// connected non-EVM account — ConnectKit's SIWE signIn reads `chain.id`, which is
|
|
@@ -66,7 +76,6 @@ const defaultConfig = ({
|
|
|
66
76
|
description: appDescription,
|
|
67
77
|
url: appUrl,
|
|
68
78
|
},
|
|
69
|
-
walletConnectProjectId,
|
|
70
79
|
coinbaseWalletPreference,
|
|
71
80
|
enableAaveAccount,
|
|
72
81
|
aaveAccountOptions,
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { CreateConnectorFn } from "wagmi";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
// Per-connector subpaths: the package root re-exports every wagmi connector, and a
|
|
3
|
+
// bundler that doesn't tree-shake (the webview, the login bundles) ships them all.
|
|
4
|
+
import { coinbaseWallet, type CoinbaseWalletParameters } from "@wagmi/connectors/coinbaseWallet";
|
|
5
|
+
import { safe } from "@wagmi/connectors/safe";
|
|
6
|
+
import { metaMaskConnect } from "./connectors/metaMaskConnectConnector";
|
|
4
7
|
import {
|
|
5
8
|
isEmbeddedDesktopWebview,
|
|
6
9
|
metaMaskOptionsForEmbeddedDesktop,
|
|
7
10
|
} from "./connectors/embeddedDesktop";
|
|
8
11
|
|
|
9
|
-
import { EthereumProviderOptions as AaveAccountOptions
|
|
12
|
+
import type { EthereumProviderOptions as AaveAccountOptions } from "@aave/account";
|
|
13
|
+
import { aaveAccountConnector } from "./connectors/aaveAccountConnector";
|
|
10
14
|
|
|
11
15
|
type DefaultConnectorsProps = {
|
|
12
16
|
app: {
|
|
@@ -15,7 +19,6 @@ type DefaultConnectorsProps = {
|
|
|
15
19
|
description?: string;
|
|
16
20
|
url?: string;
|
|
17
21
|
};
|
|
18
|
-
walletConnectProjectId?: string;
|
|
19
22
|
coinbaseWalletPreference?: CoinbaseWalletParameters<"4">["preference"];
|
|
20
23
|
enableAaveAccount?: boolean;
|
|
21
24
|
aaveAccountOptions?: AaveAccountOptions;
|
|
@@ -23,12 +26,10 @@ type DefaultConnectorsProps = {
|
|
|
23
26
|
|
|
24
27
|
const defaultConnectors = ({
|
|
25
28
|
app,
|
|
26
|
-
walletConnectProjectId,
|
|
27
29
|
coinbaseWalletPreference,
|
|
28
30
|
enableAaveAccount,
|
|
29
31
|
aaveAccountOptions,
|
|
30
32
|
}: DefaultConnectorsProps): CreateConnectorFn[] => {
|
|
31
|
-
const hasAllAppData = app.name && app.icon && app.description && app.url;
|
|
32
33
|
const shouldUseSafeConnector = !(typeof window === "undefined") && window?.parent !== window;
|
|
33
34
|
|
|
34
35
|
const connectors: CreateConnectorFn[] = enableAaveAccount
|
|
@@ -44,53 +45,31 @@ const defaultConnectors = ({
|
|
|
44
45
|
);
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
// Add the rest of the connectors
|
|
48
48
|
connectors.push(
|
|
49
|
-
// MetaMask rides
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
//
|
|
57
|
-
// Tauri/WebView2/WKWebView: no extension injection. SDK InstallModal custom
|
|
58
|
-
// elements + `location.href = metamask://` are hostile there — use headless
|
|
59
|
-
// remote connect and let ConnectKit render the display_uri QR instead.
|
|
60
|
-
// Mobile options are untouched (useDeeplink stays default true).
|
|
61
|
-
metaMaskSdk({
|
|
62
|
-
dappMetadata: {
|
|
49
|
+
// MetaMask rides MetaMask Connect (id `metaMaskSDK`): the extension on desktop,
|
|
50
|
+
// the MetaMask app over MetaMask's own relay on mobile, its install/QR modal on
|
|
51
|
+
// a desktop without the extension. Tauri/WebView2/WKWebView get no extension and
|
|
52
|
+
// must not navigate to metamask://, so they run headless and the modal renders
|
|
53
|
+
// the display_uri QR instead.
|
|
54
|
+
metaMaskConnect({
|
|
55
|
+
dapp: {
|
|
63
56
|
name: app.name,
|
|
64
57
|
url: app.url,
|
|
65
58
|
iconUrl: app.icon,
|
|
66
59
|
},
|
|
67
|
-
enableAnalytics: false,
|
|
68
|
-
checkInstallationImmediately: false,
|
|
69
60
|
...(isEmbeddedDesktopWebview() ? metaMaskOptionsForEmbeddedDesktop() : {}),
|
|
70
61
|
}),
|
|
71
62
|
coinbaseWallet({
|
|
72
63
|
appName: app.name,
|
|
73
64
|
appLogoUrl: app.icon,
|
|
74
|
-
preference:
|
|
65
|
+
preference: {
|
|
66
|
+
options: "all",
|
|
67
|
+
...coinbaseWalletPreference,
|
|
68
|
+
telemetry: false,
|
|
69
|
+
},
|
|
75
70
|
}),
|
|
76
71
|
);
|
|
77
72
|
|
|
78
|
-
if (walletConnectProjectId) {
|
|
79
|
-
connectors.push(
|
|
80
|
-
walletConnect({
|
|
81
|
-
showQrModal: false,
|
|
82
|
-
projectId: walletConnectProjectId,
|
|
83
|
-
metadata: hasAllAppData
|
|
84
|
-
? {
|
|
85
|
-
name: app.name,
|
|
86
|
-
description: app.description!,
|
|
87
|
-
url: app.url!,
|
|
88
|
-
icons: [app.icon!],
|
|
89
|
-
}
|
|
90
|
-
: undefined,
|
|
91
|
-
}),
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
73
|
/*
|
|
95
74
|
connectors.push(
|
|
96
75
|
injected({
|