@web3auth/no-modal 10.16.0 → 11.0.0-beta.1
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/account-linking/index.js +8 -0
- package/dist/lib.cjs/account-linking/react.js +95 -0
- package/dist/lib.cjs/account-linking/rest.js +54 -0
- package/dist/lib.cjs/account-linking/vue.js +98 -0
- package/dist/lib.cjs/base/analytics.js +13 -1
- 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 +6 -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 +84 -12
- package/dist/lib.cjs/base/utils.js +22 -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 +566 -93
- package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- 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 +350 -131
- package/dist/lib.cjs/connectors/utils.js +8 -2
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -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 +111 -73
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +24 -51
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
- package/dist/lib.cjs/index.js +55 -83
- package/dist/lib.cjs/noModal.js +957 -169
- 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 +69 -35
- 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 -43
- 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 +216 -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/useWallets.js +51 -0
- package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
- package/dist/lib.cjs/react/index.js +12 -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 +169 -0
- package/dist/lib.cjs/react/wagmi/provider.js +10 -8
- package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
- package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
- package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
- package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
- package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
- package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +26 -5
- package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/constants.d.ts +5 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +72 -16
- 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 +57 -13
- package/dist/lib.cjs/types/base/errors/index.d.ts +15 -3
- package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
- package/dist/lib.cjs/types/base/interfaces.d.ts +8 -2
- package/dist/lib.cjs/types/base/utils.d.ts +9 -2
- 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 +37 -8
- package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
- package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
- package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +8 -2
- package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +8 -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/index.d.ts +1 -0
- package/dist/lib.cjs/types/noModal.d.ts +113 -10
- 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/baseProvider.d.ts +7 -0
- 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/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 +2 -1
- package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
- package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
- 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 +3 -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/useWallets.d.ts +9 -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/useWallets.js +52 -0
- package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +6 -4
- 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 +10 -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 +110 -0
- package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +226 -0
- package/dist/lib.cjs/vue/wagmi/provider.js +28 -12
- 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/account-linking/index.js +1 -0
- package/dist/lib.esm/account-linking/react.js +74 -0
- package/dist/lib.esm/account-linking/rest.js +51 -0
- package/dist/lib.esm/account-linking/vue.js +78 -0
- package/dist/lib.esm/base/analytics.js +13 -1
- 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 +6 -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 +84 -13
- package/dist/lib.esm/base/utils.js +22 -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 +527 -57
- package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +22 -34
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +366 -132
- package/dist/lib.esm/connectors/utils.js +9 -4
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -31
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +110 -73
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +21 -49
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
- package/dist/lib.esm/index.js +12 -19
- package/dist/lib.esm/noModal.js +975 -177
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +20 -39
- 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/baseProvider.js +68 -38
- package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
- package/dist/lib.esm/providers/base-provider/index.js +1 -1
- 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 -44
- 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 +203 -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/useWallets.js +33 -0
- package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/react/index.js +6 -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 +153 -0
- package/dist/lib.esm/react/wagmi/provider.js +8 -8
- 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/useCheckout.js +1 -1
- package/dist/lib.esm/vue/composables/useFunding.js +1 -1
- package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
- package/dist/lib.esm/vue/composables/useReceive.js +1 -1
- package/dist/lib.esm/vue/composables/useSwap.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
- package/dist/lib.esm/vue/composables/useWallets.js +35 -0
- package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
- package/dist/lib.esm/vue/index.js +5 -1
- 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 +99 -0
- package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +213 -0
- package/dist/lib.esm/vue/wagmi/provider.js +26 -12
- 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 +102 -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 -224
- 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 -251
- 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 -258
- 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 -46
|
@@ -1,103 +1,223 @@
|
|
|
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 {
|
|
8
|
-
import {
|
|
9
|
-
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';
|
|
10
12
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
11
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
12
13
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
14
|
+
import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
|
|
13
15
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
16
|
+
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
17
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
18
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
19
|
+
import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Configuration options for the MetaMask connector using \@metamask/connect-evm
|
|
23
|
+
*/
|
|
14
24
|
|
|
15
|
-
class MetaMaskConnector extends
|
|
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 {
|
|
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
|
+
});
|
|
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();
|
|
163
|
+
}
|
|
164
|
+
this.isInjected = await hasExtension();
|
|
165
|
+
initResolve();
|
|
166
|
+
} catch (error) {
|
|
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;
|
|
73
178
|
if (options.autoConnect) {
|
|
74
|
-
this.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
179
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
180
|
+
connectorName: WALLET_CONNECTORS.METAMASK,
|
|
181
|
+
reconnected: this.rehydrated,
|
|
182
|
+
ethereumProvider: this.evmProvider,
|
|
183
|
+
solanaWallet: this.solanaProvider
|
|
78
184
|
});
|
|
79
|
-
if (
|
|
80
|
-
this.
|
|
81
|
-
throw WalletLoginError.connectionError("Failed to rehydrate.");
|
|
185
|
+
if (options.getAuthTokenInfo) {
|
|
186
|
+
await this.getAuthTokenInfo();
|
|
82
187
|
}
|
|
83
188
|
}
|
|
84
|
-
}
|
|
85
|
-
this.
|
|
189
|
+
} else if (coreStatus === "loaded" || coreStatus === "disconnected") {
|
|
190
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
191
|
+
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
|
|
192
|
+
} else if (coreStatus === "pending") {
|
|
193
|
+
// 'pending' implies that a transport failed to resume the connection
|
|
194
|
+
// if (options.autoConnect) {
|
|
195
|
+
// this.rehydrated = false;
|
|
196
|
+
// this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, new Error("Failed to resume existing MetaMask Connect session.") as Web3AuthError);
|
|
197
|
+
// } else {
|
|
198
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
199
|
+
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.METAMASK);
|
|
200
|
+
// }
|
|
201
|
+
} else {
|
|
202
|
+
// Something unexpected happened
|
|
203
|
+
this.status = CONNECTOR_STATUS.ERRORED;
|
|
204
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, new Error("Failed to initialize MetaMask Connect."));
|
|
86
205
|
}
|
|
87
206
|
}
|
|
88
207
|
async connect({
|
|
89
208
|
chainId,
|
|
90
|
-
|
|
209
|
+
getAuthTokenInfo,
|
|
210
|
+
caipAccountIds: caipAccountIdsFromParams
|
|
91
211
|
}) {
|
|
92
212
|
super.checkConnectionRequirements();
|
|
93
|
-
|
|
213
|
+
await this.ensureInitialized();
|
|
94
214
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
95
215
|
if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
216
|
+
const scopes = this.coreOptions.chains.map(c => getCaipChainId(c));
|
|
217
|
+
const caipAccountIds = caipAccountIdsFromParams || [];
|
|
96
218
|
|
|
97
|
-
// Skip tracking for injected MetaMask since it's handled in connectTo
|
|
98
219
|
// Skip tracking for rehydration since only new connections are tracked
|
|
99
|
-
|
|
100
|
-
const shouldTrack = !this.isInjected && !this.rehydrated;
|
|
220
|
+
const shouldTrack = !this.rehydrated;
|
|
101
221
|
const startTime = Date.now();
|
|
102
222
|
const eventData = {
|
|
103
223
|
connector: this.name,
|
|
@@ -109,43 +229,50 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
109
229
|
};
|
|
110
230
|
try {
|
|
111
231
|
if (this.status !== CONNECTOR_STATUS.CONNECTING) {
|
|
112
|
-
var _this$metamaskOptions;
|
|
113
232
|
this.status = CONNECTOR_STATUS.CONNECTING;
|
|
114
233
|
this.emit(CONNECTOR_EVENTS.CONNECTING, {
|
|
115
234
|
connector: WALLET_CONNECTORS.METAMASK
|
|
116
235
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
236
|
+
const evmConnectedPromise = new Promise(resolve => {
|
|
237
|
+
var _this$evmProvider;
|
|
238
|
+
// Wait for EVM provider to be ready
|
|
239
|
+
(_this$evmProvider = this.evmProvider) === null || _this$evmProvider === void 0 || _this$evmProvider.once("connect", () => {
|
|
240
|
+
resolve();
|
|
123
241
|
});
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// Connect using the multichain client
|
|
245
|
+
await this.multichainClient.connect(scopes, caipAccountIds, {
|
|
246
|
+
solana_accountChanged_notifications: true
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
// Solana wallet-standard: `standard:events` change is not emitted from multichain
|
|
250
|
+
// connect alone — MetamaskWallet syncs accounts via `standard:connect` → updateSession.
|
|
251
|
+
if (this.solanaProvider) {
|
|
252
|
+
await this.solanaProvider.features[StandardConnect].connect();
|
|
124
253
|
}
|
|
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
254
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (currentChainId !== chainConfig.chainId) {
|
|
135
|
-
await this.switchChain(chainConfig, true);
|
|
255
|
+
// Wait for EVM provider to be ready
|
|
256
|
+
if (this.evmProvider) {
|
|
257
|
+
await evmConnectedPromise;
|
|
258
|
+
}
|
|
136
259
|
}
|
|
137
260
|
|
|
138
|
-
//
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
261
|
+
// // Switch EVM chain if not connected to the right one (Solana chains are handled by the wallet-standard provider)
|
|
262
|
+
// if (chainConfig.chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
263
|
+
// const currentChainId = this.evmClient!.getChainId();
|
|
264
|
+
// if (currentChainId !== chainId) {
|
|
265
|
+
// await this.switchChain(chainConfig, true);
|
|
266
|
+
// }
|
|
267
|
+
// }
|
|
268
|
+
|
|
269
|
+
// check if connected
|
|
270
|
+
if (this.multichainClient.status !== "connected") {
|
|
271
|
+
throw WalletLoginError.notConnectedError("Failed to connect with MetaMask wallet");
|
|
272
|
+
}
|
|
146
273
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
147
274
|
|
|
148
|
-
//
|
|
275
|
+
// Track connection events
|
|
149
276
|
if (shouldTrack) {
|
|
150
277
|
var _this$analytics, _this$analytics2;
|
|
151
278
|
(_this$analytics = this.analytics) === null || _this$analytics === void 0 || _this$analytics.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
@@ -153,24 +280,27 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
153
280
|
duration: Date.now() - startTime
|
|
154
281
|
}));
|
|
155
282
|
}
|
|
156
|
-
let identityTokenInfo;
|
|
157
283
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
158
|
-
|
|
284
|
+
connectorName: WALLET_CONNECTORS.METAMASK,
|
|
159
285
|
reconnected: this.rehydrated,
|
|
160
|
-
|
|
161
|
-
|
|
286
|
+
ethereumProvider: this.evmProvider,
|
|
287
|
+
solanaWallet: this.solanaProvider
|
|
162
288
|
});
|
|
163
|
-
if (
|
|
164
|
-
|
|
289
|
+
if (getAuthTokenInfo) {
|
|
290
|
+
await this.getAuthTokenInfo();
|
|
165
291
|
}
|
|
166
|
-
return
|
|
292
|
+
return {
|
|
293
|
+
ethereumProvider: this.evmProvider,
|
|
294
|
+
solanaWallet: this.solanaProvider,
|
|
295
|
+
connectorName: this.name
|
|
296
|
+
};
|
|
167
297
|
} catch (error) {
|
|
168
|
-
//
|
|
298
|
+
// Ready again to be connected
|
|
169
299
|
this.status = CONNECTOR_STATUS.READY;
|
|
170
300
|
if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error);
|
|
171
301
|
this.rehydrated = false;
|
|
172
302
|
|
|
173
|
-
//
|
|
303
|
+
// Track connection events
|
|
174
304
|
if (shouldTrack) {
|
|
175
305
|
var _this$analytics3, _this$analytics4;
|
|
176
306
|
(_this$analytics3 = this.analytics) === null || _this$analytics3 === void 0 || _this$analytics3.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
@@ -185,18 +315,63 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
185
315
|
async disconnect(options = {
|
|
186
316
|
cleanup: false
|
|
187
317
|
}) {
|
|
188
|
-
if (!this.
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
318
|
+
if (!this.multichainClient) throw WalletLoginError.connectionError("Multichain client is not available");
|
|
319
|
+
this.checkDisconnectionRequirements();
|
|
320
|
+
await this.clearWalletSession();
|
|
321
|
+
|
|
322
|
+
// Disconnect using the multichain client
|
|
323
|
+
await this.multichainClient.disconnect();
|
|
192
324
|
if (options.cleanup) {
|
|
193
325
|
this.status = CONNECTOR_STATUS.NOT_READY;
|
|
194
|
-
this.
|
|
326
|
+
this.initializationPromise = null;
|
|
327
|
+
this.multichainClient = null;
|
|
328
|
+
this.evmClient = null;
|
|
329
|
+
this.evmProvider = null;
|
|
330
|
+
this.solanaClient = null;
|
|
331
|
+
this.solanaProvider = null;
|
|
195
332
|
} else {
|
|
196
|
-
//
|
|
333
|
+
// Ready to be connected again
|
|
197
334
|
this.status = CONNECTOR_STATUS.READY;
|
|
198
335
|
}
|
|
199
|
-
|
|
336
|
+
this.rehydrated = false;
|
|
337
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
|
|
338
|
+
connector: WALLET_CONNECTORS.METAMASK
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
async getAuthTokenInfo() {
|
|
342
|
+
var _this$evmProvider2, _this$coreOptions$cha;
|
|
343
|
+
if (!this.canAuthorize) throw WalletLoginError.notConnectedError();
|
|
344
|
+
|
|
345
|
+
// Determine the active chain: prefer Solana if no EVM provider, otherwise use EVM provider's chain
|
|
346
|
+
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);
|
|
347
|
+
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
348
|
+
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
349
|
+
if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
350
|
+
const {
|
|
351
|
+
chainNamespace
|
|
352
|
+
} = activeChainConfig;
|
|
353
|
+
const accounts = chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
|
|
354
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
355
|
+
}) : [];
|
|
356
|
+
if (accounts && accounts.length > 0) {
|
|
357
|
+
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
358
|
+
if (cached) return cached;
|
|
359
|
+
}
|
|
360
|
+
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
361
|
+
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
362
|
+
connector: WALLET_CONNECTORS.METAMASK
|
|
363
|
+
});
|
|
364
|
+
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
365
|
+
const {
|
|
366
|
+
challenge,
|
|
367
|
+
signature
|
|
368
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
369
|
+
return this.verifyAndAuthorize({
|
|
370
|
+
chainNamespace,
|
|
371
|
+
signedMessage: signature,
|
|
372
|
+
challenge,
|
|
373
|
+
authServer
|
|
374
|
+
});
|
|
200
375
|
}
|
|
201
376
|
async getUserInfo() {
|
|
202
377
|
if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
@@ -204,24 +379,76 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
204
379
|
}
|
|
205
380
|
async switchChain(params, init = false) {
|
|
206
381
|
super.checkSwitchChainRequirements(params, init);
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
382
|
+
const targetChainConfig = this.coreOptions.chains.find(c => c.chainId === params.chainId);
|
|
383
|
+
if ((targetChainConfig === null || targetChainConfig === void 0 ? void 0 : targetChainConfig.chainNamespace) === CHAIN_NAMESPACES.SOLANA) {
|
|
384
|
+
// no need to switch chain for Solana
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
await this.ensureInitialized();
|
|
388
|
+
if (!this.evmClient) {
|
|
389
|
+
throw WalletLoginError.unsupportedOperation("switchChain requires an EVM client, but no EVM chains are configured.");
|
|
390
|
+
}
|
|
391
|
+
const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && [CHAIN_NAMESPACES.EIP155].includes(x.chainNamespace));
|
|
392
|
+
const chainConfiguration = chainConfig ? {
|
|
393
|
+
chainId: params.chainId,
|
|
394
|
+
chainName: chainConfig.displayName,
|
|
395
|
+
rpcUrls: [chainConfig.rpcTarget],
|
|
396
|
+
blockExplorerUrls: chainConfig.blockExplorerUrl ? [chainConfig.blockExplorerUrl] : undefined,
|
|
397
|
+
nativeCurrency: {
|
|
398
|
+
name: chainConfig.tickerName,
|
|
399
|
+
symbol: chainConfig.ticker,
|
|
400
|
+
decimals: chainConfig.decimals || 18
|
|
401
|
+
},
|
|
402
|
+
iconUrls: chainConfig.logo ? [chainConfig.logo] : undefined
|
|
403
|
+
} : undefined;
|
|
404
|
+
await this.evmClient.switchChain({
|
|
405
|
+
chainId: params.chainId,
|
|
406
|
+
chainConfiguration
|
|
212
407
|
});
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
408
|
+
}
|
|
409
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
410
|
+
var _this$evmProvider3, _this$coreOptions$cha2;
|
|
411
|
+
const evmChainId = ((_this$evmProvider3 = this.evmProvider) === null || _this$evmProvider3 === void 0 ? void 0 : _this$evmProvider3.chainId) || ((_this$coreOptions$cha2 = this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
|
|
412
|
+
const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
|
|
413
|
+
const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
|
|
414
|
+
if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
415
|
+
const {
|
|
416
|
+
chainNamespace
|
|
417
|
+
} = activeChainConfig;
|
|
418
|
+
const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
|
|
419
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
420
|
+
}) : []);
|
|
421
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
422
|
+
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
224
423
|
}
|
|
424
|
+
const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
425
|
+
const payload = {
|
|
426
|
+
domain: window.location.origin,
|
|
427
|
+
uri: window.location.href,
|
|
428
|
+
address: accountsToUse[0],
|
|
429
|
+
chainId: parseInt(activeChainConfig.chainId, 16),
|
|
430
|
+
version: "1",
|
|
431
|
+
nonce: generateSiweNonce(),
|
|
432
|
+
issuedAt: new Date().toISOString()
|
|
433
|
+
};
|
|
434
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
435
|
+
let signedMessage;
|
|
436
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
|
|
437
|
+
signedMessage = await walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
|
|
438
|
+
} else if (this.evmProvider) {
|
|
439
|
+
const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
|
|
440
|
+
signedMessage = await this.evmProvider.request({
|
|
441
|
+
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
442
|
+
params: [hexChallenge, accountsToUse[0]]
|
|
443
|
+
});
|
|
444
|
+
} else {
|
|
445
|
+
throw WalletLoginError.notConnectedError("No provider available for signing");
|
|
446
|
+
}
|
|
447
|
+
return {
|
|
448
|
+
challenge,
|
|
449
|
+
signature: signedMessage,
|
|
450
|
+
chainNamespace
|
|
451
|
+
};
|
|
225
452
|
}
|
|
226
453
|
async enableMFA() {
|
|
227
454
|
throw new Error("Method Not implemented");
|
|
@@ -229,25 +456,32 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
229
456
|
async manageMFA() {
|
|
230
457
|
throw new Error("Method Not implemented");
|
|
231
458
|
}
|
|
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
|
-
});
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* Ensures the connector is initialized
|
|
462
|
+
*/
|
|
463
|
+
async ensureInitialized() {
|
|
464
|
+
if (!this.initializationPromise) {
|
|
465
|
+
throw WalletLoginError.notConnectedError("Connector is not initialized. Call init() first.");
|
|
466
|
+
}
|
|
467
|
+
await this.initializationPromise;
|
|
249
468
|
}
|
|
250
469
|
}
|
|
470
|
+
|
|
471
|
+
/**
|
|
472
|
+
* Factory function to create a MetaMask connector
|
|
473
|
+
*
|
|
474
|
+
* @param params - Configuration options for the MetaMask SDK
|
|
475
|
+
* @returns A connector function that creates a MetaMaskConnector instance
|
|
476
|
+
*
|
|
477
|
+
* @example
|
|
478
|
+
* ```typescript
|
|
479
|
+
* const connector = metaMaskConnector({
|
|
480
|
+
* dapp: { name: 'My DApp', url: 'https://mydapp.com' },
|
|
481
|
+
* debug: true,
|
|
482
|
+
* });
|
|
483
|
+
* ```
|
|
484
|
+
*/
|
|
251
485
|
const metaMaskConnector = params => {
|
|
252
486
|
return ({
|
|
253
487
|
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 };
|