@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
|
@@ -2,30 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
|
4
4
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
5
|
+
var constants$1 = require('@toruslabs/constants');
|
|
6
|
+
var httpHelpers = require('@toruslabs/http-helpers');
|
|
5
7
|
var securePubSub = require('@toruslabs/secure-pub-sub');
|
|
6
8
|
var auth = require('@web3auth/auth');
|
|
7
9
|
var wsEmbed = require('@web3auth/ws-embed');
|
|
8
10
|
var deepmerge = require('deepmerge');
|
|
9
|
-
require('
|
|
10
|
-
var
|
|
11
|
+
var rest = require('../../account-linking/rest.js');
|
|
12
|
+
var analytics = require('../../base/analytics.js');
|
|
11
13
|
var IChainInterface = require('../../base/chain/IChainInterface.js');
|
|
12
14
|
var baseConnector = require('../../base/connector/baseConnector.js');
|
|
13
15
|
var connectorStatus = require('../../base/connector/connectorStatus.js');
|
|
14
16
|
var constants = require('../../base/connector/constants.js');
|
|
15
17
|
require('jwt-decode');
|
|
16
|
-
|
|
18
|
+
require('../../base/constants.js');
|
|
19
|
+
var index = require('../../base/errors/index.js');
|
|
20
|
+
var loglevel = require('../../base/loglevel.js');
|
|
17
21
|
require('../../base/plugin/errors.js');
|
|
18
22
|
require('../../base/plugin/IPlugin.js');
|
|
23
|
+
var utils = require('../../base/utils.js');
|
|
24
|
+
var index$1 = require('../../base/wallet/index.js');
|
|
25
|
+
var utils$1 = require('../utils.js');
|
|
26
|
+
var authSolanaWallet = require('./authSolanaWallet.js');
|
|
19
27
|
var baseControllers = require('@toruslabs/base-controllers');
|
|
20
|
-
require('@toruslabs/constants');
|
|
21
|
-
require('@toruslabs/http-helpers');
|
|
22
|
-
var index = require('../../base/wallet/index.js');
|
|
23
|
-
var utils = require('../utils.js');
|
|
24
28
|
|
|
25
29
|
class AuthConnector extends baseConnector.BaseConnector {
|
|
26
30
|
constructor(params) {
|
|
27
31
|
super(params);
|
|
28
|
-
_defineProperty(this, "name", index.WALLET_CONNECTORS.AUTH);
|
|
32
|
+
_defineProperty(this, "name", index$1.WALLET_CONNECTORS.AUTH);
|
|
29
33
|
_defineProperty(this, "connectorNamespace", IChainInterface.CONNECTOR_NAMESPACES.MULTICHAIN);
|
|
30
34
|
_defineProperty(this, "type", constants.CONNECTOR_CATEGORY.IN_APP);
|
|
31
35
|
_defineProperty(this, "authInstance", null);
|
|
@@ -39,6 +43,8 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
39
43
|
_defineProperty(this, "wsEmbedInstance", null);
|
|
40
44
|
_defineProperty(this, "authConnectionConfig", []);
|
|
41
45
|
_defineProperty(this, "wsEmbedInstancePromise", null);
|
|
46
|
+
_defineProperty(this, "_solanaWallet", null);
|
|
47
|
+
_defineProperty(this, "analytics", void 0);
|
|
42
48
|
this.authOptions = params.connectorSettings;
|
|
43
49
|
this.loginSettings = params.loginSettings || {
|
|
44
50
|
authConnection: ""
|
|
@@ -47,6 +53,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
47
53
|
loginMode: wsEmbed.WS_EMBED_LOGIN_MODE.PLUGIN
|
|
48
54
|
};
|
|
49
55
|
this.authConnectionConfig = params.authConnectionConfig || [];
|
|
56
|
+
this.analytics = params.analytics || new analytics.Analytics();
|
|
50
57
|
}
|
|
51
58
|
get provider() {
|
|
52
59
|
if (this.status !== constants.CONNECTOR_STATUS.NOT_READY) {
|
|
@@ -60,6 +67,9 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
60
67
|
get wsEmbed() {
|
|
61
68
|
return this.wsEmbedInstance;
|
|
62
69
|
}
|
|
70
|
+
get solanaWallet() {
|
|
71
|
+
return this._solanaWallet;
|
|
72
|
+
}
|
|
63
73
|
set provider(_) {
|
|
64
74
|
throw new Error("Not implemented");
|
|
65
75
|
}
|
|
@@ -74,9 +84,9 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
74
84
|
super.checkInitializationRequirements({
|
|
75
85
|
chainConfig
|
|
76
86
|
});
|
|
77
|
-
if (!this.coreOptions.clientId) throw index
|
|
78
|
-
if (!this.authOptions) throw index
|
|
79
|
-
if (this.authConnectionConfig.length === 0) throw index
|
|
87
|
+
if (!this.coreOptions.clientId) throw index.WalletInitializationError.invalidParams("clientId is required before auth's initialization");
|
|
88
|
+
if (!this.authOptions) throw index.WalletInitializationError.invalidParams("authOptions is required before auth's initialization");
|
|
89
|
+
if (this.authConnectionConfig.length === 0) throw index.WalletInitializationError.invalidParams("authConnectionConfig is required before auth's initialization");
|
|
80
90
|
const isRedirectResult = this.authOptions.uxMode === auth.UX_MODE.REDIRECT;
|
|
81
91
|
this.authOptions = _objectSpread(_objectSpread({}, this.authOptions), {}, {
|
|
82
92
|
replaceUrlOnRedirect: isRedirectResult,
|
|
@@ -92,7 +102,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
92
102
|
loglevel.log.debug("initializing auth connector init", this.authOptions);
|
|
93
103
|
// making it async here to initialize provider.
|
|
94
104
|
const authInstancePromise = this.authInstance.init();
|
|
95
|
-
// Use this for xrpl
|
|
105
|
+
// Use this for xrpl cases
|
|
96
106
|
if (this.coreOptions.privateKeyProvider) {
|
|
97
107
|
this.privateKeyProvider = this.coreOptions.privateKeyProvider;
|
|
98
108
|
} else {
|
|
@@ -114,6 +124,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
114
124
|
loginMode: wsEmbed.WS_EMBED_LOGIN_MODE.PLUGIN,
|
|
115
125
|
chains: wsSupportedChains,
|
|
116
126
|
chainId,
|
|
127
|
+
buildEnv: this.authOptions.buildEnv,
|
|
117
128
|
whiteLabel: _objectSpread(_objectSpread({}, this.authOptions.whiteLabel), this.wsSettings.whiteLabel)
|
|
118
129
|
})).then(() => {
|
|
119
130
|
this.wsEmbedInstancePromise = null;
|
|
@@ -122,7 +133,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
122
133
|
break;
|
|
123
134
|
}
|
|
124
135
|
case baseControllers.CHAIN_NAMESPACES.XRPL:
|
|
125
|
-
throw index
|
|
136
|
+
throw index.WalletLoginError.connectionError("Private key provider is required for XRPL");
|
|
126
137
|
default:
|
|
127
138
|
{
|
|
128
139
|
const {
|
|
@@ -141,7 +152,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
141
152
|
loglevel.log.debug("initializing auth connector");
|
|
142
153
|
await authInstancePromise;
|
|
143
154
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
144
|
-
this.emit(constants.CONNECTOR_EVENTS.READY, index.WALLET_CONNECTORS.AUTH);
|
|
155
|
+
this.emit(constants.CONNECTOR_EVENTS.READY, index$1.WALLET_CONNECTORS.AUTH);
|
|
145
156
|
try {
|
|
146
157
|
const {
|
|
147
158
|
sessionId
|
|
@@ -151,13 +162,13 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
151
162
|
this.rehydrated = true;
|
|
152
163
|
await this.connect({
|
|
153
164
|
chainId: options.chainId,
|
|
154
|
-
|
|
165
|
+
getAuthTokenInfo: options.getAuthTokenInfo
|
|
155
166
|
});
|
|
156
167
|
} else if (!sessionId && options.autoConnect) {
|
|
157
168
|
// if here, this means that the connector is cached but the sessionId is not available.
|
|
158
169
|
// this can happen if the sessionId has expired.
|
|
159
170
|
// we are throwing an error to reset the cached state.
|
|
160
|
-
throw index
|
|
171
|
+
throw index.WalletLoginError.connectionError("Failed to rehydrate");
|
|
161
172
|
}
|
|
162
173
|
} catch (error) {
|
|
163
174
|
this.emit(constants.CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
|
|
@@ -167,11 +178,15 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
167
178
|
super.checkConnectionRequirements();
|
|
168
179
|
this.status = constants.CONNECTOR_STATUS.CONNECTING;
|
|
169
180
|
this.emit(constants.CONNECTOR_EVENTS.CONNECTING, _objectSpread(_objectSpread({}, params), {}, {
|
|
170
|
-
connector: index.WALLET_CONNECTORS.AUTH
|
|
181
|
+
connector: index$1.WALLET_CONNECTORS.AUTH
|
|
171
182
|
}));
|
|
172
183
|
try {
|
|
173
184
|
await this.connectWithProvider(params);
|
|
174
|
-
return
|
|
185
|
+
return {
|
|
186
|
+
ethereumProvider: this.provider,
|
|
187
|
+
solanaWallet: this._solanaWallet,
|
|
188
|
+
connectorName: this.name
|
|
189
|
+
};
|
|
175
190
|
} catch (error) {
|
|
176
191
|
var _error$message;
|
|
177
192
|
loglevel.log.error("Failed to connect with auth provider", error);
|
|
@@ -179,50 +194,50 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
179
194
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
180
195
|
this.emit(constants.CONNECTOR_EVENTS.ERRORED, error);
|
|
181
196
|
if (error !== null && error !== void 0 && (_error$message = error.message) !== null && _error$message !== void 0 && _error$message.includes("user closed popup")) {
|
|
182
|
-
throw index
|
|
183
|
-
} else if (error instanceof index
|
|
197
|
+
throw index.WalletLoginError.popupClosed();
|
|
198
|
+
} else if (error instanceof index.Web3AuthError) {
|
|
184
199
|
throw error;
|
|
185
200
|
}
|
|
186
|
-
throw index
|
|
201
|
+
throw index.WalletLoginError.connectionError("Failed to login with auth", error);
|
|
187
202
|
}
|
|
188
203
|
}
|
|
189
204
|
async enableMFA(params = {
|
|
190
205
|
authConnection: ""
|
|
191
206
|
}) {
|
|
192
|
-
if (!this.connected) throw index
|
|
193
|
-
if (!this.authInstance) throw index
|
|
207
|
+
if (!this.connected) throw index.WalletLoginError.notConnectedError("Not connected with wallet");
|
|
208
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
194
209
|
try {
|
|
195
210
|
const result = await this.authInstance.enableMFA(params);
|
|
196
211
|
// In redirect mode, the result is not available immediately, so we emit the event when the result is available.
|
|
197
212
|
if (result) this.emit(constants.CONNECTOR_EVENTS.MFA_ENABLED, result);
|
|
198
213
|
} catch (error) {
|
|
199
214
|
loglevel.log.error("Failed to enable MFA with auth provider", error);
|
|
200
|
-
if (error instanceof index
|
|
215
|
+
if (error instanceof index.Web3AuthError) {
|
|
201
216
|
throw error;
|
|
202
217
|
}
|
|
203
|
-
throw index
|
|
218
|
+
throw index.WalletLoginError.connectionError("Failed to enable MFA with auth", error);
|
|
204
219
|
}
|
|
205
220
|
}
|
|
206
221
|
async manageMFA(params = {
|
|
207
222
|
authConnection: ""
|
|
208
223
|
}) {
|
|
209
|
-
if (!this.connected) throw index
|
|
210
|
-
if (!this.authInstance) throw index
|
|
224
|
+
if (!this.connected) throw index.WalletLoginError.notConnectedError("Not connected with wallet");
|
|
225
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
211
226
|
try {
|
|
212
227
|
await this.authInstance.manageMFA(params);
|
|
213
228
|
} catch (error) {
|
|
214
229
|
loglevel.log.error("Failed to manage MFA with auth provider", error);
|
|
215
|
-
if (error instanceof index
|
|
230
|
+
if (error instanceof index.Web3AuthError) {
|
|
216
231
|
throw error;
|
|
217
232
|
}
|
|
218
|
-
throw index
|
|
233
|
+
throw index.WalletLoginError.connectionError("Failed to manage MFA with auth", error);
|
|
219
234
|
}
|
|
220
235
|
}
|
|
221
236
|
async disconnect(options = {
|
|
222
237
|
cleanup: false
|
|
223
238
|
}) {
|
|
224
|
-
if (!this.connected) throw index
|
|
225
|
-
if (!this.authInstance) throw index
|
|
239
|
+
if (!this.connected) throw index.WalletLoginError.notConnectedError("Not connected with wallet");
|
|
240
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
226
241
|
this.status = constants.CONNECTOR_STATUS.DISCONNECTING;
|
|
227
242
|
await this.authInstance.logout();
|
|
228
243
|
if (this.wsEmbedInstance) await this.wsEmbedInstance.logout();
|
|
@@ -236,70 +251,84 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
236
251
|
this.status = constants.CONNECTOR_STATUS.READY;
|
|
237
252
|
}
|
|
238
253
|
this.rehydrated = false;
|
|
239
|
-
this.
|
|
254
|
+
this._solanaWallet = null;
|
|
255
|
+
this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED, {
|
|
256
|
+
connector: index$1.WALLET_CONNECTORS.AUTH
|
|
257
|
+
});
|
|
240
258
|
}
|
|
241
|
-
async
|
|
242
|
-
if (!this.canAuthorize) throw index
|
|
259
|
+
async getAuthTokenInfo() {
|
|
260
|
+
if (!this.canAuthorize) throw index.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
243
261
|
this.status = constants.CONNECTOR_STATUS.AUTHORIZING;
|
|
244
262
|
this.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
|
|
245
|
-
connector: index.WALLET_CONNECTORS.AUTH
|
|
263
|
+
connector: index$1.WALLET_CONNECTORS.AUTH
|
|
246
264
|
});
|
|
247
265
|
const userInfo = await this.getUserInfo();
|
|
248
266
|
this.status = constants.CONNECTOR_STATUS.AUTHORIZED;
|
|
267
|
+
const [accessToken, refreshToken] = await Promise.all([this.authInstance.authSessionManager.getAccessToken(), this.authInstance.authSessionManager.getRefreshToken()]);
|
|
249
268
|
this.emit(constants.CONNECTOR_EVENTS.AUTHORIZED, {
|
|
250
|
-
connector: index.WALLET_CONNECTORS.AUTH,
|
|
251
|
-
|
|
252
|
-
idToken: userInfo.idToken
|
|
269
|
+
connector: index$1.WALLET_CONNECTORS.AUTH,
|
|
270
|
+
authTokenInfo: {
|
|
271
|
+
idToken: userInfo.idToken,
|
|
272
|
+
accessToken,
|
|
273
|
+
refreshToken
|
|
253
274
|
}
|
|
254
275
|
});
|
|
255
276
|
return {
|
|
256
|
-
idToken: userInfo.idToken
|
|
277
|
+
idToken: userInfo.idToken,
|
|
278
|
+
accessToken,
|
|
279
|
+
refreshToken
|
|
257
280
|
};
|
|
258
281
|
}
|
|
259
282
|
async getUserInfo() {
|
|
260
|
-
if (!this.canAuthorize) throw index
|
|
261
|
-
if (!this.authInstance) throw index
|
|
262
|
-
const userInfo = this.authInstance.getUserInfo();
|
|
263
|
-
return userInfo
|
|
283
|
+
if (!this.canAuthorize) throw index.WalletLoginError.notConnectedError("Not connected with wallet");
|
|
284
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
285
|
+
const [userInfo, linkedAccounts] = await Promise.all([this.authInstance.getUserInfo(), this.getLinkedAccounts()]);
|
|
286
|
+
return _objectSpread(_objectSpread({}, userInfo), {}, {
|
|
287
|
+
linkedAccounts
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
async getLinkedAccounts() {
|
|
291
|
+
const accessToken = await this.authInstance.authSessionManager.getAccessToken();
|
|
292
|
+
if (!accessToken) throw index.WalletLoginError.connectionError("Could not obtain an access token from the current AUTH session.");
|
|
293
|
+
const citadelUserInfo = await httpHelpers.get(`${utils.citadelServerUrl(this.coreOptions.authBuildEnv)}/v1/user`, {
|
|
294
|
+
headers: {
|
|
295
|
+
Authorization: `Bearer ${accessToken}`
|
|
296
|
+
}
|
|
297
|
+
});
|
|
298
|
+
const linkedAccounts = (citadelUserInfo === null || citadelUserInfo === void 0 ? void 0 : citadelUserInfo.accounts) || [];
|
|
299
|
+
return linkedAccounts.map(account => _objectSpread(_objectSpread({}, account), {}, {
|
|
300
|
+
// by default, the primary account is the active account
|
|
301
|
+
active: account.isPrimary
|
|
302
|
+
}));
|
|
264
303
|
}
|
|
265
|
-
// we don't support switching between different namespaces, except for solana and evm
|
|
266
304
|
async switchChain(params, init = false) {
|
|
267
305
|
super.checkSwitchChainRequirements(params, init);
|
|
268
|
-
// get chains and namespaces
|
|
269
306
|
const {
|
|
270
307
|
chainId: newChainId
|
|
271
308
|
} = params;
|
|
272
309
|
const {
|
|
273
310
|
chainId: currentChainId
|
|
274
311
|
} = this.provider;
|
|
275
|
-
const {
|
|
276
|
-
chainNamespace: currentNamespace
|
|
277
|
-
} = this.getChain(currentChainId);
|
|
278
|
-
const {
|
|
279
|
-
chainNamespace: newNamespace
|
|
280
|
-
} = this.getChain(newChainId);
|
|
281
|
-
// skip if chainId is the same
|
|
282
312
|
if (currentChainId === newChainId) return;
|
|
283
|
-
|
|
313
|
+
const newChainConfig = this.coreOptions.chains.find(c => c.chainId === newChainId);
|
|
314
|
+
if (!newChainConfig) throw index.WalletInitializationError.invalidParams("Chain config is not available");
|
|
315
|
+
if (newChainConfig.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA || newChainConfig.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155) {
|
|
284
316
|
var _this$wsEmbedInstance2;
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
await ((_this$wsEmbedInstance2 = this.wsEmbedInstance.provider) === null || _this$wsEmbedInstance2 === void 0 ? void 0 : _this$wsEmbedInstance2.request({
|
|
317
|
+
if (!((_this$wsEmbedInstance2 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance2 !== void 0 && _this$wsEmbedInstance2.provider)) throw index.WalletInitializationError.notReady("Wallet embed is not ready");
|
|
318
|
+
const fullChainId = utils.getCaipChainId(newChainConfig);
|
|
319
|
+
await this.wsEmbedInstance.provider.request({
|
|
289
320
|
method: "wallet_switchChain",
|
|
290
321
|
params: {
|
|
291
322
|
chainId: fullChainId
|
|
292
323
|
}
|
|
293
|
-
})
|
|
324
|
+
});
|
|
294
325
|
} else {
|
|
295
326
|
var _this$privateKeyProvi;
|
|
296
|
-
// cannot switch to other namespaces
|
|
297
|
-
if (currentNamespace !== newNamespace) throw index$1.WalletLoginError.connectionError("Cannot switch to other chain namespace");
|
|
298
327
|
await ((_this$privateKeyProvi = this.privateKeyProvider) === null || _this$privateKeyProvi === void 0 ? void 0 : _this$privateKeyProvi.switchChain(params));
|
|
299
328
|
}
|
|
300
329
|
}
|
|
301
330
|
async cleanup() {
|
|
302
|
-
if (!this.authInstance) throw index
|
|
331
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
303
332
|
await this.authInstance.cleanup();
|
|
304
333
|
if (this.wsEmbedInstance) {
|
|
305
334
|
this.wsEmbedInstance.clearInit();
|
|
@@ -323,8 +352,350 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
323
352
|
});
|
|
324
353
|
return providerConfig;
|
|
325
354
|
}
|
|
326
|
-
|
|
327
|
-
|
|
355
|
+
async generateChallengeAndSign() {
|
|
356
|
+
// we do not support this for auth connector, as of now. since auth login returns a valid idToken
|
|
357
|
+
throw new Error("Not implemented");
|
|
358
|
+
}
|
|
359
|
+
async switchAccount(account, context) {
|
|
360
|
+
if (!connectorStatus.CONNECTED_STATUSES.includes(this.status)) {
|
|
361
|
+
throw index.WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before switching accounts.");
|
|
362
|
+
}
|
|
363
|
+
try {
|
|
364
|
+
var _userInfo$linkedAccou;
|
|
365
|
+
const userInfo = await this.getUserInfo();
|
|
366
|
+
const linkedAccounts = (_userInfo$linkedAccou = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou !== void 0 ? _userInfo$linkedAccou : [];
|
|
367
|
+
const targetAccount = linkedAccounts.find(candidate => candidate.id === account.id);
|
|
368
|
+
if (!targetAccount) {
|
|
369
|
+
throw index.AccountLinkingError.requestFailed(`No connected wallet matches account id "${account.id}". Refresh user info and try again.`);
|
|
370
|
+
}
|
|
371
|
+
const currentActiveAccount = context.activeAccount;
|
|
372
|
+
const isTargetAlreadyActive = currentActiveAccount ? currentActiveAccount.id === targetAccount.id : targetAccount.isPrimary;
|
|
373
|
+
if (isTargetAlreadyActive) {
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_SWITCH_STARTED, this.getSwitchAccountTrackData(targetAccount));
|
|
377
|
+
if (targetAccount.connector === index$1.WALLET_CONNECTORS.AUTH && targetAccount.isPrimary) {
|
|
378
|
+
var _this$provider$chainI, _this$provider;
|
|
379
|
+
const activeChainId = this.getChainIdForLinkedAccount(targetAccount, (_this$provider$chainI = (_this$provider = this.provider) === null || _this$provider === void 0 ? void 0 : _this$provider.chainId) !== null && _this$provider$chainI !== void 0 ? _this$provider$chainI : context.currentChainId);
|
|
380
|
+
const ethereumProvider = this.provider;
|
|
381
|
+
const solanaWallet = this.solanaWallet;
|
|
382
|
+
if (!ethereumProvider && !solanaWallet) {
|
|
383
|
+
throw index.AccountLinkingError.requestFailed("Failed to restore the primary AUTH session for account switch.");
|
|
384
|
+
}
|
|
385
|
+
return {
|
|
386
|
+
kind: "primary",
|
|
387
|
+
targetAccount,
|
|
388
|
+
activeAccount: null,
|
|
389
|
+
activeChainId,
|
|
390
|
+
connectorName: this.name,
|
|
391
|
+
connectorNamespace: this.connectorNamespace,
|
|
392
|
+
ethereumProvider,
|
|
393
|
+
solanaWallet
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
return {
|
|
397
|
+
kind: "external",
|
|
398
|
+
targetAccount,
|
|
399
|
+
activeAccount: targetAccount,
|
|
400
|
+
activeChainId: this.getChainIdForLinkedAccount(targetAccount, context.currentChainId)
|
|
401
|
+
};
|
|
402
|
+
} catch (error) {
|
|
403
|
+
await this.trackSwitchAccountFailed(account, error);
|
|
404
|
+
throw error;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
async trackSwitchAccountCompleted(account) {
|
|
408
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_SWITCH_COMPLETED, _objectSpread(_objectSpread({}, this.getSwitchAccountTrackData(account)), {}, {
|
|
409
|
+
connector: account.connector
|
|
410
|
+
}));
|
|
411
|
+
}
|
|
412
|
+
async trackSwitchAccountFailed(account, error) {
|
|
413
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_SWITCH_FAILED, _objectSpread(_objectSpread({}, this.getSwitchAccountTrackData(account)), utils.getErrorAnalyticsProperties(error)));
|
|
414
|
+
}
|
|
415
|
+
async linkAccount(params) {
|
|
416
|
+
if (!connectorStatus.CONNECTED_STATUSES.includes(this.status)) {
|
|
417
|
+
throw index.WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before linking an account.");
|
|
418
|
+
}
|
|
419
|
+
const {
|
|
420
|
+
connectorName,
|
|
421
|
+
chainId,
|
|
422
|
+
walletConnector
|
|
423
|
+
} = params;
|
|
424
|
+
try {
|
|
425
|
+
if (!walletConnector.connected) {
|
|
426
|
+
const connection = await walletConnector.connect({
|
|
427
|
+
chainId,
|
|
428
|
+
isAccountLinking: true
|
|
429
|
+
});
|
|
430
|
+
if (!connection) {
|
|
431
|
+
throw index.AccountLinkingError.walletProofFailed(`Failed to connect to "${params.connectorName}" for account linking.`);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} catch (error) {
|
|
435
|
+
if (error instanceof index.AccountLinkingError) {
|
|
436
|
+
throw error;
|
|
437
|
+
}
|
|
438
|
+
throw index.AccountLinkingError.walletProofFailed(error instanceof Error ? error.message : String(error), error);
|
|
439
|
+
}
|
|
440
|
+
const trackData = {
|
|
441
|
+
connector: this.name,
|
|
442
|
+
linking_connector: connectorName,
|
|
443
|
+
chain_id: params.chainId
|
|
444
|
+
};
|
|
445
|
+
try {
|
|
446
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_LINKING_STARTED, trackData);
|
|
447
|
+
const {
|
|
448
|
+
accessToken,
|
|
449
|
+
idToken
|
|
450
|
+
} = await this.getPrimaryAuthSession(params.authSessionTokens);
|
|
451
|
+
const walletProof = await this.createWalletLinkingProof(params.walletConnector);
|
|
452
|
+
const authServerUrl = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
453
|
+
const result = await rest.makeAccountLinkingRequest(authServerUrl, accessToken, {
|
|
454
|
+
idToken,
|
|
455
|
+
network: walletProof.network,
|
|
456
|
+
connector: params.connectorName,
|
|
457
|
+
message: walletProof.challenge,
|
|
458
|
+
signature: {
|
|
459
|
+
s: walletProof.signature,
|
|
460
|
+
t: walletProof.signatureType
|
|
461
|
+
}
|
|
462
|
+
});
|
|
463
|
+
this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_LINKING_COMPLETED, _objectSpread(_objectSpread({}, trackData), {}, {
|
|
464
|
+
linked_address: walletProof.address
|
|
465
|
+
}));
|
|
466
|
+
return result;
|
|
467
|
+
} catch (error) {
|
|
468
|
+
this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_LINKING_FAILED, _objectSpread(_objectSpread({}, trackData), utils.getErrorAnalyticsProperties(error)));
|
|
469
|
+
// disconnect the wallet connector to avoid any leftover state
|
|
470
|
+
try {
|
|
471
|
+
await walletConnector.disconnect({
|
|
472
|
+
cleanup: true
|
|
473
|
+
});
|
|
474
|
+
} catch (disconnectError) {
|
|
475
|
+
loglevel.log.debug("Failed to disconnect wallet connector after linking failure", disconnectError);
|
|
476
|
+
}
|
|
477
|
+
throw error;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
async unlinkAccount(params) {
|
|
481
|
+
if (!connectorStatus.CONNECTED_STATUSES.includes(this.status)) {
|
|
482
|
+
throw index.WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before unlinking an account.");
|
|
483
|
+
}
|
|
484
|
+
const {
|
|
485
|
+
address,
|
|
486
|
+
authSessionTokens
|
|
487
|
+
} = params;
|
|
488
|
+
const trackData = {
|
|
489
|
+
connector: this.name,
|
|
490
|
+
address
|
|
491
|
+
};
|
|
492
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_UNLINKING_STARTED, trackData);
|
|
493
|
+
try {
|
|
494
|
+
const {
|
|
495
|
+
accessToken,
|
|
496
|
+
idToken,
|
|
497
|
+
linkedAccounts
|
|
498
|
+
} = await this.getPrimaryAuthSession(authSessionTokens, {
|
|
499
|
+
includeLinkedAccounts: true
|
|
500
|
+
});
|
|
501
|
+
const network = this.getNetworkForUnlinkAddress(linkedAccounts, address);
|
|
502
|
+
const authServerUrl = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
503
|
+
const result = await rest.makeAccountUnlinkingRequest(authServerUrl, accessToken, {
|
|
504
|
+
idToken,
|
|
505
|
+
address,
|
|
506
|
+
network
|
|
507
|
+
});
|
|
508
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_UNLINKING_COMPLETED, _objectSpread(_objectSpread({}, trackData), {}, {
|
|
509
|
+
linked_address: address
|
|
510
|
+
}));
|
|
511
|
+
return result;
|
|
512
|
+
} catch (error) {
|
|
513
|
+
await this.analytics.track(analytics.ANALYTICS_EVENTS.ACCOUNT_UNLINKING_FAILED, _objectSpread(_objectSpread({}, trackData), utils.getErrorAnalyticsProperties(error)));
|
|
514
|
+
throw error;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
getChainIdForLinkedAccount(account, preferredChainId) {
|
|
518
|
+
const accountChainNamespace = account.chainNamespace ? utils.parseChainNamespaceFromCitadelResponse(account.chainNamespace) : null;
|
|
519
|
+
if (preferredChainId) {
|
|
520
|
+
const preferredChain = this.coreOptions.chains.find(chain => chain.chainId === preferredChainId);
|
|
521
|
+
if (preferredChain && (!accountChainNamespace || preferredChain.chainNamespace === accountChainNamespace)) {
|
|
522
|
+
return preferredChainId;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
if (accountChainNamespace) {
|
|
526
|
+
const namespaceChain = this.coreOptions.chains.find(chain => chain.chainNamespace === accountChainNamespace);
|
|
527
|
+
if (namespaceChain) {
|
|
528
|
+
return namespaceChain.chainId;
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
throw index.WalletInitializationError.invalidParams(`No compatible chainId found for connector "${account.connector}".`);
|
|
532
|
+
}
|
|
533
|
+
async assertSwitchAccountConnectorMatchesTarget(connector, account) {
|
|
534
|
+
if (!account.chainNamespace) {
|
|
535
|
+
throw index.AccountLinkingError.requestFailed(`Could not determine the chain namespace for linked account "${account.eoaAddress}".`);
|
|
536
|
+
}
|
|
537
|
+
const chainNamespace = utils.parseChainNamespaceFromCitadelResponse(account.chainNamespace);
|
|
538
|
+
let connectedAddress = null;
|
|
539
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155) {
|
|
540
|
+
var _accounts$;
|
|
541
|
+
const accounts = connector.provider ? await connector.provider.request({
|
|
542
|
+
method: "eth_accounts"
|
|
543
|
+
}) : [];
|
|
544
|
+
connectedAddress = (_accounts$ = accounts === null || accounts === void 0 ? void 0 : accounts[0]) !== null && _accounts$ !== void 0 ? _accounts$ : null;
|
|
545
|
+
} else if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
546
|
+
var _connector$solanaWall, _connector$solanaWall2;
|
|
547
|
+
connectedAddress = (_connector$solanaWall = (_connector$solanaWall2 = connector.solanaWallet) === null || _connector$solanaWall2 === void 0 || (_connector$solanaWall2 = _connector$solanaWall2.accounts) === null || _connector$solanaWall2 === void 0 || (_connector$solanaWall2 = _connector$solanaWall2[0]) === null || _connector$solanaWall2 === void 0 ? void 0 : _connector$solanaWall2.address) !== null && _connector$solanaWall !== void 0 ? _connector$solanaWall : null;
|
|
548
|
+
} else {
|
|
549
|
+
throw index.AccountLinkingError.requestFailed(`Unsupported chain namespace "${account.chainNamespace}" for linked account "${account.eoaAddress}".`);
|
|
550
|
+
}
|
|
551
|
+
if (!connectedAddress) {
|
|
552
|
+
throw index.AccountLinkingError.requestFailed(`Connector "${account.connector}" is not connected to linked account "${account.eoaAddress}". Connect the intended wallet account and try again.`);
|
|
553
|
+
}
|
|
554
|
+
const isExpectedAddress = chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 ? connectedAddress.toLowerCase() === account.eoaAddress.toLowerCase() : connectedAddress === account.eoaAddress;
|
|
555
|
+
if (!isExpectedAddress) {
|
|
556
|
+
throw index.AccountLinkingError.requestFailed(`Connector "${account.connector}" is connected to "${connectedAddress}" instead of linked account "${account.eoaAddress}". Connect the intended wallet account and try again.`);
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
toSwitchAccountConnectorError(account, error) {
|
|
560
|
+
if (error instanceof index.AccountLinkingError && error.code === 5401) {
|
|
561
|
+
return error;
|
|
562
|
+
}
|
|
563
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
564
|
+
const isUnavailableConnectorError = error instanceof index.AccountLinkingError && error.code === 5405 || /not available|not initialized|not ready/i.test(message);
|
|
565
|
+
if (isUnavailableConnectorError) {
|
|
566
|
+
return index.AccountLinkingError.requestFailed(`Connector "${account.connector}" is not available for linked account "${account.eoaAddress}". Make sure the wallet is installed, unlocked, and accessible, then try again.`, error);
|
|
567
|
+
}
|
|
568
|
+
return index.AccountLinkingError.requestFailed(`Failed to connect connector "${account.connector}" for linked account "${account.eoaAddress}". ${message}`, error);
|
|
569
|
+
}
|
|
570
|
+
getSwitchAccountTrackData(account) {
|
|
571
|
+
var _account$eoaAddress;
|
|
572
|
+
return {
|
|
573
|
+
connector: this.name,
|
|
574
|
+
account_id: account.id,
|
|
575
|
+
account_type: account.accountType,
|
|
576
|
+
switched_to_address: (_account$eoaAddress = account.eoaAddress) !== null && _account$eoaAddress !== void 0 ? _account$eoaAddress : null
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
async getPrimaryAuthSession(authSessionTokens, options = {}) {
|
|
580
|
+
const {
|
|
581
|
+
accessToken: cachedAccessToken,
|
|
582
|
+
idToken: cachedIdToken
|
|
583
|
+
} = authSessionTokens;
|
|
584
|
+
const {
|
|
585
|
+
includeLinkedAccounts = false
|
|
586
|
+
} = options;
|
|
587
|
+
let accessToken = cachedAccessToken;
|
|
588
|
+
let idToken = cachedIdToken;
|
|
589
|
+
let linkedAccounts = [];
|
|
590
|
+
if (includeLinkedAccounts) {
|
|
591
|
+
const userInfoPromise = this.getUserInfo();
|
|
592
|
+
if (!accessToken || !idToken) {
|
|
593
|
+
var _userInfo$linkedAccou2;
|
|
594
|
+
const [tokenInfo, userInfo] = await Promise.all([this.getAuthTokenInfo(), userInfoPromise]);
|
|
595
|
+
accessToken = tokenInfo.accessToken;
|
|
596
|
+
idToken = tokenInfo.idToken;
|
|
597
|
+
linkedAccounts = (_userInfo$linkedAccou2 = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou2 !== void 0 ? _userInfo$linkedAccou2 : [];
|
|
598
|
+
} else {
|
|
599
|
+
var _userInfo$linkedAccou3;
|
|
600
|
+
const userInfo = await userInfoPromise;
|
|
601
|
+
linkedAccounts = (_userInfo$linkedAccou3 = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou3 !== void 0 ? _userInfo$linkedAccou3 : [];
|
|
602
|
+
}
|
|
603
|
+
} else if (!accessToken || !idToken) {
|
|
604
|
+
const tokenInfo = await this.getAuthTokenInfo();
|
|
605
|
+
accessToken = tokenInfo.accessToken;
|
|
606
|
+
idToken = tokenInfo.idToken;
|
|
607
|
+
}
|
|
608
|
+
if (!accessToken || !idToken) {
|
|
609
|
+
throw index.AccountLinkingError.primaryTokenNotAvailable("Could not obtain an identity token from the current AUTH session.");
|
|
610
|
+
}
|
|
611
|
+
return {
|
|
612
|
+
accessToken,
|
|
613
|
+
idToken,
|
|
614
|
+
linkedAccounts
|
|
615
|
+
};
|
|
616
|
+
}
|
|
617
|
+
getNetworkForUnlinkAddress(accounts, address) {
|
|
618
|
+
const matchedAccount = accounts.find(account => {
|
|
619
|
+
var _account$address, _account$eoaAddress2;
|
|
620
|
+
if (!account.chainNamespace || utils.parseChainNamespaceFromCitadelResponse(account.chainNamespace) !== baseControllers.CHAIN_NAMESPACES.EIP155) {
|
|
621
|
+
return false;
|
|
622
|
+
}
|
|
623
|
+
const normalizedAddress = address.toLowerCase();
|
|
624
|
+
return ((_account$address = account.address) === null || _account$address === void 0 ? void 0 : _account$address.toLowerCase()) === normalizedAddress || ((_account$eoaAddress2 = account.eoaAddress) === null || _account$eoaAddress2 === void 0 ? void 0 : _account$eoaAddress2.toLowerCase()) === normalizedAddress;
|
|
625
|
+
});
|
|
626
|
+
if (!matchedAccount) {
|
|
627
|
+
throw index.AccountLinkingError.requestFailed(`No connected wallet matches address "${address}".`);
|
|
628
|
+
}
|
|
629
|
+
if (!matchedAccount.chainNamespace) {
|
|
630
|
+
throw index.AccountLinkingError.requestFailed(`Could not determine the chain namespace for address "${address}".`);
|
|
631
|
+
}
|
|
632
|
+
const chainNamespace = utils.parseChainNamespaceFromCitadelResponse(matchedAccount.chainNamespace);
|
|
633
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155) {
|
|
634
|
+
return "ethereum";
|
|
635
|
+
}
|
|
636
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
637
|
+
return "solana";
|
|
638
|
+
}
|
|
639
|
+
throw index.AccountLinkingError.requestFailed(`Unsupported chain namespace "${matchedAccount.chainNamespace}" for address "${address}".`);
|
|
640
|
+
}
|
|
641
|
+
async createWalletLinkingProof(connector) {
|
|
642
|
+
// Notify listeners that the linking wallet is about to be asked for a signature so the UI
|
|
643
|
+
// (e.g. modal) can switch from a "connecting" loader to an "authorizing" prompt while the
|
|
644
|
+
// user reviews the signature request inside their wallet. Emitted on the isolated wallet
|
|
645
|
+
// connector (not the auth connector) so it doesn't mutate the global SDK status.
|
|
646
|
+
connector.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
|
|
647
|
+
connector: connector.name
|
|
648
|
+
});
|
|
649
|
+
const {
|
|
650
|
+
challenge,
|
|
651
|
+
signature,
|
|
652
|
+
chainNamespace
|
|
653
|
+
} = await connector.generateChallengeAndSign();
|
|
654
|
+
const address = await this.getLinkingWalletAddress(connector, chainNamespace);
|
|
655
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155) {
|
|
656
|
+
return {
|
|
657
|
+
address,
|
|
658
|
+
challenge,
|
|
659
|
+
signature,
|
|
660
|
+
signatureType: "eip191",
|
|
661
|
+
network: "ethereum"
|
|
662
|
+
};
|
|
663
|
+
}
|
|
664
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
665
|
+
return {
|
|
666
|
+
address,
|
|
667
|
+
challenge,
|
|
668
|
+
signature,
|
|
669
|
+
signatureType: "sip99",
|
|
670
|
+
network: "solana"
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
throw index.AccountLinkingError.unsupportedConnector(`Connector "${connector.name}" returned unsupported chain namespace "${chainNamespace}".`);
|
|
674
|
+
}
|
|
675
|
+
async getLinkingWalletAddress(connector, chainNamespace) {
|
|
676
|
+
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
677
|
+
var _connector$solanaWall3;
|
|
678
|
+
const address = (_connector$solanaWall3 = connector.solanaWallet) === null || _connector$solanaWall3 === void 0 || (_connector$solanaWall3 = _connector$solanaWall3.accounts) === null || _connector$solanaWall3 === void 0 || (_connector$solanaWall3 = _connector$solanaWall3[0]) === null || _connector$solanaWall3 === void 0 ? void 0 : _connector$solanaWall3.address;
|
|
679
|
+
if (!address) {
|
|
680
|
+
throw index.AccountLinkingError.walletProofFailed("No connected Solana account found for account linking.");
|
|
681
|
+
}
|
|
682
|
+
return address;
|
|
683
|
+
}
|
|
684
|
+
if (!connector.provider) {
|
|
685
|
+
throw index.AccountLinkingError.walletProofFailed("No connected EVM account found for account linking.");
|
|
686
|
+
}
|
|
687
|
+
const accounts = await connector.provider.request({
|
|
688
|
+
method: "eth_accounts"
|
|
689
|
+
});
|
|
690
|
+
if (!(accounts !== null && accounts !== void 0 && accounts.length)) {
|
|
691
|
+
throw index.AccountLinkingError.walletProofFailed("No connected EVM account found for account linking.");
|
|
692
|
+
}
|
|
693
|
+
return accounts[0];
|
|
694
|
+
}
|
|
695
|
+
setupSolanaWallet() {
|
|
696
|
+
const solanaChains = this.coreOptions.chains.filter(c => c.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA);
|
|
697
|
+
if (solanaChains.length === 0 || !this.provider) return;
|
|
698
|
+
this._solanaWallet = new authSolanaWallet.AuthSolanaWallet(this.provider, solanaChains);
|
|
328
699
|
}
|
|
329
700
|
_getFinalPrivKey() {
|
|
330
701
|
if (!this.authInstance) return "";
|
|
@@ -335,7 +706,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
335
706
|
// when useSFAKey is set to true.
|
|
336
707
|
// This is to ensure that when there is no user session active, we don't throw an exception.
|
|
337
708
|
if (this.authInstance.privKey && !this.authInstance.coreKitKey) {
|
|
338
|
-
throw index
|
|
709
|
+
throw index.WalletLoginError.sfaKeyNotFound();
|
|
339
710
|
}
|
|
340
711
|
finalPrivKey = this.authInstance.coreKitKey;
|
|
341
712
|
}
|
|
@@ -343,9 +714,9 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
343
714
|
}
|
|
344
715
|
async connectWithProvider(params) {
|
|
345
716
|
var _this$authInstance, _params$extraLoginOpt, _this$authInstance2, _this$authInstance3;
|
|
346
|
-
if (!this.authInstance) throw index
|
|
717
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
347
718
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId);
|
|
348
|
-
if (!chainConfig) throw index
|
|
719
|
+
if (!chainConfig) throw index.WalletLoginError.connectionError("Chain config is not available");
|
|
349
720
|
const {
|
|
350
721
|
chainNamespace
|
|
351
722
|
} = chainConfig;
|
|
@@ -371,7 +742,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
371
742
|
if (this.authInstance.sessionId) {
|
|
372
743
|
await this.authInstance.logout();
|
|
373
744
|
}
|
|
374
|
-
throw index
|
|
745
|
+
throw index.WalletLoginError.sfaKeyNotFound("This typically occurs when the authentication method used does not provide SFA keys (e.g., default auth connection).");
|
|
375
746
|
}
|
|
376
747
|
// setup WS embed if chainNamespace is EIP155 or SOLANA
|
|
377
748
|
if (chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 || chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
@@ -382,24 +753,26 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
382
753
|
sessionNamespace
|
|
383
754
|
} = this.authInstance || {};
|
|
384
755
|
if (sessionId) {
|
|
385
|
-
|
|
756
|
+
this.wsEmbedInstance.setAccessTokenProvider(this.accessTokenProvider.bind(this));
|
|
757
|
+
const isLoggedIn = await this.wsEmbedInstance.connectWithSession({
|
|
386
758
|
sessionId,
|
|
387
|
-
sessionNamespace
|
|
759
|
+
sessionNamespace,
|
|
760
|
+
idToken: await this.getIdToken()
|
|
388
761
|
});
|
|
389
762
|
if (isLoggedIn) {
|
|
390
763
|
var _this$wsEmbedInstance3;
|
|
391
|
-
|
|
392
|
-
//
|
|
393
|
-
|
|
764
|
+
this.setupSolanaWallet();
|
|
765
|
+
// if getAuthTokenInfo is true, then get auth token info
|
|
766
|
+
// No need to get auth token info for auth connector as it is already handled
|
|
394
767
|
this.status = constants.CONNECTOR_STATUS.CONNECTED;
|
|
395
768
|
this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
|
|
396
|
-
|
|
769
|
+
connectorName: index$1.WALLET_CONNECTORS.AUTH,
|
|
397
770
|
reconnected: this.rehydrated,
|
|
398
|
-
|
|
399
|
-
|
|
771
|
+
ethereumProvider: this.provider,
|
|
772
|
+
solanaWallet: this._solanaWallet
|
|
400
773
|
});
|
|
401
|
-
if (params.
|
|
402
|
-
|
|
774
|
+
if (params.getAuthTokenInfo) {
|
|
775
|
+
await this.getAuthTokenInfo();
|
|
403
776
|
}
|
|
404
777
|
// handle disconnect from ws embed
|
|
405
778
|
(_this$wsEmbedInstance3 = this.wsEmbedInstance) === null || _this$wsEmbedInstance3 === void 0 || _this$wsEmbedInstance3.provider.on("accountsChanged", (accounts = []) => {
|
|
@@ -416,9 +789,10 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
416
789
|
await this.privateKeyProvider.setupProvider(finalPrivKey, params.chainId);
|
|
417
790
|
this.status = constants.CONNECTOR_STATUS.CONNECTED;
|
|
418
791
|
this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
792
|
+
connectorName: index$1.WALLET_CONNECTORS.AUTH,
|
|
793
|
+
ethereumProvider: this.provider,
|
|
794
|
+
solanaWallet: this._solanaWallet,
|
|
795
|
+
reconnected: this.rehydrated
|
|
422
796
|
});
|
|
423
797
|
}
|
|
424
798
|
}
|
|
@@ -430,13 +804,16 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
430
804
|
authConnectionId: params.authConnectionId,
|
|
431
805
|
groupedAuthConnectionId: params.groupedAuthConnectionId
|
|
432
806
|
});
|
|
433
|
-
if (!(providerConfig !== null && providerConfig !== void 0 && providerConfig.authConnection)) throw index
|
|
807
|
+
if (!(providerConfig !== null && providerConfig !== void 0 && providerConfig.authConnection)) throw index.WalletLoginError.connectionError("Invalid auth connection.");
|
|
434
808
|
const jwtParams = _objectSpread(_objectSpread(_objectSpread({}, providerConfig.jwtParameters || {}), params.extraLoginOptions || {}), {}, {
|
|
435
809
|
login_hint: params.loginHint || ((_params$extraLoginOpt3 = params.extraLoginOptions) === null || _params$extraLoginOpt3 === void 0 ? void 0 : _params$extraLoginOpt3.login_hint)
|
|
436
810
|
});
|
|
437
|
-
const nonce =
|
|
811
|
+
const nonce = utils$1.generateNonce();
|
|
438
812
|
// post a message to the auth provider to indicate that login has been initiated.
|
|
439
|
-
const loginParams = baseControllers.cloneDeep(params)
|
|
813
|
+
const loginParams = _objectSpread(_objectSpread({}, baseControllers.cloneDeep(params)), {}, {
|
|
814
|
+
recordId: auth.generateRecordId(),
|
|
815
|
+
loginSource: "web3auth-web"
|
|
816
|
+
});
|
|
440
817
|
loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, loginParams.extraLoginOptions || {}), {}, {
|
|
441
818
|
login_hint: params.loginHint || ((_params$extraLoginOpt4 = params.extraLoginOptions) === null || _params$extraLoginOpt4 === void 0 ? void 0 : _params$extraLoginOpt4.login_hint)
|
|
442
819
|
});
|
|
@@ -459,10 +836,11 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
459
836
|
version: auth.version.split(".")[0],
|
|
460
837
|
web3AuthNetwork: this.coreOptions.web3AuthNetwork,
|
|
461
838
|
web3AuthClientId: this.coreOptions.clientId,
|
|
462
|
-
originData: this.
|
|
839
|
+
originData: this.getOriginData()
|
|
463
840
|
},
|
|
464
841
|
web3AuthClientId: this.coreOptions.clientId,
|
|
465
|
-
web3AuthNetwork: this.coreOptions.web3AuthNetwork
|
|
842
|
+
web3AuthNetwork: this.coreOptions.web3AuthNetwork,
|
|
843
|
+
storageServerUrl: this.authInstance.options.storageServerUrl
|
|
466
844
|
};
|
|
467
845
|
const loginHandler = auth.createHandler(popupParams);
|
|
468
846
|
const verifierWindow = new auth.PopupHandler({
|
|
@@ -471,6 +849,9 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
471
849
|
});
|
|
472
850
|
if (this.authOptions.uxMode === auth.UX_MODE.REDIRECT) return verifierWindow.redirect(this.authOptions.replaceUrlOnRedirect);
|
|
473
851
|
let isClosedWindow = false;
|
|
852
|
+
this.auditOAuditProgress(loginParams).catch(error => {
|
|
853
|
+
loglevel.log.error("Error reporting `oauthInitiated` audit progress", error);
|
|
854
|
+
});
|
|
474
855
|
return new Promise((resolve, reject) => {
|
|
475
856
|
verifierWindow.open().catch(error => {
|
|
476
857
|
loglevel.log.error("Error during login with social", error);
|
|
@@ -479,7 +860,9 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
479
860
|
});
|
|
480
861
|
// this is to close the popup when the login is finished.
|
|
481
862
|
const securePubSub$1 = new securePubSub.SecurePubSub({
|
|
482
|
-
sameIpCheck: true
|
|
863
|
+
sameIpCheck: true,
|
|
864
|
+
serverUrl: this.authInstance.options.storageServerUrl,
|
|
865
|
+
socketUrl: this.authInstance.options.sessionSocketUrl
|
|
483
866
|
});
|
|
484
867
|
securePubSub$1.subscribe(`web3auth-login-${nonce}`).then(data => {
|
|
485
868
|
const parsedData = JSON.parse(data || "{}");
|
|
@@ -496,22 +879,61 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
496
879
|
}).catch(error => {
|
|
497
880
|
// swallow the error, dont need to throw.
|
|
498
881
|
loglevel.log.error("Error during login with social", error);
|
|
882
|
+
this.auditOAuditProgress(loginParams, "failed").catch(error => {
|
|
883
|
+
loglevel.log.error("Error reporting `oauthFailed` audit progress", error);
|
|
884
|
+
});
|
|
499
885
|
});
|
|
500
886
|
verifierWindow.once("close", () => {
|
|
501
887
|
if (!isClosedWindow) {
|
|
502
888
|
securePubSub$1.cleanup();
|
|
503
889
|
this.authInstance.postLoginCancelledMessage(nonce);
|
|
504
|
-
reject(index
|
|
890
|
+
reject(index.WalletLoginError.popupClosed());
|
|
505
891
|
}
|
|
506
892
|
});
|
|
507
893
|
this.authInstance.postLoginInitiatedMessage(loginParams, nonce).then(resolve).catch(error => {
|
|
508
|
-
|
|
894
|
+
this.auditOAuditProgress(loginParams, "failed").catch(error => {
|
|
895
|
+
loglevel.log.error("Error reporting `oauthFailed` audit progress", error);
|
|
896
|
+
});
|
|
897
|
+
if (error instanceof index.Web3AuthError) {
|
|
509
898
|
throw error;
|
|
510
899
|
}
|
|
511
|
-
reject(index
|
|
900
|
+
reject(index.WalletLoginError.connectionError(error instanceof Error ? error.message : error || "Failed to login with social"));
|
|
512
901
|
});
|
|
513
902
|
});
|
|
514
903
|
}
|
|
904
|
+
async accessTokenProvider({
|
|
905
|
+
forceRefresh
|
|
906
|
+
}) {
|
|
907
|
+
if (forceRefresh) {
|
|
908
|
+
await this.authInstance.refreshSession();
|
|
909
|
+
}
|
|
910
|
+
return this.authInstance.getAccessToken();
|
|
911
|
+
}
|
|
912
|
+
async getIdToken() {
|
|
913
|
+
if (!this.authInstance) throw index.WalletInitializationError.notReady("authInstance is not ready");
|
|
914
|
+
return this.authInstance.authSessionManager.getIdToken();
|
|
915
|
+
}
|
|
916
|
+
getOriginData() {
|
|
917
|
+
try {
|
|
918
|
+
const {
|
|
919
|
+
originData,
|
|
920
|
+
redirectUrl
|
|
921
|
+
} = this.authInstance.options;
|
|
922
|
+
const origin = new URL(redirectUrl).origin;
|
|
923
|
+
if (originData) {
|
|
924
|
+
const dappOriginData = originData[origin];
|
|
925
|
+
if (dappOriginData) {
|
|
926
|
+
return JSON.stringify({
|
|
927
|
+
[origin]: dappOriginData
|
|
928
|
+
});
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
return undefined;
|
|
932
|
+
} catch (error) {
|
|
933
|
+
loglevel.log.error("Error getting origin data", error);
|
|
934
|
+
return undefined;
|
|
935
|
+
}
|
|
936
|
+
}
|
|
515
937
|
connectWithJwtLogin(params) {
|
|
516
938
|
var _params$extraLoginOpt5, _params$extraLoginOpt7;
|
|
517
939
|
const loginConfig = this.getOAuthProviderConfig({
|
|
@@ -521,7 +943,7 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
521
943
|
});
|
|
522
944
|
// throw error only when we cannot find the login config and authConnectionId is not provided in the params.
|
|
523
945
|
// otherwise, we will use the params to create a new auth connection config in the auth instance.
|
|
524
|
-
if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection) && !params.authConnectionId) throw index
|
|
946
|
+
if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection) && !params.authConnectionId) throw index.WalletLoginError.connectionError("Invalid auth connection.");
|
|
525
947
|
if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection)) {
|
|
526
948
|
this.authInstance.options.authConnectionConfig.push({
|
|
527
949
|
authConnection: params.authConnection,
|
|
@@ -538,10 +960,10 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
538
960
|
} else if ((_params$extraLoginOpt7 = params.extraLoginOptions) !== null && _params$extraLoginOpt7 !== void 0 && _params$extraLoginOpt7.id_token) {
|
|
539
961
|
const {
|
|
540
962
|
payload
|
|
541
|
-
} = utils.parseToken(params.extraLoginOptions.id_token);
|
|
963
|
+
} = utils$1.parseToken(params.extraLoginOptions.id_token);
|
|
542
964
|
finalUserId = auth.getUserId(payload, loginParams.authConnection, finalExtraLoginOptions.userIdField, finalExtraLoginOptions.isUserIdCaseSensitive);
|
|
543
965
|
} else {
|
|
544
|
-
throw index
|
|
966
|
+
throw index.WalletLoginError.connectionError("Invalid login hint or id_token");
|
|
545
967
|
}
|
|
546
968
|
// Adds the login_hint to the extraLoginOptions.
|
|
547
969
|
loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, finalExtraLoginOptions), {}, {
|
|
@@ -550,11 +972,47 @@ class AuthConnector extends baseConnector.BaseConnector {
|
|
|
550
972
|
delete loginParams.chainId;
|
|
551
973
|
return this.authInstance.postLoginInitiatedMessage(loginParams);
|
|
552
974
|
}
|
|
975
|
+
async auditOAuditProgress(loginParams, status) {
|
|
976
|
+
const {
|
|
977
|
+
authConnection,
|
|
978
|
+
authConnectionId,
|
|
979
|
+
groupedAuthConnectionId,
|
|
980
|
+
recordId,
|
|
981
|
+
loginSource
|
|
982
|
+
} = loginParams;
|
|
983
|
+
const {
|
|
984
|
+
authBuildEnv = auth.BUILD_ENV.PRODUCTION,
|
|
985
|
+
web3AuthNetwork,
|
|
986
|
+
clientId
|
|
987
|
+
} = this.coreOptions;
|
|
988
|
+
const auditServerUrl = `${constants$1.CITADEL_SERVER_MAP[authBuildEnv]}/v1/auth/audit`;
|
|
989
|
+
const progressFlag = {
|
|
990
|
+
oauthInitiated: true
|
|
991
|
+
};
|
|
992
|
+
const auditPayload = _objectSpread({
|
|
993
|
+
authConnection,
|
|
994
|
+
authConnectionId,
|
|
995
|
+
groupedAuthConnectionId,
|
|
996
|
+
recordId,
|
|
997
|
+
source: loginSource,
|
|
998
|
+
web3AuthNetwork,
|
|
999
|
+
web3AuthClientId: clientId
|
|
1000
|
+
}, progressFlag);
|
|
1001
|
+
if (status === "failed") {
|
|
1002
|
+
auditPayload.oauthFailed = true;
|
|
1003
|
+
} else if (status === "completed") {
|
|
1004
|
+
auditPayload.oauthCompleted = true;
|
|
1005
|
+
} else {
|
|
1006
|
+
auditPayload.oauthInitiated = true;
|
|
1007
|
+
}
|
|
1008
|
+
await httpHelpers.put(auditServerUrl, auditPayload);
|
|
1009
|
+
}
|
|
553
1010
|
}
|
|
554
1011
|
const authConnector = params => {
|
|
555
1012
|
return ({
|
|
556
1013
|
projectConfig,
|
|
557
|
-
coreOptions
|
|
1014
|
+
coreOptions,
|
|
1015
|
+
analytics
|
|
558
1016
|
}) => {
|
|
559
1017
|
var _coreOptions$uiConfig, _coreOptions$walletSe, _coreOptions$walletSe2, _coreOptions$walletSe3;
|
|
560
1018
|
// Connector settings
|
|
@@ -596,9 +1054,24 @@ const authConnector = params => {
|
|
|
596
1054
|
mfaLevel: coreOptions.mfaLevel
|
|
597
1055
|
}),
|
|
598
1056
|
coreOptions,
|
|
1057
|
+
analytics,
|
|
599
1058
|
authConnectionConfig: projectConfig.embeddedWalletAuth
|
|
600
1059
|
});
|
|
601
1060
|
};
|
|
602
1061
|
};
|
|
1062
|
+
function isAuthConnector(connector) {
|
|
1063
|
+
if (!connector || connector.name !== index$1.WALLET_CONNECTORS.AUTH) {
|
|
1064
|
+
return false;
|
|
1065
|
+
}
|
|
1066
|
+
const maybeAuthConnector = connector;
|
|
1067
|
+
return typeof maybeAuthConnector.switchAccount === "function" && typeof maybeAuthConnector.linkAccount === "function" && typeof maybeAuthConnector.unlinkAccount === "function";
|
|
1068
|
+
}
|
|
1069
|
+
function assertAuthConnector(connector, errorMessage = "Account linking is only supported when connected with the AUTH connector.") {
|
|
1070
|
+
if (!isAuthConnector(connector)) {
|
|
1071
|
+
throw index.WalletLoginError.unsupportedOperation(errorMessage);
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
603
1074
|
|
|
1075
|
+
exports.assertAuthConnector = assertAuthConnector;
|
|
604
1076
|
exports.authConnector = authConnector;
|
|
1077
|
+
exports.isAuthConnector = isAuthConnector;
|