@web3auth/no-modal 10.14.1 → 11.0.0-beta.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/dist/lib.cjs/base/connector/baseConnector.js +104 -2
- package/dist/lib.cjs/base/connector/connectorStatus.js +2 -0
- package/dist/lib.cjs/base/connector/constants.js +4 -2
- package/dist/lib.cjs/base/connector/utils.js +0 -21
- package/dist/lib.cjs/base/constants.js +4 -0
- package/dist/lib.cjs/base/cookie.js +6 -20
- package/dist/lib.cjs/base/errors/index.js +36 -12
- package/dist/lib.cjs/base/utils.js +10 -11
- package/dist/lib.cjs/base/wallet/index.js +7 -0
- package/dist/lib.cjs/base/wallet/solana.js +83 -0
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +145 -49
- package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +18 -40
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +30 -56
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +19 -14
- package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +18 -13
- package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +24 -36
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +321 -133
- package/dist/lib.cjs/connectors/utils.js +8 -2
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +13 -38
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -3
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +73 -63
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +40 -47
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
- package/dist/lib.cjs/index.js +50 -85
- package/dist/lib.cjs/noModal.js +223 -133
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +23 -39
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +12 -10
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +8 -6
- package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +47 -44
- package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +1 -3
- package/dist/lib.cjs/providers/base-provider/baseProvider.js +4 -2
- package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +8 -11
- package/dist/lib.cjs/providers/base-provider/index.js +0 -1
- package/dist/lib.cjs/providers/base-provider/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/base-provider/utils.js +0 -3
- package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +22 -35
- package/dist/lib.cjs/providers/ethereum-provider/rpc/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMiddleware.js +200 -0
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +9 -18
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.cjs/providers/xrpl-provider/rpc/JrpcClient.js +19 -26
- package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +46 -37
- package/dist/lib.cjs/react/context/WalletServicesInnerContext.js +2 -69
- package/dist/lib.cjs/react/context/Web3AuthInnerContext.js +6 -161
- package/dist/lib.cjs/react/context/useWalletServicesContextValue.js +76 -0
- package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +202 -0
- package/dist/lib.cjs/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.cjs/react/hooks/useCheckout.js +4 -2
- package/dist/lib.cjs/react/hooks/useFunding.js +4 -2
- package/dist/lib.cjs/react/hooks/useReceive.js +4 -2
- package/dist/lib.cjs/react/hooks/useSwap.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.cjs/react/hooks/useWalletUI.js +4 -2
- package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
- package/dist/lib.cjs/react/index.js +10 -2
- package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +22 -4
- package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +20 -2
- package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +22 -3
- package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +34 -51
- package/dist/lib.cjs/react/solana/index.js +2 -0
- package/dist/lib.cjs/react/solana/provider.js +167 -0
- package/dist/lib.cjs/react/wagmi/provider.js +10 -8
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +21 -5
- package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/constants.d.ts +3 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +23 -12
- package/dist/lib.cjs/types/base/connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/base/constants.d.ts +1 -0
- package/dist/lib.cjs/types/base/cookie.d.ts +0 -7
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +24 -12
- package/dist/lib.cjs/types/base/errors/index.d.ts +2 -3
- package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
- package/dist/lib.cjs/types/base/interfaces.d.ts +5 -1
- package/dist/lib.cjs/types/base/utils.d.ts +2 -1
- package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
- package/dist/lib.cjs/types/base/wallet/solana.d.ts +19 -0
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +11 -6
- package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
- package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +10 -7
- package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +35 -3
- package/dist/lib.cjs/types/connectors/utils.d.ts +2 -0
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.d.ts +0 -1
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/walletConnectV2Utils.d.ts +1 -5
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/wcSolanaWallet.d.ts +26 -0
- package/dist/lib.cjs/types/noModal.d.ts +12 -8
- package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +1 -4
- package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/base-provider/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/base-provider/utils.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/index.d.ts +1 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/interfaces.d.ts +6 -0
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMiddleware.d.ts +3 -0
- package/dist/lib.cjs/types/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/JrpcClient.d.ts +3 -7
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +5 -12
- package/dist/lib.cjs/types/react/context/index.d.ts +4 -0
- package/dist/lib.cjs/types/react/context/useWalletServicesContextValue.d.ts +12 -0
- package/dist/lib.cjs/types/react/context/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/react/hooks/index.d.ts +1 -1
- package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
- package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/react/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/provider.d.ts +26 -0
- package/dist/lib.cjs/types/vue/composables/index.d.ts +2 -1
- package/dist/lib.cjs/types/vue/composables/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +3 -3
- package/dist/lib.cjs/types/vue/composables/useInjectedWeb3AuthInnerContext.d.ts +1 -0
- package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/vue/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/interfaces.d.ts +2 -2
- package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +1 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaClient.d.ts +7 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/vue/solana/constants.d.ts +3 -0
- package/dist/lib.cjs/types/vue/solana/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/solana/provider.d.ts +8 -0
- package/dist/lib.cjs/types/vue/useWalletServicesInnerContextValue.d.ts +13 -0
- package/dist/lib.cjs/types/vue/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/x402/index.d.ts +43 -0
- package/dist/lib.cjs/types/x402/interfaces.d.ts +11 -0
- package/dist/lib.cjs/types/x402/react.d.ts +17 -0
- package/dist/lib.cjs/types/x402/vue.d.ts +18 -0
- package/dist/lib.cjs/vue/WalletServicesInnerProvider.js +9 -54
- package/dist/lib.cjs/vue/Web3AuthProvider.js +16 -177
- package/dist/lib.cjs/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +10 -8
- package/dist/lib.cjs/vue/composables/useCheckout.js +4 -2
- package/dist/lib.cjs/vue/composables/useEnableMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useFunding.js +4 -2
- package/dist/lib.cjs/vue/composables/useInjectedWeb3AuthInnerContext.js +29 -0
- package/dist/lib.cjs/vue/composables/useManageMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useReceive.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwap.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwitchChain.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletUI.js +4 -2
- package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +4 -2
- package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +4 -2
- package/dist/lib.cjs/vue/composables/useWeb3AuthInner.js +2 -20
- package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +4 -2
- package/dist/lib.cjs/vue/index.js +8 -2
- package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSolanaClient.js +14 -0
- package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +60 -41
- package/dist/lib.cjs/vue/solana/constants.js +5 -0
- package/dist/lib.cjs/vue/solana/index.js +6 -0
- package/dist/lib.cjs/vue/solana/provider.js +107 -0
- package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +217 -0
- package/dist/lib.cjs/vue/wagmi/provider.js +12 -8
- package/dist/lib.cjs/x402/index.js +175 -0
- package/dist/lib.cjs/x402/interfaces.js +5 -0
- package/dist/lib.cjs/x402/react.js +64 -0
- package/dist/lib.cjs/x402/vue.js +58 -0
- package/dist/lib.esm/base/connector/baseConnector.js +104 -2
- package/dist/lib.esm/base/connector/connectorStatus.js +2 -1
- package/dist/lib.esm/base/connector/constants.js +4 -2
- package/dist/lib.esm/base/connector/utils.js +1 -19
- package/dist/lib.esm/base/constants.js +4 -1
- package/dist/lib.esm/base/cookie.js +7 -20
- package/dist/lib.esm/base/errors/index.js +36 -12
- package/dist/lib.esm/base/utils.js +10 -7
- package/dist/lib.esm/base/wallet/index.js +2 -1
- package/dist/lib.esm/base/wallet/solana.js +81 -0
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +143 -50
- package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +17 -39
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +29 -55
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +14 -11
- package/dist/lib.esm/connectors/injected-evm-connector/index.js +6 -1
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +14 -11
- package/dist/lib.esm/connectors/injected-solana-connector/index.js +3 -2
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +19 -31
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +335 -132
- package/dist/lib.esm/connectors/utils.js +9 -4
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +11 -30
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/index.js +5 -1
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +70 -61
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +37 -45
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
- package/dist/lib.esm/index.js +30 -38
- package/dist/lib.esm/noModal.js +225 -133
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +18 -37
- package/dist/lib.esm/providers/account-abstraction-provider/index.js +5 -1
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -9
- package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +3 -3
- package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +48 -45
- package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +2 -4
- package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
- package/dist/lib.esm/providers/base-provider/index.js +6 -2
- package/dist/lib.esm/providers/base-provider/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/base-provider/utils.js +1 -3
- package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +23 -36
- package/dist/lib.esm/providers/ethereum-provider/rpc/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMiddleware.js +201 -0
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +6 -17
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.esm/providers/xrpl-provider/rpc/JrpcClient.js +21 -25
- package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +48 -38
- package/dist/lib.esm/react/context/WalletServicesInnerContext.js +3 -57
- package/dist/lib.esm/react/context/Web3AuthInnerContext.js +7 -152
- package/dist/lib.esm/react/context/useWalletServicesContextValue.js +59 -0
- package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +188 -0
- package/dist/lib.esm/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.esm/react/index.js +5 -1
- package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +6 -4
- package/dist/lib.esm/react/solana/hooks/useSignMessage.js +4 -2
- package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +6 -3
- package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +33 -28
- package/dist/lib.esm/react/solana/index.js +1 -0
- package/dist/lib.esm/react/solana/provider.js +150 -0
- package/dist/lib.esm/react/wagmi/provider.js +7 -7
- package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -54
- package/dist/lib.esm/vue/Web3AuthProvider.js +7 -179
- package/dist/lib.esm/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +6 -6
- package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
- package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
- package/dist/lib.esm/vue/index.js +5 -2
- package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignMessage.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +3 -2
- package/dist/lib.esm/vue/solana/composables/useSolanaClient.js +12 -0
- package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +53 -35
- package/dist/lib.esm/vue/solana/constants.js +3 -0
- package/dist/lib.esm/vue/solana/index.js +3 -0
- package/dist/lib.esm/vue/solana/provider.js +95 -0
- package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +204 -0
- package/dist/lib.esm/vue/wagmi/provider.js +9 -7
- package/dist/lib.esm/x402/index.js +170 -0
- package/dist/lib.esm/x402/interfaces.js +3 -0
- package/dist/lib.esm/x402/react.js +59 -0
- package/dist/lib.esm/x402/vue.js +54 -0
- package/package.json +78 -53
- package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +0 -7
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -223
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -177
- package/dist/lib.cjs/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -21
- package/dist/lib.cjs/providers/ethereum-provider/providers/converter.js +0 -88
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -27
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -383
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -93
- package/dist/lib.cjs/providers/ethereum-provider/providers/utils.js +0 -29
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMidddleware.js +0 -171
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -65
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -45
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/utils.js +0 -16
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -103
- package/dist/lib.cjs/providers/solana-provider/rpc/JrpcClient.js +0 -47
- package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -97
- package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +0 -91
- package/dist/lib.cjs/types/connectors/injected-solana-connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +0 -74
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.d.ts +0 -12
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/interfaces.d.ts +0 -15
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/converter.d.ts +0 -14
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.d.ts +0 -16
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.d.ts +0 -28
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.d.ts +0 -46
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.d.ts +0 -11
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/utils.d.ts +0 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMidddleware.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/solana-provider/interface.d.ts +0 -22
- package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +0 -16
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/providerHandlers.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/index.d.ts +0 -2
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/JrpcClient.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/index.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/rpc/interfaces.d.ts +0 -27
- package/dist/lib.cjs/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +0 -20
- package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +0 -29
- package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +0 -1
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -206
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -163
- package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -20
- package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +0 -85
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -21
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -378
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -88
- package/dist/lib.esm/providers/ethereum-provider/providers/utils.js +0 -24
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +0 -177
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -47
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -43
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/utils.js +0 -14
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -91
- package/dist/lib.esm/providers/solana-provider/rpc/JrpcClient.js +0 -42
- package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -89
- package/dist/lib.esm/providers/solana-provider/solanaWallet.js +0 -92
- package/dist/noModal.umd.min.js +0 -2
- package/dist/noModal.umd.min.js.LICENSE.txt +0 -50
|
@@ -1,103 +1,219 @@
|
|
|
1
1
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
3
|
+
import { createEVMClient } from '@metamask/connect-evm';
|
|
4
|
+
import { createMultichainClient, hasExtension } from '@metamask/connect-multichain';
|
|
5
|
+
import { createSolanaClient } from '@metamask/connect-solana';
|
|
6
|
+
import { CHAIN_NAMESPACES, getErrorAnalyticsProperties, signChallenge } from '@toruslabs/base-controllers';
|
|
7
|
+
import { bytesToHexPrefixedString, utf8ToBytes } from '@toruslabs/metadata-helpers';
|
|
8
|
+
import { StandardConnect } from '@wallet-standard/features';
|
|
9
|
+
import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
10
|
+
import { generateSiweNonce } from 'viem/siwe';
|
|
11
|
+
import { getSiteName } from '../utils.js';
|
|
8
12
|
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
9
|
-
import {
|
|
13
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
10
14
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
11
15
|
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
12
16
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
17
|
+
import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
|
|
18
|
+
import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
|
|
13
19
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
14
20
|
|
|
15
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Configuration options for the MetaMask connector using \@metamask/connect-evm
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
class MetaMaskConnector extends BaseConnector {
|
|
16
26
|
constructor(connectorOptions) {
|
|
17
27
|
super(connectorOptions);
|
|
18
|
-
_defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.
|
|
19
|
-
_defineProperty(this, "currentChainNamespace", CHAIN_NAMESPACES.
|
|
28
|
+
_defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.MULTICHAIN);
|
|
29
|
+
_defineProperty(this, "currentChainNamespace", CHAIN_NAMESPACES.OTHER);
|
|
20
30
|
_defineProperty(this, "type", CONNECTOR_CATEGORY.EXTERNAL);
|
|
21
31
|
_defineProperty(this, "name", WALLET_CONNECTORS.METAMASK);
|
|
22
32
|
_defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
|
|
23
|
-
_defineProperty(this, "
|
|
24
|
-
_defineProperty(this, "
|
|
25
|
-
_defineProperty(this, "
|
|
33
|
+
_defineProperty(this, "evmClient", null);
|
|
34
|
+
_defineProperty(this, "evmProvider", null);
|
|
35
|
+
_defineProperty(this, "solanaClient", null);
|
|
36
|
+
_defineProperty(this, "solanaProvider", null);
|
|
37
|
+
_defineProperty(this, "initializationPromise", null);
|
|
38
|
+
_defineProperty(this, "multichainClient", null);
|
|
39
|
+
_defineProperty(this, "connectorSettings", void 0);
|
|
26
40
|
_defineProperty(this, "analytics", void 0);
|
|
27
|
-
this.
|
|
41
|
+
this.connectorSettings = connectorOptions.connectorSettings;
|
|
28
42
|
this.analytics = connectorOptions.analytics;
|
|
29
43
|
}
|
|
30
44
|
get provider() {
|
|
31
|
-
if (this.status !== CONNECTOR_STATUS.NOT_READY && this.
|
|
32
|
-
return this.
|
|
45
|
+
if (this.status !== CONNECTOR_STATUS.NOT_READY && this.evmProvider) {
|
|
46
|
+
return this.evmProvider;
|
|
33
47
|
}
|
|
34
48
|
return null;
|
|
35
49
|
}
|
|
36
|
-
|
|
37
|
-
|
|
50
|
+
get solanaWallet() {
|
|
51
|
+
return this.solanaProvider;
|
|
38
52
|
}
|
|
39
53
|
async init(options) {
|
|
40
|
-
|
|
54
|
+
var _this$connectorSettin, _this$connectorSettin2, _this$connectorSettin3, _this$connectorSettin4, _this$connectorSettin5, _this$connectorSettin6, _this$connectorSettin7, _this$connectorSettin8, _this$connectorSettin9;
|
|
41
55
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
|
|
42
56
|
super.checkInitializationRequirements({
|
|
43
57
|
chainConfig
|
|
44
58
|
});
|
|
45
59
|
|
|
60
|
+
// Build supported networks in CAIP-2 format for multichain client
|
|
61
|
+
const caipSupportedNetworks = {};
|
|
62
|
+
for (const chain of this.coreOptions.chains) {
|
|
63
|
+
caipSupportedNetworks[getCaipChainId(chain)] = chain.rpcTarget;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Build supported networks in hex format for EVM client
|
|
67
|
+
const hexSupportedNetworks = {};
|
|
68
|
+
for (const chain of this.coreOptions.chains) {
|
|
69
|
+
if (chain.chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
70
|
+
hexSupportedNetworks[chain.chainId] = chain.rpcTarget;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Build supported networks for Solana client (MetaMask expects mainnet | testnet | devnet keys)
|
|
75
|
+
const solanaSupportedNetworks = {};
|
|
76
|
+
for (const chain of this.coreOptions.chains) {
|
|
77
|
+
if (chain.chainNamespace !== CHAIN_NAMESPACES.SOLANA) continue;
|
|
78
|
+
const solanaChainId = getSolanaChainByChainConfig(chain);
|
|
79
|
+
if (!solanaChainId) continue;
|
|
80
|
+
const networkName = solanaChainId.split(":")[1];
|
|
81
|
+
if (networkName) solanaSupportedNetworks[networkName] = chain.rpcTarget;
|
|
82
|
+
}
|
|
83
|
+
|
|
46
84
|
// Detect app metadata
|
|
47
|
-
const
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
85
|
+
const appName = getSiteName(window) || ((_this$connectorSettin = this.connectorSettings) === null || _this$connectorSettin === void 0 || (_this$connectorSettin = _this$connectorSettin.dapp) === null || _this$connectorSettin === void 0 ? void 0 : _this$connectorSettin.name) || "web3auth";
|
|
86
|
+
const appUrl = ((_this$connectorSettin2 = this.connectorSettings) === null || _this$connectorSettin2 === void 0 || (_this$connectorSettin2 = _this$connectorSettin2.dapp) === null || _this$connectorSettin2 === void 0 ? void 0 : _this$connectorSettin2.url) || window.location.origin || "https://web3auth.io";
|
|
87
|
+
const appIconUrl = (_this$connectorSettin3 = this.connectorSettings) === null || _this$connectorSettin3 === void 0 || (_this$connectorSettin3 = _this$connectorSettin3.dapp) === null || _this$connectorSettin3 === void 0 ? void 0 : _this$connectorSettin3.iconUrl;
|
|
88
|
+
const dapp = _objectSpread({
|
|
89
|
+
name: appName,
|
|
90
|
+
url: appUrl
|
|
91
|
+
}, appIconUrl && {
|
|
92
|
+
iconUrl: appIconUrl
|
|
93
|
+
});
|
|
94
|
+
const ui = {
|
|
95
|
+
preferExtension: (_this$connectorSettin4 = (_this$connectorSettin5 = this.connectorSettings) === null || _this$connectorSettin5 === void 0 || (_this$connectorSettin5 = _this$connectorSettin5.ui) === null || _this$connectorSettin5 === void 0 ? void 0 : _this$connectorSettin5.preferExtension) !== null && _this$connectorSettin4 !== void 0 ? _this$connectorSettin4 : true,
|
|
96
|
+
showInstallModal: (_this$connectorSettin6 = (_this$connectorSettin7 = this.connectorSettings) === null || _this$connectorSettin7 === void 0 || (_this$connectorSettin7 = _this$connectorSettin7.ui) === null || _this$connectorSettin7 === void 0 ? void 0 : _this$connectorSettin7.showInstallModal) !== null && _this$connectorSettin6 !== void 0 ? _this$connectorSettin6 : false,
|
|
97
|
+
headless: (_this$connectorSettin8 = (_this$connectorSettin9 = this.connectorSettings) === null || _this$connectorSettin9 === void 0 || (_this$connectorSettin9 = _this$connectorSettin9.ui) === null || _this$connectorSettin9 === void 0 ? void 0 : _this$connectorSettin9.headless) !== null && _this$connectorSettin8 !== void 0 ? _this$connectorSettin8 : true
|
|
53
98
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
99
|
+
let initResolve;
|
|
100
|
+
let initReject;
|
|
101
|
+
this.initializationPromise = new Promise((resolve, reject) => {
|
|
102
|
+
initResolve = resolve;
|
|
103
|
+
initReject = reject;
|
|
58
104
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
preferDesktop: true
|
|
62
|
-
}));
|
|
63
|
-
// Work around: in case there is an existing SDK instance in memory (window.mmsdk exists), it won't initialize the new SDK instance again
|
|
64
|
-
// and return the existing instance instead of undefined (this is an assumption, not sure if it's a bug or feature of the MetaMask SDK)
|
|
65
|
-
const initResult = await this.metamaskSDK.init();
|
|
66
|
-
if (initResult) {
|
|
67
|
-
this.metamaskSDK = initResult;
|
|
68
|
-
}
|
|
69
|
-
this.isInjected = this.metamaskSDK.isExtensionActive();
|
|
70
|
-
this.status = CONNECTOR_STATUS.READY;
|
|
71
|
-
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
|
|
105
|
+
const hasEvmChains = Object.keys(hexSupportedNetworks).length > 0;
|
|
106
|
+
const hasSolanaChains = Object.keys(solanaSupportedNetworks).length > 0;
|
|
72
107
|
try {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
108
|
+
var _this$connectorSettin0;
|
|
109
|
+
// Initialize the multichain client (singleton) first
|
|
110
|
+
this.multichainClient = await createMultichainClient({
|
|
111
|
+
dapp,
|
|
112
|
+
api: {
|
|
113
|
+
supportedNetworks: caipSupportedNetworks
|
|
114
|
+
},
|
|
115
|
+
ui,
|
|
116
|
+
debug: (_this$connectorSettin0 = this.connectorSettings) === null || _this$connectorSettin0 === void 0 ? void 0 : _this$connectorSettin0.debug
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
// Listen for QR code URI from the multichain client (for mobile wallet connection)
|
|
120
|
+
this.multichainClient.on("display_uri", uri => {
|
|
121
|
+
if (uri) {
|
|
122
|
+
this.updateConnectorData({
|
|
123
|
+
uri
|
|
124
|
+
});
|
|
82
125
|
}
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
// Create the EVM client only when EVM chains are configured
|
|
129
|
+
// (createEVMClient requires at least one entry in supportedNetworks)
|
|
130
|
+
if (hasEvmChains) {
|
|
131
|
+
var _this$connectorSettin1;
|
|
132
|
+
this.evmClient = await createEVMClient({
|
|
133
|
+
dapp,
|
|
134
|
+
eventHandlers: {
|
|
135
|
+
accountsChanged: _accounts => {
|
|
136
|
+
if (_accounts.length === 0) {
|
|
137
|
+
this.disconnect();
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
chainChanged: _chainId => {},
|
|
141
|
+
connect: _result => {},
|
|
142
|
+
disconnect: () => this.disconnect()
|
|
143
|
+
},
|
|
144
|
+
api: {
|
|
145
|
+
supportedNetworks: hexSupportedNetworks
|
|
146
|
+
},
|
|
147
|
+
ui,
|
|
148
|
+
debug: (_this$connectorSettin1 = this.connectorSettings) === null || _this$connectorSettin1 === void 0 ? void 0 : _this$connectorSettin1.debug
|
|
149
|
+
});
|
|
150
|
+
this.evmProvider = this.evmClient.getProvider();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Create the Solana client only when Solana chains are configured
|
|
154
|
+
if (hasSolanaChains) {
|
|
155
|
+
this.solanaClient = await createSolanaClient({
|
|
156
|
+
dapp,
|
|
157
|
+
api: {
|
|
158
|
+
supportedNetworks: solanaSupportedNetworks
|
|
159
|
+
},
|
|
160
|
+
skipAutoRegister: true
|
|
161
|
+
});
|
|
162
|
+
this.solanaProvider = this.solanaClient.getWallet();
|
|
83
163
|
}
|
|
164
|
+
this.isInjected = await hasExtension();
|
|
165
|
+
initResolve();
|
|
84
166
|
} catch (error) {
|
|
85
|
-
|
|
167
|
+
initReject(WalletLoginError.connectionError("Failed to initialize MetaMask Connect SDK", error));
|
|
168
|
+
}
|
|
169
|
+
if (!this.multichainClient) {
|
|
170
|
+
this.status = CONNECTOR_STATUS.ERRORED;
|
|
171
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, new Error("Failed to initialize MetaMask Connect."));
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const coreStatus = this.multichainClient.status;
|
|
175
|
+
if (coreStatus === "connected") {
|
|
176
|
+
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
177
|
+
this.rehydrated = true;
|
|
178
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
179
|
+
connectorName: WALLET_CONNECTORS.METAMASK,
|
|
180
|
+
reconnected: this.rehydrated,
|
|
181
|
+
ethereumProvider: this.evmProvider,
|
|
182
|
+
solanaWallet: this.solanaProvider
|
|
183
|
+
});
|
|
184
|
+
if (options.getAuthTokenInfo) {
|
|
185
|
+
await this.getAuthTokenInfo();
|
|
186
|
+
}
|
|
187
|
+
} else if (coreStatus === "loaded" || coreStatus === "disconnected") {
|
|
188
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
189
|
+
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
|
|
190
|
+
} else if (coreStatus === "pending") {
|
|
191
|
+
// 'pending' implies that a transport failed to resume the connection
|
|
192
|
+
// if (options.autoConnect) {
|
|
193
|
+
// this.rehydrated = false;
|
|
194
|
+
// this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, new Error("Failed to resume existing MetaMask Connect session.") as Web3AuthError);
|
|
195
|
+
// } else {
|
|
196
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
197
|
+
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
|
|
198
|
+
// }
|
|
199
|
+
} else {
|
|
200
|
+
// Something unexpected happened
|
|
201
|
+
this.status = CONNECTOR_STATUS.ERRORED;
|
|
202
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, new Error("Failed to initialize MetaMask Connect."));
|
|
86
203
|
}
|
|
87
204
|
}
|
|
88
205
|
async connect({
|
|
89
206
|
chainId,
|
|
90
|
-
|
|
207
|
+
getAuthTokenInfo
|
|
91
208
|
}) {
|
|
92
209
|
super.checkConnectionRequirements();
|
|
93
|
-
|
|
210
|
+
await this.ensureInitialized();
|
|
94
211
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
95
212
|
if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
213
|
+
const scopes = this.coreOptions.chains.map(c => getCaipChainId(c));
|
|
96
214
|
|
|
97
|
-
// Skip tracking for injected MetaMask since it's handled in connectTo
|
|
98
215
|
// Skip tracking for rehydration since only new connections are tracked
|
|
99
|
-
|
|
100
|
-
const shouldTrack = !this.isInjected && !this.rehydrated;
|
|
216
|
+
const shouldTrack = !this.rehydrated;
|
|
101
217
|
const startTime = Date.now();
|
|
102
218
|
const eventData = {
|
|
103
219
|
connector: this.name,
|
|
@@ -109,43 +225,50 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
109
225
|
};
|
|
110
226
|
try {
|
|
111
227
|
if (this.status !== CONNECTOR_STATUS.CONNECTING) {
|
|
112
|
-
var _this$metamaskOptions;
|
|
113
228
|
this.status = CONNECTOR_STATUS.CONNECTING;
|
|
114
229
|
this.emit(CONNECTOR_EVENTS.CONNECTING, {
|
|
115
230
|
connector: WALLET_CONNECTORS.METAMASK
|
|
116
231
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
232
|
+
const evmConnectedPromise = new Promise(resolve => {
|
|
233
|
+
var _this$evmProvider;
|
|
234
|
+
// Wait for EVM provider to be ready
|
|
235
|
+
(_this$evmProvider = this.evmProvider) === null || _this$evmProvider === void 0 || _this$evmProvider.once("connect", () => {
|
|
236
|
+
resolve();
|
|
123
237
|
});
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
// Connect using the multichain client
|
|
241
|
+
await this.multichainClient.connect(scopes, [], {
|
|
242
|
+
solana_accountChanged_notifications: true
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
// Solana wallet-standard: `standard:events` change is not emitted from multichain
|
|
246
|
+
// connect alone — MetamaskWallet syncs accounts via `standard:connect` → updateSession.
|
|
247
|
+
if (this.solanaProvider) {
|
|
248
|
+
await this.solanaProvider.features[StandardConnect].connect();
|
|
124
249
|
}
|
|
125
|
-
await this.metamaskSDK.connect();
|
|
126
|
-
}
|
|
127
|
-
this.metamaskProvider = this.metamaskSDK.getProvider();
|
|
128
|
-
if (!this.metamaskProvider) throw WalletLoginError.notConnectedError("Failed to connect with provider");
|
|
129
250
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (currentChainId !== chainConfig.chainId) {
|
|
135
|
-
await this.switchChain(chainConfig, true);
|
|
251
|
+
// Wait for EVM provider to be ready
|
|
252
|
+
if (this.evmProvider) {
|
|
253
|
+
await evmConnectedPromise;
|
|
254
|
+
}
|
|
136
255
|
}
|
|
137
256
|
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
257
|
+
// // Switch EVM chain if not connected to the right one (Solana chains are handled by the wallet-standard provider)
|
|
258
|
+
// if (chainConfig.chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
259
|
+
// const currentChainId = this.evmClient!.getChainId();
|
|
260
|
+
// if (currentChainId !== chainId) {
|
|
261
|
+
// await this.switchChain(chainConfig, true);
|
|
262
|
+
// }
|
|
263
|
+
// }
|
|
264
|
+
|
|
265
|
+
// check if connected
|
|
266
|
+
if (this.multichainClient.status !== "connected") {
|
|
267
|
+
throw WalletLoginError.notConnectedError("Failed to connect with MetaMask wallet");
|
|
268
|
+
}
|
|
146
269
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
147
270
|
|
|
148
|
-
//
|
|
271
|
+
// Track connection events
|
|
149
272
|
if (shouldTrack) {
|
|
150
273
|
var _this$analytics, _this$analytics2;
|
|
151
274
|
(_this$analytics = this.analytics) === null || _this$analytics === void 0 || _this$analytics.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
@@ -153,24 +276,27 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
153
276
|
duration: Date.now() - startTime
|
|
154
277
|
}));
|
|
155
278
|
}
|
|
156
|
-
let identityTokenInfo;
|
|
157
279
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
158
|
-
|
|
280
|
+
connectorName: WALLET_CONNECTORS.METAMASK,
|
|
159
281
|
reconnected: this.rehydrated,
|
|
160
|
-
|
|
161
|
-
|
|
282
|
+
ethereumProvider: this.evmProvider,
|
|
283
|
+
solanaWallet: this.solanaProvider
|
|
162
284
|
});
|
|
163
|
-
if (
|
|
164
|
-
|
|
285
|
+
if (getAuthTokenInfo) {
|
|
286
|
+
await this.getAuthTokenInfo();
|
|
165
287
|
}
|
|
166
|
-
return
|
|
288
|
+
return {
|
|
289
|
+
ethereumProvider: this.evmProvider,
|
|
290
|
+
solanaWallet: this.solanaProvider,
|
|
291
|
+
connectorName: this.name
|
|
292
|
+
};
|
|
167
293
|
} catch (error) {
|
|
168
|
-
//
|
|
294
|
+
// Ready again to be connected
|
|
169
295
|
this.status = CONNECTOR_STATUS.READY;
|
|
170
296
|
if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error);
|
|
171
297
|
this.rehydrated = false;
|
|
172
298
|
|
|
173
|
-
//
|
|
299
|
+
// Track connection events
|
|
174
300
|
if (shouldTrack) {
|
|
175
301
|
var _this$analytics3, _this$analytics4;
|
|
176
302
|
(_this$analytics3 = this.analytics) === null || _this$analytics3 === void 0 || _this$analytics3.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
@@ -185,18 +311,80 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
185
311
|
async disconnect(options = {
|
|
186
312
|
cleanup: false
|
|
187
313
|
}) {
|
|
188
|
-
if (!this.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
314
|
+
if (!this.multichainClient) throw WalletLoginError.connectionError("Multichain client is not available");
|
|
315
|
+
this.checkDisconnectionRequirements();
|
|
316
|
+
await this.clearWalletSession();
|
|
317
|
+
|
|
318
|
+
// Disconnect using the multichain client
|
|
319
|
+
await this.multichainClient.disconnect();
|
|
192
320
|
if (options.cleanup) {
|
|
193
321
|
this.status = CONNECTOR_STATUS.NOT_READY;
|
|
194
|
-
this.
|
|
322
|
+
this.initializationPromise = null;
|
|
323
|
+
this.multichainClient = null;
|
|
324
|
+
this.evmClient = null;
|
|
325
|
+
this.evmProvider = null;
|
|
326
|
+
this.solanaClient = null;
|
|
327
|
+
this.solanaProvider = null;
|
|
195
328
|
} else {
|
|
196
|
-
//
|
|
329
|
+
// Ready to be connected again
|
|
197
330
|
this.status = CONNECTOR_STATUS.READY;
|
|
198
331
|
}
|
|
199
|
-
|
|
332
|
+
this.rehydrated = false;
|
|
333
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED);
|
|
334
|
+
}
|
|
335
|
+
async getAuthTokenInfo() {
|
|
336
|
+
var _this$evmProvider2, _this$coreOptions$cha;
|
|
337
|
+
if (!this.canAuthorize) throw WalletLoginError.notConnectedError();
|
|
338
|
+
|
|
339
|
+
// Determine the active chain: prefer Solana if no EVM provider, otherwise use EVM provider's chain
|
|
340
|
+
const evmChainId = ((_this$evmProvider2 = this.evmProvider) === null || _this$evmProvider2 === void 0 ? void 0 : _this$evmProvider2.chainId) || ((_this$coreOptions$cha = this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha === void 0 ? void 0 : _this$coreOptions$cha.chainId);
|
|
341
|
+
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
342
|
+
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
343
|
+
if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
344
|
+
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
345
|
+
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
346
|
+
connector: WALLET_CONNECTORS.METAMASK
|
|
347
|
+
});
|
|
348
|
+
const {
|
|
349
|
+
chainNamespace
|
|
350
|
+
} = activeChainConfig;
|
|
351
|
+
const accounts = chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
|
|
352
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
353
|
+
}) : [];
|
|
354
|
+
if (accounts && accounts.length > 0) {
|
|
355
|
+
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
356
|
+
if (cached) return cached;
|
|
357
|
+
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
358
|
+
const payload = {
|
|
359
|
+
domain: window.location.origin,
|
|
360
|
+
uri: window.location.href,
|
|
361
|
+
address: accounts[0],
|
|
362
|
+
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
363
|
+
version: "1",
|
|
364
|
+
nonce: generateSiweNonce(),
|
|
365
|
+
issuedAt: new Date().toISOString()
|
|
366
|
+
};
|
|
367
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
368
|
+
let signedMessage;
|
|
369
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
370
|
+
signedMessage = await walletSignMessage(this.solanaProvider, challenge, accounts[0]);
|
|
371
|
+
} else if (this.evmProvider) {
|
|
372
|
+
const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
|
|
373
|
+
signedMessage = await this.evmProvider.request({
|
|
374
|
+
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
375
|
+
params: [hexChallenge, accounts[0]]
|
|
376
|
+
});
|
|
377
|
+
} else {
|
|
378
|
+
throw WalletLoginError.notConnectedError("No provider available for signing");
|
|
379
|
+
}
|
|
380
|
+
return this.verifyAndAuthorize({
|
|
381
|
+
chainNamespace,
|
|
382
|
+
signedMessage,
|
|
383
|
+
challenge,
|
|
384
|
+
authServer
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
200
388
|
}
|
|
201
389
|
async getUserInfo() {
|
|
202
390
|
if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
@@ -204,24 +392,32 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
204
392
|
}
|
|
205
393
|
async switchChain(params, init = false) {
|
|
206
394
|
super.checkSwitchChainRequirements(params, init);
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
} catch (error) {
|
|
216
|
-
// If the error code is 4902, the network needs to be added
|
|
217
|
-
if ((error === null || error === void 0 ? void 0 : error.code) === 4902) {
|
|
218
|
-
const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && [CHAIN_NAMESPACES.EIP155].includes(x.chainNamespace));
|
|
219
|
-
await this.addChain(chainConfig);
|
|
220
|
-
await requestSwitchChain();
|
|
221
|
-
} else {
|
|
222
|
-
throw error;
|
|
223
|
-
}
|
|
395
|
+
const targetChainConfig = this.coreOptions.chains.find(c => c.chainId === params.chainId);
|
|
396
|
+
if ((targetChainConfig === null || targetChainConfig === void 0 ? void 0 : targetChainConfig.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
|
|
397
|
+
// no need to switch chain for Solana
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
await this.ensureInitialized();
|
|
401
|
+
if (!this.evmClient) {
|
|
402
|
+
throw WalletLoginError.unsupportedOperation("switchChain requires an EVM client, but no EVM chains are configured.");
|
|
224
403
|
}
|
|
404
|
+
const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && [CHAIN_NAMESPACES.EIP155].includes(x.chainNamespace));
|
|
405
|
+
const chainConfiguration = chainConfig ? {
|
|
406
|
+
chainId: params.chainId,
|
|
407
|
+
chainName: chainConfig.displayName,
|
|
408
|
+
rpcUrls: [chainConfig.rpcTarget],
|
|
409
|
+
blockExplorerUrls: chainConfig.blockExplorerUrl ? [chainConfig.blockExplorerUrl] : undefined,
|
|
410
|
+
nativeCurrency: {
|
|
411
|
+
name: chainConfig.tickerName,
|
|
412
|
+
symbol: chainConfig.ticker,
|
|
413
|
+
decimals: chainConfig.decimals || 18
|
|
414
|
+
},
|
|
415
|
+
iconUrls: chainConfig.logo ? [chainConfig.logo] : undefined
|
|
416
|
+
} : undefined;
|
|
417
|
+
await this.evmClient.switchChain({
|
|
418
|
+
chainId: params.chainId,
|
|
419
|
+
chainConfiguration
|
|
420
|
+
});
|
|
225
421
|
}
|
|
226
422
|
async enableMFA() {
|
|
227
423
|
throw new Error("Method Not implemented");
|
|
@@ -229,25 +425,32 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
229
425
|
async manageMFA() {
|
|
230
426
|
throw new Error("Method Not implemented");
|
|
231
427
|
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
nativeCurrency: {
|
|
242
|
-
name: chainConfig.tickerName,
|
|
243
|
-
symbol: chainConfig.ticker,
|
|
244
|
-
decimals: chainConfig.decimals || 18
|
|
245
|
-
},
|
|
246
|
-
iconUrls: [chainConfig.logo]
|
|
247
|
-
}]
|
|
248
|
-
});
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Ensures the connector is initialized
|
|
431
|
+
*/
|
|
432
|
+
async ensureInitialized() {
|
|
433
|
+
if (!this.initializationPromise) {
|
|
434
|
+
throw WalletLoginError.notConnectedError("Connector is not initialized. Call init() first.");
|
|
435
|
+
}
|
|
436
|
+
await this.initializationPromise;
|
|
249
437
|
}
|
|
250
438
|
}
|
|
439
|
+
|
|
440
|
+
/**
|
|
441
|
+
* Factory function to create a MetaMask connector
|
|
442
|
+
*
|
|
443
|
+
* @param params - Configuration options for the MetaMask SDK
|
|
444
|
+
* @returns A connector function that creates a MetaMaskConnector instance
|
|
445
|
+
*
|
|
446
|
+
* @example
|
|
447
|
+
* ```typescript
|
|
448
|
+
* const connector = metaMaskConnector({
|
|
449
|
+
* dapp: { name: 'My DApp', url: 'https://mydapp.com' },
|
|
450
|
+
* debug: true,
|
|
451
|
+
* });
|
|
452
|
+
* ```
|
|
453
|
+
*/
|
|
251
454
|
const metaMaskConnector = params => {
|
|
252
455
|
return ({
|
|
253
456
|
coreOptions,
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { generatePrivate } from '@toruslabs/eccrypto';
|
|
2
|
+
import { bytesToHexPrefixedString } from '@toruslabs/metadata-helpers';
|
|
3
|
+
import { base64toJSON } from '@web3auth/auth';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* Extracts a name for the site from the DOM
|
|
@@ -63,9 +65,12 @@ async function getSiteIcon(window) {
|
|
|
63
65
|
function parseToken(token) {
|
|
64
66
|
const [header, payload] = token.split(".");
|
|
65
67
|
return {
|
|
66
|
-
header:
|
|
67
|
-
payload:
|
|
68
|
+
header: base64toJSON(header),
|
|
69
|
+
payload: base64toJSON(payload)
|
|
68
70
|
};
|
|
69
71
|
}
|
|
72
|
+
const generateNonce = () => {
|
|
73
|
+
return bytesToHexPrefixedString(generatePrivate());
|
|
74
|
+
};
|
|
70
75
|
|
|
71
|
-
export { getSiteIcon, getSiteName, parseToken };
|
|
76
|
+
export { generateNonce, getSiteIcon, getSiteName, parseToken };
|