@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
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import { getBase64EncodedWireTransaction, getBase64Decoder, getBase58Encoder, getTransactionDecoder, getBase64Encoder } from '@solana/kit';
|
|
4
|
+
import { SolanaSignTransaction, SolanaSignMessage, SolanaSignAndSendTransaction } from '@solana/wallet-standard-features';
|
|
5
|
+
import { StandardEvents, StandardDisconnect, StandardConnect } from '@wallet-standard/features';
|
|
6
|
+
import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
7
|
+
import { WEB3AUTH_ICON } from '../../base/wallet/index.js';
|
|
8
|
+
import { WalletLoginError } from '../../base/errors/index.js';
|
|
9
|
+
import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
|
|
10
|
+
import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
|
|
11
|
+
|
|
12
|
+
const base58Encoder = getBase58Encoder();
|
|
13
|
+
const base64Decoder = getBase64Decoder();
|
|
14
|
+
const base64Encoder = getBase64Encoder();
|
|
15
|
+
const transactionDecoder = getTransactionDecoder();
|
|
16
|
+
const ACCOUNT_FEATURES = [SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction];
|
|
17
|
+
function solanaWalletChainsFromConfigs(solanaChainConfigs) {
|
|
18
|
+
const ids = solanaChainConfigs.map(getSolanaChainByChainConfig).filter(id => id != null);
|
|
19
|
+
const unique = [...new Set(ids)];
|
|
20
|
+
return unique;
|
|
21
|
+
}
|
|
22
|
+
const SOLANA_PROVIDER_HEX_CHAIN_IDS = new Set(Object.keys(SOLANA_CAIP_CHAIN_MAP).map(id => id.toLowerCase()));
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* AuthSolanaWallet implements the Wallet Standard interface, wrapping a JRPC provider.
|
|
26
|
+
* Used by AuthConnector so consumers get a standards-compliant Wallet from `connection.solanaWallet`.
|
|
27
|
+
*
|
|
28
|
+
* {@link Wallet.accounts} is synchronous in the Wallet Standard; it returns `[]` until accounts have been loaded
|
|
29
|
+
* (`null` internally). The first async operation ({@link StandardConnect}, sign, etc.) calls `ensureAccountsLoaded`, which
|
|
30
|
+
* requires {@link IProvider.chainId} to be a configured Solana network (see {@link SOLANA_CAIP_CHAIN_MAP}) before {@link SOLANA_METHOD_TYPES.GET_ACCOUNTS}.
|
|
31
|
+
*/
|
|
32
|
+
class AuthSolanaWallet {
|
|
33
|
+
/**
|
|
34
|
+
* @param solanaChainConfigs - All configured Solana {@link CustomChainConfig} entries (same namespace).
|
|
35
|
+
*/
|
|
36
|
+
constructor(_provider, solanaChainConfigs) {
|
|
37
|
+
this._provider = _provider;
|
|
38
|
+
_defineProperty(this, "version", "1.0.0");
|
|
39
|
+
_defineProperty(this, "name", "Web3Auth");
|
|
40
|
+
_defineProperty(this, "icon", WEB3AUTH_ICON);
|
|
41
|
+
_defineProperty(this, "chains", void 0);
|
|
42
|
+
_defineProperty(this, "features", void 0);
|
|
43
|
+
_defineProperty(this, "_accounts", null);
|
|
44
|
+
_defineProperty(this, "_listeners", {});
|
|
45
|
+
this.chains = solanaWalletChainsFromConfigs(solanaChainConfigs);
|
|
46
|
+
this.features = {
|
|
47
|
+
[StandardConnect]: {
|
|
48
|
+
version: "1.0.0",
|
|
49
|
+
connect: async () => {
|
|
50
|
+
await this.ensureAccountsLoaded();
|
|
51
|
+
return {
|
|
52
|
+
accounts: this.accounts
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
[StandardDisconnect]: {
|
|
57
|
+
version: "1.0.0",
|
|
58
|
+
disconnect: async () => {}
|
|
59
|
+
},
|
|
60
|
+
[StandardEvents]: {
|
|
61
|
+
version: "1.0.0",
|
|
62
|
+
on: (event, listener) => {
|
|
63
|
+
var _this$_listeners, _this$_listeners$even;
|
|
64
|
+
((_this$_listeners$even = (_this$_listeners = this._listeners)[event]) !== null && _this$_listeners$even !== void 0 ? _this$_listeners$even : _this$_listeners[event] = new Set()).add(listener);
|
|
65
|
+
return () => this._listeners[event].delete(listener);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
[SolanaSignAndSendTransaction]: {
|
|
69
|
+
version: "1.0.0",
|
|
70
|
+
supportedTransactionVersions: ["legacy", 0],
|
|
71
|
+
signAndSendTransaction: async (...inputs) => {
|
|
72
|
+
await this.ensureAccountsLoaded();
|
|
73
|
+
return Promise.all(inputs.map(async input => {
|
|
74
|
+
const base64Tx = base64Decoder.decode(input.transaction);
|
|
75
|
+
const signature = await this._provider.request({
|
|
76
|
+
method: SOLANA_METHOD_TYPES.SEND_TRANSACTION,
|
|
77
|
+
params: {
|
|
78
|
+
message: base64Tx
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
signature: new Uint8Array(base58Encoder.encode(signature))
|
|
83
|
+
};
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
[SolanaSignMessage]: {
|
|
88
|
+
version: "1.0.0",
|
|
89
|
+
signMessage: async (...inputs) => {
|
|
90
|
+
await this.ensureAccountsLoaded();
|
|
91
|
+
return Promise.all(inputs.map(async input => {
|
|
92
|
+
const message = new TextDecoder().decode(input.message);
|
|
93
|
+
const signature = await this._provider.request({
|
|
94
|
+
method: SOLANA_METHOD_TYPES.SIGN_MESSAGE,
|
|
95
|
+
params: {
|
|
96
|
+
data: message,
|
|
97
|
+
from: input.account.address
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return {
|
|
101
|
+
signedMessage: new Uint8Array(input.message),
|
|
102
|
+
signature: new Uint8Array(base58Encoder.encode(signature))
|
|
103
|
+
};
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
[SolanaSignTransaction]: {
|
|
108
|
+
version: "1.0.0",
|
|
109
|
+
supportedTransactionVersions: ["legacy", 0],
|
|
110
|
+
signTransaction: async (...inputs) => {
|
|
111
|
+
await this.ensureAccountsLoaded();
|
|
112
|
+
return Promise.all(inputs.map(async input => {
|
|
113
|
+
const base64Tx = base64Decoder.decode(input.transaction);
|
|
114
|
+
const signatureBase58 = await this._provider.request({
|
|
115
|
+
method: SOLANA_METHOD_TYPES.SIGN_TRANSACTION,
|
|
116
|
+
params: {
|
|
117
|
+
message: base64Tx
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
const sigBytes = new Uint8Array(base58Encoder.encode(signatureBase58));
|
|
121
|
+
const decodedTx = transactionDecoder.decode(input.transaction);
|
|
122
|
+
const signedTx = _objectSpread(_objectSpread({}, decodedTx), {}, {
|
|
123
|
+
signatures: _objectSpread(_objectSpread({}, decodedTx.signatures), {}, {
|
|
124
|
+
[input.account.address]: sigBytes
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
const signedBase64 = getBase64EncodedWireTransaction(signedTx);
|
|
128
|
+
return {
|
|
129
|
+
signedTransaction: new Uint8Array(base64Encoder.encode(signedBase64))
|
|
130
|
+
};
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Wallet Standard requires a synchronous getter; RPC runs on first async wallet operation instead.
|
|
139
|
+
*/
|
|
140
|
+
get accounts() {
|
|
141
|
+
var _this$_accounts;
|
|
142
|
+
return (_this$_accounts = this._accounts) !== null && _this$_accounts !== void 0 ? _this$_accounts : [];
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Throws if the embed is not on Solana; otherwise loads accounts once via {@link SOLANA_METHOD_TYPES.GET_ACCOUNTS}. */
|
|
146
|
+
async ensureAccountsLoaded() {
|
|
147
|
+
var _await$this$_provider;
|
|
148
|
+
// assert solana chain
|
|
149
|
+
const chainId = this._provider.chainId;
|
|
150
|
+
if (!SOLANA_PROVIDER_HEX_CHAIN_IDS.has(chainId.toLowerCase())) throw WalletLoginError.unsupportedOperation(`Solana wallet operations require the embedded provider to be on a Solana network (current chainId: ${chainId}). Switch chain first.`);
|
|
151
|
+
if (this._accounts !== null) return;
|
|
152
|
+
const addresses = (_await$this$_provider = await this._provider.request({
|
|
153
|
+
method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
|
|
154
|
+
})) !== null && _await$this$_provider !== void 0 ? _await$this$_provider : [];
|
|
155
|
+
const accountChains = this.chains;
|
|
156
|
+
this._accounts = addresses.map(address => ({
|
|
157
|
+
address,
|
|
158
|
+
publicKey: new Uint8Array(base58Encoder.encode(address)),
|
|
159
|
+
chains: accountChains.length ? accountChains : [],
|
|
160
|
+
features: ACCOUNT_FEATURES
|
|
161
|
+
}));
|
|
162
|
+
this.emitChange({
|
|
163
|
+
accounts: this.accounts
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
emitChange(properties) {
|
|
167
|
+
const listeners = this._listeners.change;
|
|
168
|
+
if (!listeners) return;
|
|
169
|
+
listeners.forEach(listener => {
|
|
170
|
+
listener(properties);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { AuthSolanaWallet };
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { signChallenge
|
|
1
|
+
import { signChallenge } from '@toruslabs/base-controllers';
|
|
2
|
+
import { bytesToHexPrefixedString, utf8ToBytes } from '@toruslabs/metadata-helpers';
|
|
2
3
|
import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
3
|
-
import {
|
|
4
|
-
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
4
|
+
import { generateSiweNonce } from 'viem/siwe';
|
|
5
5
|
import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
|
|
6
|
+
import { citadelServerUrl } from '../../base/utils.js';
|
|
7
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
6
8
|
import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
7
9
|
|
|
8
10
|
class BaseEvmConnector extends BaseConnector {
|
|
9
11
|
async init(_) {}
|
|
10
|
-
async
|
|
12
|
+
async getAuthTokenInfo() {
|
|
11
13
|
if (!this.provider || !this.canAuthorize) throw WalletLoginError.notConnectedError();
|
|
12
14
|
if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with valid options");
|
|
13
15
|
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
@@ -18,68 +20,63 @@ class BaseEvmConnector extends BaseConnector {
|
|
|
18
20
|
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
19
21
|
});
|
|
20
22
|
if (accounts && accounts.length > 0) {
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
|
|
24
|
-
if (!isExpired) {
|
|
25
|
-
this.status = CONNECTOR_STATUS.AUTHORIZED;
|
|
26
|
-
this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
|
|
27
|
-
connector: this.name,
|
|
28
|
-
identityTokenInfo: {
|
|
29
|
-
idToken: existingToken
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return {
|
|
33
|
-
idToken: existingToken
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const chainId = await this.provider.request({
|
|
38
|
-
method: "eth_chainId"
|
|
39
|
-
});
|
|
40
|
-
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
41
|
-
if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
23
|
+
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
24
|
+
if (cached) return cached;
|
|
25
|
+
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
42
26
|
const {
|
|
27
|
+
challenge,
|
|
28
|
+
signature,
|
|
43
29
|
chainNamespace
|
|
44
|
-
} =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
version: "1",
|
|
51
|
-
nonce: Math.random().toString(36).slice(2),
|
|
52
|
-
issuedAt: new Date().toISOString()
|
|
53
|
-
};
|
|
54
|
-
const challenge = await signChallenge(payload, chainNamespace);
|
|
55
|
-
const hexChallenge = `0x${Buffer.from(challenge, "utf8").toString("hex")}`;
|
|
56
|
-
const signedMessage = await this.provider.request({
|
|
57
|
-
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
58
|
-
params: [hexChallenge, accounts[0]]
|
|
59
|
-
});
|
|
60
|
-
const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
|
|
61
|
-
saveToken(accounts[0], this.name, idToken);
|
|
62
|
-
this.status = CONNECTOR_STATUS.AUTHORIZED;
|
|
63
|
-
this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
|
|
64
|
-
connector: this.name,
|
|
65
|
-
identityTokenInfo: {
|
|
66
|
-
idToken
|
|
67
|
-
}
|
|
30
|
+
} = await this.generateChallengeAndSign(authServer, accounts);
|
|
31
|
+
return this.verifyAndAuthorize({
|
|
32
|
+
chainNamespace,
|
|
33
|
+
signedMessage: signature,
|
|
34
|
+
challenge,
|
|
35
|
+
authServer
|
|
68
36
|
});
|
|
69
|
-
return {
|
|
70
|
-
idToken
|
|
71
|
-
};
|
|
72
37
|
}
|
|
73
38
|
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
74
39
|
}
|
|
40
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
41
|
+
const accountsToUse = accounts || (await this.provider.request({
|
|
42
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
43
|
+
}));
|
|
44
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
45
|
+
throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
46
|
+
}
|
|
47
|
+
const chainId = await this.provider.request({
|
|
48
|
+
method: "eth_chainId"
|
|
49
|
+
});
|
|
50
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
51
|
+
if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
52
|
+
const {
|
|
53
|
+
chainNamespace
|
|
54
|
+
} = currentChainConfig;
|
|
55
|
+
const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
56
|
+
const payload = {
|
|
57
|
+
domain: window.location.origin,
|
|
58
|
+
uri: window.location.href,
|
|
59
|
+
address: accountsToUse[0],
|
|
60
|
+
chainId: parseInt(chainId, 16),
|
|
61
|
+
version: "1",
|
|
62
|
+
nonce: generateSiweNonce(),
|
|
63
|
+
issuedAt: new Date().toISOString()
|
|
64
|
+
};
|
|
65
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
66
|
+
const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
|
|
67
|
+
const signature = await this.provider.request({
|
|
68
|
+
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
69
|
+
params: [hexChallenge, accountsToUse[0]]
|
|
70
|
+
});
|
|
71
|
+
return {
|
|
72
|
+
challenge,
|
|
73
|
+
signature,
|
|
74
|
+
chainNamespace
|
|
75
|
+
};
|
|
76
|
+
}
|
|
75
77
|
async disconnectSession() {
|
|
76
78
|
super.checkDisconnectionRequirements();
|
|
77
|
-
|
|
78
|
-
method: "eth_accounts"
|
|
79
|
-
});
|
|
80
|
-
if (accounts && accounts.length > 0) {
|
|
81
|
-
clearToken(accounts[0], this.name);
|
|
82
|
-
}
|
|
79
|
+
await this.clearWalletSession();
|
|
83
80
|
}
|
|
84
81
|
async disconnect() {
|
|
85
82
|
this.rehydrated = false;
|
|
@@ -1,87 +1,78 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
1
|
+
import { CHAIN_NAMESPACES, signChallenge } from '@toruslabs/base-controllers';
|
|
2
|
+
import { generateSiweNonce } from 'viem/siwe';
|
|
4
3
|
import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
|
|
4
|
+
import { citadelServerUrl } from '../../base/utils.js';
|
|
5
|
+
import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
|
|
6
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
5
7
|
import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
6
|
-
import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/connector/utils.js';
|
|
7
8
|
|
|
8
9
|
class BaseSolanaConnector extends BaseConnector {
|
|
9
10
|
async init(_) {}
|
|
10
|
-
async
|
|
11
|
-
if (!this.
|
|
11
|
+
async getAuthTokenInfo() {
|
|
12
|
+
if (!this.solanaWallet || !this.canAuthorize) throw WalletLoginError.notConnectedError();
|
|
12
13
|
if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with a valid options");
|
|
13
14
|
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
14
15
|
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
15
16
|
connector: this.name
|
|
16
17
|
});
|
|
17
|
-
const accounts =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
if (existingToken) {
|
|
23
|
-
const isExpired = checkIfTokenIsExpired(existingToken);
|
|
24
|
-
if (!isExpired) {
|
|
25
|
-
this.status = CONNECTOR_STATUS.AUTHORIZED;
|
|
26
|
-
this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
|
|
27
|
-
connector: this.name,
|
|
28
|
-
identityTokenInfo: {
|
|
29
|
-
idToken: existingToken
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
return {
|
|
33
|
-
idToken: existingToken
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
const chainId = await this.provider.request({
|
|
38
|
-
method: "solana_chainId"
|
|
39
|
-
});
|
|
40
|
-
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
41
|
-
if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
18
|
+
const accounts = this.solanaWallet.accounts.map(a => a.address);
|
|
19
|
+
if (accounts.length > 0) {
|
|
20
|
+
const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
|
|
21
|
+
if (cached) return cached;
|
|
22
|
+
const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
42
23
|
const {
|
|
24
|
+
challenge,
|
|
25
|
+
signature,
|
|
43
26
|
chainNamespace
|
|
44
|
-
} =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
version: "1",
|
|
51
|
-
nonce: Math.random().toString(36).slice(2),
|
|
52
|
-
issuedAt: new Date().toISOString()
|
|
53
|
-
};
|
|
54
|
-
const challenge = await signChallenge(payload, chainNamespace);
|
|
55
|
-
const signedMessage = await this.provider.request({
|
|
56
|
-
method: SOLANA_METHOD_TYPES.SIGN_MESSAGE,
|
|
57
|
-
params: {
|
|
58
|
-
data: challenge,
|
|
59
|
-
display: "utf8"
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
|
|
63
|
-
saveToken(accounts[0], this.name, idToken);
|
|
64
|
-
this.status = CONNECTOR_STATUS.AUTHORIZED;
|
|
65
|
-
this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
|
|
66
|
-
connector: this.name,
|
|
67
|
-
identityTokenInfo: {
|
|
68
|
-
idToken
|
|
69
|
-
}
|
|
27
|
+
} = await this.generateChallengeAndSign(authServer);
|
|
28
|
+
return this.verifyAndAuthorize({
|
|
29
|
+
chainNamespace,
|
|
30
|
+
signedMessage: signature,
|
|
31
|
+
challenge,
|
|
32
|
+
authServer
|
|
70
33
|
});
|
|
71
|
-
return {
|
|
72
|
-
idToken
|
|
73
|
-
};
|
|
74
34
|
}
|
|
75
35
|
throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
76
36
|
}
|
|
77
|
-
async
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
37
|
+
async generateChallengeAndSign(authServerUrl, accounts) {
|
|
38
|
+
const accountsToUse = accounts || this.solanaWallet.accounts.map(a => a.address);
|
|
39
|
+
if (!accountsToUse || accountsToUse.length === 0) {
|
|
40
|
+
throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
|
|
41
|
+
}
|
|
42
|
+
const walletChains = new Set(this.solanaWallet.chains);
|
|
43
|
+
const currentChainConfig = this.coreOptions.chains.find(c => {
|
|
44
|
+
if (c.chainNamespace !== CHAIN_NAMESPACES.SOLANA) return false;
|
|
45
|
+
const id = getSolanaChainByChainConfig(c);
|
|
46
|
+
return id != null && walletChains.has(id);
|
|
81
47
|
});
|
|
82
|
-
if (
|
|
83
|
-
|
|
48
|
+
if (!currentChainConfig) {
|
|
49
|
+
throw WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
|
|
84
50
|
}
|
|
51
|
+
const {
|
|
52
|
+
chainId,
|
|
53
|
+
chainNamespace
|
|
54
|
+
} = currentChainConfig;
|
|
55
|
+
const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
56
|
+
const payload = {
|
|
57
|
+
domain: window.location.origin,
|
|
58
|
+
uri: window.location.href,
|
|
59
|
+
address: accountsToUse[0],
|
|
60
|
+
chainId: parseInt(chainId, 16),
|
|
61
|
+
version: "1",
|
|
62
|
+
nonce: generateSiweNonce(),
|
|
63
|
+
issuedAt: new Date().toISOString()
|
|
64
|
+
};
|
|
65
|
+
const challenge = await signChallenge(payload, chainNamespace, authServer);
|
|
66
|
+
const signedMessage = await walletSignMessage(this.solanaWallet, challenge, accountsToUse[0]);
|
|
67
|
+
return {
|
|
68
|
+
challenge,
|
|
69
|
+
signature: signedMessage,
|
|
70
|
+
chainNamespace
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async disconnectSession() {
|
|
74
|
+
super.checkDisconnectionRequirements();
|
|
75
|
+
await this.clearWalletSession();
|
|
85
76
|
}
|
|
86
77
|
async disconnect() {
|
|
87
78
|
this.rehydrated = false;
|
|
@@ -2,10 +2,10 @@ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
3
|
import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
|
|
4
4
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
5
|
-
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
6
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
7
5
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
8
6
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
7
|
+
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
8
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
9
9
|
|
|
10
10
|
class CoinbaseConnector extends BaseEvmConnector {
|
|
11
11
|
constructor(connectorOptions) {
|
|
@@ -53,12 +53,12 @@ class CoinbaseConnector extends BaseEvmConnector {
|
|
|
53
53
|
try {
|
|
54
54
|
if (options.autoConnect) {
|
|
55
55
|
this.rehydrated = true;
|
|
56
|
-
const
|
|
56
|
+
const connection = await this.connect({
|
|
57
57
|
chainId: options.chainId,
|
|
58
|
-
|
|
58
|
+
getAuthTokenInfo: options.getAuthTokenInfo
|
|
59
59
|
});
|
|
60
60
|
// the connect function could fail silently as well.
|
|
61
|
-
if (!
|
|
61
|
+
if (!connection) {
|
|
62
62
|
this.rehydrated = false;
|
|
63
63
|
throw WalletLoginError.connectionError("Failed to rehydrate.");
|
|
64
64
|
}
|
|
@@ -69,7 +69,7 @@ class CoinbaseConnector extends BaseEvmConnector {
|
|
|
69
69
|
}
|
|
70
70
|
async connect({
|
|
71
71
|
chainId,
|
|
72
|
-
|
|
72
|
+
getAuthTokenInfo
|
|
73
73
|
}) {
|
|
74
74
|
super.checkConnectionRequirements();
|
|
75
75
|
if (!this.coinbaseProvider) throw WalletLoginError.notConnectedError("Connector is not initialized");
|
|
@@ -95,17 +95,20 @@ class CoinbaseConnector extends BaseEvmConnector {
|
|
|
95
95
|
// ready to be connected again
|
|
96
96
|
this.disconnect();
|
|
97
97
|
});
|
|
98
|
-
let identityTokenInfo;
|
|
99
98
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
100
|
-
|
|
99
|
+
connectorName: WALLET_CONNECTORS.COINBASE,
|
|
101
100
|
reconnected: this.rehydrated,
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
ethereumProvider: this.provider,
|
|
102
|
+
solanaWallet: null
|
|
104
103
|
});
|
|
105
|
-
if (
|
|
106
|
-
|
|
104
|
+
if (getAuthTokenInfo) {
|
|
105
|
+
await this.getAuthTokenInfo();
|
|
107
106
|
}
|
|
108
|
-
return
|
|
107
|
+
return {
|
|
108
|
+
ethereumProvider: this.provider,
|
|
109
|
+
solanaWallet: null,
|
|
110
|
+
connectorName: this.name
|
|
111
|
+
};
|
|
109
112
|
} catch (error) {
|
|
110
113
|
// ready again to be connected
|
|
111
114
|
this.status = CONNECTOR_STATUS.READY;
|
|
@@ -2,10 +2,10 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
|
2
2
|
import { normalizeWalletName } from '../../base/utils.js';
|
|
3
3
|
import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
|
|
4
4
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
5
|
-
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
6
|
-
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
7
5
|
import { log } from '../../base/loglevel.js';
|
|
8
6
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
7
|
+
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
8
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
9
9
|
|
|
10
10
|
class InjectedEvmConnector extends BaseEvmConnector {
|
|
11
11
|
constructor(options) {
|
|
@@ -42,11 +42,11 @@ class InjectedEvmConnector extends BaseEvmConnector {
|
|
|
42
42
|
log.debug(`initializing ${this.name} injected connector`);
|
|
43
43
|
if (options.autoConnect) {
|
|
44
44
|
this.rehydrated = true;
|
|
45
|
-
const
|
|
45
|
+
const connection = await this.connect({
|
|
46
46
|
chainId: options.chainId,
|
|
47
|
-
|
|
47
|
+
getAuthTokenInfo: options.getAuthTokenInfo
|
|
48
48
|
});
|
|
49
|
-
if (!
|
|
49
|
+
if (!connection) {
|
|
50
50
|
this.rehydrated = false;
|
|
51
51
|
throw WalletLoginError.connectionError("Failed to rehydrate.");
|
|
52
52
|
}
|
|
@@ -57,7 +57,7 @@ class InjectedEvmConnector extends BaseEvmConnector {
|
|
|
57
57
|
}
|
|
58
58
|
async connect({
|
|
59
59
|
chainId,
|
|
60
|
-
|
|
60
|
+
getAuthTokenInfo
|
|
61
61
|
}) {
|
|
62
62
|
super.checkConnectionRequirements();
|
|
63
63
|
if (!this.injectedProvider) throw WalletLoginError.connectionError("Injected provider is not available");
|
|
@@ -89,17 +89,20 @@ class InjectedEvmConnector extends BaseEvmConnector {
|
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
91
|
this.injectedProvider.on("accountsChanged", accountDisconnectHandler);
|
|
92
|
-
let identityTokenInfo;
|
|
93
92
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
94
|
-
|
|
93
|
+
connectorName: this.name,
|
|
95
94
|
reconnected: this.rehydrated,
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
ethereumProvider: this.injectedProvider,
|
|
96
|
+
solanaWallet: null
|
|
98
97
|
});
|
|
99
|
-
if (
|
|
100
|
-
|
|
98
|
+
if (getAuthTokenInfo) {
|
|
99
|
+
await this.getAuthTokenInfo();
|
|
101
100
|
}
|
|
102
|
-
return
|
|
101
|
+
return {
|
|
102
|
+
ethereumProvider: this.injectedProvider,
|
|
103
|
+
solanaWallet: null,
|
|
104
|
+
connectorName: this.name
|
|
105
|
+
};
|
|
103
106
|
} catch (error) {
|
|
104
107
|
// ready again to be connected
|
|
105
108
|
this.status = CONNECTOR_STATUS.READY;
|