@web3auth/no-modal 10.16.0 → 11.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib.cjs/account-linking/index.js +8 -0
- package/dist/lib.cjs/account-linking/react.js +95 -0
- package/dist/lib.cjs/account-linking/rest.js +54 -0
- package/dist/lib.cjs/account-linking/vue.js +98 -0
- package/dist/lib.cjs/base/analytics.js +13 -1
- package/dist/lib.cjs/base/connector/baseConnector.js +104 -2
- package/dist/lib.cjs/base/connector/connectorStatus.js +2 -0
- package/dist/lib.cjs/base/connector/constants.js +6 -2
- package/dist/lib.cjs/base/connector/utils.js +0 -21
- package/dist/lib.cjs/base/constants.js +4 -0
- package/dist/lib.cjs/base/cookie.js +6 -20
- package/dist/lib.cjs/base/errors/index.js +84 -12
- package/dist/lib.cjs/base/utils.js +22 -11
- package/dist/lib.cjs/base/wallet/index.js +7 -0
- package/dist/lib.cjs/base/wallet/solana.js +83 -0
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +566 -93
- package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +19 -14
- package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +18 -13
- package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +24 -36
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +350 -131
- package/dist/lib.cjs/connectors/utils.js +8 -2
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -38
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -3
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +111 -73
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +24 -51
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
- package/dist/lib.cjs/index.js +55 -83
- package/dist/lib.cjs/noModal.js +957 -169
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +23 -39
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +12 -10
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +8 -6
- package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +47 -44
- package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +1 -3
- package/dist/lib.cjs/providers/base-provider/baseProvider.js +69 -35
- package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +8 -11
- package/dist/lib.cjs/providers/base-provider/index.js +0 -1
- package/dist/lib.cjs/providers/base-provider/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/base-provider/utils.js +0 -3
- package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +22 -43
- package/dist/lib.cjs/providers/ethereum-provider/rpc/jrpcClient.js +18 -19
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMiddleware.js +200 -0
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +9 -18
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.cjs/providers/xrpl-provider/rpc/JrpcClient.js +19 -26
- package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +46 -37
- package/dist/lib.cjs/react/context/WalletServicesInnerContext.js +2 -69
- package/dist/lib.cjs/react/context/Web3AuthInnerContext.js +6 -161
- package/dist/lib.cjs/react/context/useWalletServicesContextValue.js +76 -0
- package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +216 -0
- package/dist/lib.cjs/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.cjs/react/hooks/useCheckout.js +4 -2
- package/dist/lib.cjs/react/hooks/useFunding.js +4 -2
- package/dist/lib.cjs/react/hooks/useReceive.js +4 -2
- package/dist/lib.cjs/react/hooks/useSwap.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.cjs/react/hooks/useWalletUI.js +4 -2
- package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
- package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
- package/dist/lib.cjs/react/index.js +12 -2
- package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +22 -4
- package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +20 -2
- package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +22 -3
- package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +34 -51
- package/dist/lib.cjs/react/solana/index.js +2 -0
- package/dist/lib.cjs/react/solana/provider.js +169 -0
- package/dist/lib.cjs/react/wagmi/provider.js +10 -8
- package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
- package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
- package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
- package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
- package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
- package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +26 -5
- package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/constants.d.ts +5 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +72 -16
- package/dist/lib.cjs/types/base/connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/base/constants.d.ts +1 -0
- package/dist/lib.cjs/types/base/cookie.d.ts +0 -7
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +57 -13
- package/dist/lib.cjs/types/base/errors/index.d.ts +15 -3
- package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
- package/dist/lib.cjs/types/base/interfaces.d.ts +8 -2
- package/dist/lib.cjs/types/base/utils.d.ts +9 -2
- package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
- package/dist/lib.cjs/types/base/wallet/solana.d.ts +19 -0
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +37 -8
- package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
- package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
- package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +8 -2
- package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +8 -2
- package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +2 -2
- package/dist/lib.cjs/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +10 -7
- package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +35 -3
- package/dist/lib.cjs/types/connectors/utils.d.ts +2 -0
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.d.ts +0 -1
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/walletConnectV2Utils.d.ts +1 -5
- package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/wcSolanaWallet.d.ts +26 -0
- package/dist/lib.cjs/types/index.d.ts +1 -0
- package/dist/lib.cjs/types/noModal.d.ts +113 -10
- package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +1 -4
- package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
- package/dist/lib.cjs/types/providers/base-provider/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/base-provider/utils.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/index.d.ts +1 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/jrpcClient.d.ts +2 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMiddleware.d.ts +3 -0
- package/dist/lib.cjs/types/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +0 -1
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/JrpcClient.d.ts +3 -7
- package/dist/lib.cjs/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +5 -12
- package/dist/lib.cjs/types/react/context/index.d.ts +4 -0
- package/dist/lib.cjs/types/react/context/useWalletServicesContextValue.d.ts +12 -0
- package/dist/lib.cjs/types/react/context/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/react/hooks/index.d.ts +2 -1
- package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
- package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
- package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/react/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
- package/dist/lib.cjs/types/react/solana/provider.d.ts +26 -0
- package/dist/lib.cjs/types/vue/composables/index.d.ts +3 -1
- package/dist/lib.cjs/types/vue/composables/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +3 -3
- package/dist/lib.cjs/types/vue/composables/useInjectedWeb3AuthInnerContext.d.ts +1 -0
- package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
- package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +1 -2
- package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +2 -2
- package/dist/lib.cjs/types/vue/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/interfaces.d.ts +2 -2
- package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +1 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +7 -2
- package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +8 -3
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaClient.d.ts +7 -0
- package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +17 -4
- package/dist/lib.cjs/types/vue/solana/constants.d.ts +3 -0
- package/dist/lib.cjs/types/vue/solana/index.d.ts +2 -0
- package/dist/lib.cjs/types/vue/solana/provider.d.ts +8 -0
- package/dist/lib.cjs/types/vue/useWalletServicesInnerContextValue.d.ts +13 -0
- package/dist/lib.cjs/types/vue/useWeb3AuthInnerContextValue.d.ts +26 -0
- package/dist/lib.cjs/types/x402/index.d.ts +43 -0
- package/dist/lib.cjs/types/x402/interfaces.d.ts +11 -0
- package/dist/lib.cjs/types/x402/react.d.ts +17 -0
- package/dist/lib.cjs/types/x402/vue.d.ts +18 -0
- package/dist/lib.cjs/vue/WalletServicesInnerProvider.js +9 -54
- package/dist/lib.cjs/vue/Web3AuthProvider.js +16 -177
- package/dist/lib.cjs/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +10 -8
- package/dist/lib.cjs/vue/composables/useCheckout.js +4 -2
- package/dist/lib.cjs/vue/composables/useEnableMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useFunding.js +4 -2
- package/dist/lib.cjs/vue/composables/useInjectedWeb3AuthInnerContext.js +29 -0
- package/dist/lib.cjs/vue/composables/useManageMFA.js +4 -2
- package/dist/lib.cjs/vue/composables/useReceive.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwap.js +4 -2
- package/dist/lib.cjs/vue/composables/useSwitchChain.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +4 -2
- package/dist/lib.cjs/vue/composables/useWalletUI.js +4 -2
- package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
- package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +6 -4
- package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +4 -2
- package/dist/lib.cjs/vue/composables/useWeb3AuthInner.js +2 -20
- package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +4 -2
- package/dist/lib.cjs/vue/index.js +10 -2
- package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +6 -3
- package/dist/lib.cjs/vue/solana/composables/useSolanaClient.js +14 -0
- package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +60 -41
- package/dist/lib.cjs/vue/solana/constants.js +5 -0
- package/dist/lib.cjs/vue/solana/index.js +6 -0
- package/dist/lib.cjs/vue/solana/provider.js +110 -0
- package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
- package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +226 -0
- package/dist/lib.cjs/vue/wagmi/provider.js +28 -12
- package/dist/lib.cjs/x402/index.js +175 -0
- package/dist/lib.cjs/x402/interfaces.js +5 -0
- package/dist/lib.cjs/x402/react.js +64 -0
- package/dist/lib.cjs/x402/vue.js +58 -0
- package/dist/lib.esm/account-linking/index.js +1 -0
- package/dist/lib.esm/account-linking/react.js +74 -0
- package/dist/lib.esm/account-linking/rest.js +51 -0
- package/dist/lib.esm/account-linking/vue.js +78 -0
- package/dist/lib.esm/base/analytics.js +13 -1
- package/dist/lib.esm/base/connector/baseConnector.js +104 -2
- package/dist/lib.esm/base/connector/connectorStatus.js +2 -1
- package/dist/lib.esm/base/connector/constants.js +6 -2
- package/dist/lib.esm/base/connector/utils.js +1 -19
- package/dist/lib.esm/base/constants.js +4 -1
- package/dist/lib.esm/base/cookie.js +7 -20
- package/dist/lib.esm/base/errors/index.js +84 -13
- package/dist/lib.esm/base/utils.js +22 -7
- package/dist/lib.esm/base/wallet/index.js +2 -1
- package/dist/lib.esm/base/wallet/solana.js +81 -0
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +527 -57
- package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +55 -58
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +16 -13
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +22 -34
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +366 -132
- package/dist/lib.esm/connectors/utils.js +9 -4
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -31
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +110 -73
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +21 -49
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
- package/dist/lib.esm/index.js +12 -19
- package/dist/lib.esm/noModal.js +975 -177
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +20 -39
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -9
- package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +3 -3
- package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +48 -45
- package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +2 -4
- package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
- package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
- package/dist/lib.esm/providers/base-provider/index.js +1 -1
- package/dist/lib.esm/providers/base-provider/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/base-provider/utils.js +1 -3
- package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +23 -44
- package/dist/lib.esm/providers/ethereum-provider/rpc/jrpcClient.js +20 -19
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMiddleware.js +201 -0
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +6 -17
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
- package/dist/lib.esm/providers/xrpl-provider/rpc/JrpcClient.js +21 -25
- package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +48 -38
- package/dist/lib.esm/react/context/WalletServicesInnerContext.js +3 -57
- package/dist/lib.esm/react/context/Web3AuthInnerContext.js +7 -152
- package/dist/lib.esm/react/context/useWalletServicesContextValue.js +59 -0
- package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +203 -0
- package/dist/lib.esm/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
- package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +3 -10
- package/dist/lib.esm/react/hooks/useWallets.js +33 -0
- package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
- package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/react/index.js +6 -1
- package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +6 -4
- package/dist/lib.esm/react/solana/hooks/useSignMessage.js +4 -2
- package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +6 -3
- package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +33 -28
- package/dist/lib.esm/react/solana/index.js +1 -0
- package/dist/lib.esm/react/solana/provider.js +153 -0
- package/dist/lib.esm/react/wagmi/provider.js +8 -8
- package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -54
- package/dist/lib.esm/vue/Web3AuthProvider.js +7 -179
- package/dist/lib.esm/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +6 -6
- package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
- package/dist/lib.esm/vue/composables/useFunding.js +1 -1
- package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
- package/dist/lib.esm/vue/composables/useReceive.js +1 -1
- package/dist/lib.esm/vue/composables/useSwap.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
- package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
- package/dist/lib.esm/vue/composables/useWallets.js +35 -0
- package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
- package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
- package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
- package/dist/lib.esm/vue/index.js +5 -1
- package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignMessage.js +2 -1
- package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +3 -2
- package/dist/lib.esm/vue/solana/composables/useSolanaClient.js +12 -0
- package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +53 -35
- package/dist/lib.esm/vue/solana/constants.js +3 -0
- package/dist/lib.esm/vue/solana/index.js +3 -0
- package/dist/lib.esm/vue/solana/provider.js +99 -0
- package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
- package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +213 -0
- package/dist/lib.esm/vue/wagmi/provider.js +26 -12
- package/dist/lib.esm/x402/index.js +170 -0
- package/dist/lib.esm/x402/interfaces.js +3 -0
- package/dist/lib.esm/x402/react.js +59 -0
- package/dist/lib.esm/x402/vue.js +54 -0
- package/package.json +102 -53
- package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +0 -7
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -224
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -177
- package/dist/lib.cjs/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -21
- package/dist/lib.cjs/providers/ethereum-provider/providers/converter.js +0 -88
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -27
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -383
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -93
- package/dist/lib.cjs/providers/ethereum-provider/providers/utils.js +0 -29
- package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMidddleware.js +0 -251
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -65
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -45
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/utils.js +0 -16
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -103
- package/dist/lib.cjs/providers/solana-provider/rpc/JrpcClient.js +0 -47
- package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -97
- package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +0 -91
- package/dist/lib.cjs/types/connectors/injected-solana-connector/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +0 -74
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.d.ts +0 -12
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.d.ts +0 -3
- package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/interfaces.d.ts +0 -15
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/converter.d.ts +0 -14
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.d.ts +0 -16
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.d.ts +0 -28
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.d.ts +0 -46
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.d.ts +0 -11
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/ethereum-provider/providers/utils.d.ts +0 -5
- package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMidddleware.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/index.d.ts +0 -4
- package/dist/lib.cjs/types/providers/solana-provider/interface.d.ts +0 -22
- package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +0 -16
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/providerHandlers.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/index.d.ts +0 -2
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/JrpcClient.d.ts +0 -9
- package/dist/lib.cjs/types/providers/solana-provider/rpc/index.d.ts +0 -3
- package/dist/lib.cjs/types/providers/solana-provider/rpc/interfaces.d.ts +0 -27
- package/dist/lib.cjs/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +0 -20
- package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +0 -29
- package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +0 -1
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -206
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -163
- package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -20
- package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +0 -85
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -21
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -378
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -88
- package/dist/lib.esm/providers/ethereum-provider/providers/utils.js +0 -24
- package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +0 -258
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -47
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -43
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/utils.js +0 -14
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -91
- package/dist/lib.esm/providers/solana-provider/rpc/JrpcClient.js +0 -42
- package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -89
- package/dist/lib.esm/providers/solana-provider/solanaWallet.js +0 -92
- package/dist/noModal.umd.min.js +0 -2
- package/dist/noModal.umd.min.js.LICENSE.txt +0 -46
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import { CITADEL_SERVER_MAP } from '@toruslabs/constants';
|
|
4
|
+
import { get, put } from '@toruslabs/http-helpers';
|
|
3
5
|
import { SecurePubSub } from '@toruslabs/secure-pub-sub';
|
|
4
|
-
import { BUILD_ENV, UX_MODE, Auth, SDK_MODE, SUPPORTED_KEY_CURVES,
|
|
6
|
+
import { BUILD_ENV, UX_MODE, Auth, SDK_MODE, SUPPORTED_KEY_CURVES, generateRecordId, version, createHandler, PopupHandler, getUserId } from '@web3auth/auth';
|
|
5
7
|
import { WS_EMBED_LOGIN_MODE } from '@web3auth/ws-embed';
|
|
6
8
|
import deepmerge from 'deepmerge';
|
|
7
|
-
import { parseToken } from '../utils.js';
|
|
8
|
-
import {
|
|
9
|
+
import { generateNonce, parseToken } from '../utils.js';
|
|
10
|
+
import { AuthSolanaWallet } from './authSolanaWallet.js';
|
|
11
|
+
import { WalletLoginError, WalletInitializationError, Web3AuthError, AccountLinkingError } from '../../base/errors/index.js';
|
|
9
12
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
13
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
10
14
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
11
15
|
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
12
|
-
import {
|
|
16
|
+
import { Analytics, ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
13
17
|
import { log } from '../../base/loglevel.js';
|
|
18
|
+
import { citadelServerUrl, getCaipChainId, getErrorAnalyticsProperties, parseChainNamespaceFromCitadelResponse } from '../../base/utils.js';
|
|
14
19
|
import { CONNECTED_STATUSES } from '../../base/connector/connectorStatus.js';
|
|
20
|
+
import { makeAccountLinkingRequest, makeAccountUnlinkingRequest } from '../../account-linking/rest.js';
|
|
15
21
|
import { CHAIN_NAMESPACES, cloneDeep } from '@toruslabs/base-controllers';
|
|
16
|
-
import '@toruslabs/constants';
|
|
17
|
-
import '@toruslabs/http-helpers';
|
|
18
22
|
|
|
19
23
|
class AuthConnector extends BaseConnector {
|
|
20
24
|
constructor(params) {
|
|
@@ -33,6 +37,8 @@ class AuthConnector extends BaseConnector {
|
|
|
33
37
|
_defineProperty(this, "wsEmbedInstance", null);
|
|
34
38
|
_defineProperty(this, "authConnectionConfig", []);
|
|
35
39
|
_defineProperty(this, "wsEmbedInstancePromise", null);
|
|
40
|
+
_defineProperty(this, "_solanaWallet", null);
|
|
41
|
+
_defineProperty(this, "analytics", void 0);
|
|
36
42
|
this.authOptions = params.connectorSettings;
|
|
37
43
|
this.loginSettings = params.loginSettings || {
|
|
38
44
|
authConnection: ""
|
|
@@ -41,6 +47,7 @@ class AuthConnector extends BaseConnector {
|
|
|
41
47
|
loginMode: WS_EMBED_LOGIN_MODE.PLUGIN
|
|
42
48
|
};
|
|
43
49
|
this.authConnectionConfig = params.authConnectionConfig || [];
|
|
50
|
+
this.analytics = params.analytics || new Analytics();
|
|
44
51
|
}
|
|
45
52
|
get provider() {
|
|
46
53
|
if (this.status !== CONNECTOR_STATUS.NOT_READY) {
|
|
@@ -54,6 +61,9 @@ class AuthConnector extends BaseConnector {
|
|
|
54
61
|
get wsEmbed() {
|
|
55
62
|
return this.wsEmbedInstance;
|
|
56
63
|
}
|
|
64
|
+
get solanaWallet() {
|
|
65
|
+
return this._solanaWallet;
|
|
66
|
+
}
|
|
57
67
|
set provider(_) {
|
|
58
68
|
throw new Error("Not implemented");
|
|
59
69
|
}
|
|
@@ -88,7 +98,7 @@ class AuthConnector extends BaseConnector {
|
|
|
88
98
|
// making it async here to initialize provider.
|
|
89
99
|
const authInstancePromise = this.authInstance.init();
|
|
90
100
|
|
|
91
|
-
// Use this for xrpl
|
|
101
|
+
// Use this for xrpl cases
|
|
92
102
|
if (this.coreOptions.privateKeyProvider) {
|
|
93
103
|
this.privateKeyProvider = this.coreOptions.privateKeyProvider;
|
|
94
104
|
} else {
|
|
@@ -110,6 +120,7 @@ class AuthConnector extends BaseConnector {
|
|
|
110
120
|
loginMode: WS_EMBED_LOGIN_MODE.PLUGIN,
|
|
111
121
|
chains: wsSupportedChains,
|
|
112
122
|
chainId,
|
|
123
|
+
buildEnv: this.authOptions.buildEnv,
|
|
113
124
|
whiteLabel: _objectSpread(_objectSpread({}, this.authOptions.whiteLabel), this.wsSettings.whiteLabel)
|
|
114
125
|
})).then(() => {
|
|
115
126
|
this.wsEmbedInstancePromise = null;
|
|
@@ -148,7 +159,7 @@ class AuthConnector extends BaseConnector {
|
|
|
148
159
|
this.rehydrated = true;
|
|
149
160
|
await this.connect({
|
|
150
161
|
chainId: options.chainId,
|
|
151
|
-
|
|
162
|
+
getAuthTokenInfo: options.getAuthTokenInfo
|
|
152
163
|
});
|
|
153
164
|
} else if (!sessionId && options.autoConnect) {
|
|
154
165
|
// if here, this means that the connector is cached but the sessionId is not available.
|
|
@@ -168,7 +179,11 @@ class AuthConnector extends BaseConnector {
|
|
|
168
179
|
}));
|
|
169
180
|
try {
|
|
170
181
|
await this.connectWithProvider(params);
|
|
171
|
-
return
|
|
182
|
+
return {
|
|
183
|
+
ethereumProvider: this.provider,
|
|
184
|
+
solanaWallet: this._solanaWallet,
|
|
185
|
+
connectorName: this.name
|
|
186
|
+
};
|
|
172
187
|
} catch (error) {
|
|
173
188
|
var _message;
|
|
174
189
|
log.error("Failed to connect with auth provider", error);
|
|
@@ -233,9 +248,12 @@ class AuthConnector extends BaseConnector {
|
|
|
233
248
|
this.status = CONNECTOR_STATUS.READY;
|
|
234
249
|
}
|
|
235
250
|
this.rehydrated = false;
|
|
236
|
-
this.
|
|
251
|
+
this._solanaWallet = null;
|
|
252
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
|
|
253
|
+
connector: WALLET_CONNECTORS.AUTH
|
|
254
|
+
});
|
|
237
255
|
}
|
|
238
|
-
async
|
|
256
|
+
async getAuthTokenInfo() {
|
|
239
257
|
if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
240
258
|
this.status = CONNECTOR_STATUS.AUTHORIZING;
|
|
241
259
|
this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
@@ -243,57 +261,66 @@ class AuthConnector extends BaseConnector {
|
|
|
243
261
|
});
|
|
244
262
|
const userInfo = await this.getUserInfo();
|
|
245
263
|
this.status = CONNECTOR_STATUS.AUTHORIZED;
|
|
264
|
+
const [accessToken, refreshToken] = await Promise.all([this.authInstance.authSessionManager.getAccessToken(), this.authInstance.authSessionManager.getRefreshToken()]);
|
|
246
265
|
this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
|
|
247
266
|
connector: WALLET_CONNECTORS.AUTH,
|
|
248
|
-
|
|
249
|
-
idToken: userInfo.idToken
|
|
267
|
+
authTokenInfo: {
|
|
268
|
+
idToken: userInfo.idToken,
|
|
269
|
+
accessToken,
|
|
270
|
+
refreshToken
|
|
250
271
|
}
|
|
251
272
|
});
|
|
252
273
|
return {
|
|
253
|
-
idToken: userInfo.idToken
|
|
274
|
+
idToken: userInfo.idToken,
|
|
275
|
+
accessToken,
|
|
276
|
+
refreshToken
|
|
254
277
|
};
|
|
255
278
|
}
|
|
256
279
|
async getUserInfo() {
|
|
257
280
|
if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet");
|
|
258
281
|
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
259
|
-
const userInfo = this.authInstance.getUserInfo();
|
|
260
|
-
return userInfo
|
|
282
|
+
const [userInfo, linkedAccounts] = await Promise.all([this.authInstance.getUserInfo(), this.getLinkedAccounts()]);
|
|
283
|
+
return _objectSpread(_objectSpread({}, userInfo), {}, {
|
|
284
|
+
linkedAccounts
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
async getLinkedAccounts() {
|
|
288
|
+
const accessToken = await this.authInstance.authSessionManager.getAccessToken();
|
|
289
|
+
if (!accessToken) throw WalletLoginError.connectionError("Could not obtain an access token from the current AUTH session.");
|
|
290
|
+
const citadelUserInfo = await get(`${citadelServerUrl(this.coreOptions.authBuildEnv)}/v1/user`, {
|
|
291
|
+
headers: {
|
|
292
|
+
Authorization: `Bearer ${accessToken}`
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
const linkedAccounts = (citadelUserInfo === null || citadelUserInfo === void 0 ? void 0 : citadelUserInfo.accounts) || [];
|
|
296
|
+
return linkedAccounts.map(account => _objectSpread(_objectSpread({}, account), {}, {
|
|
297
|
+
// by default, the primary account is the active account
|
|
298
|
+
active: account.isPrimary
|
|
299
|
+
}));
|
|
261
300
|
}
|
|
262
|
-
|
|
263
|
-
// we don't support switching between different namespaces, except for solana and evm
|
|
264
301
|
async switchChain(params, init = false) {
|
|
265
302
|
super.checkSwitchChainRequirements(params, init);
|
|
266
|
-
// get chains and namespaces
|
|
267
303
|
const {
|
|
268
304
|
chainId: newChainId
|
|
269
305
|
} = params;
|
|
270
306
|
const {
|
|
271
307
|
chainId: currentChainId
|
|
272
308
|
} = this.provider;
|
|
273
|
-
const {
|
|
274
|
-
chainNamespace: currentNamespace
|
|
275
|
-
} = this.getChain(currentChainId);
|
|
276
|
-
const {
|
|
277
|
-
chainNamespace: newNamespace
|
|
278
|
-
} = this.getChain(newChainId);
|
|
279
|
-
|
|
280
|
-
// skip if chainId is the same
|
|
281
309
|
if (currentChainId === newChainId) return;
|
|
282
|
-
|
|
310
|
+
const newChainConfig = this.coreOptions.chains.find(c => c.chainId === newChainId);
|
|
311
|
+
if (!newChainConfig) throw WalletInitializationError.invalidParams("Chain config is not available");
|
|
312
|
+
if (newChainConfig.chainNamespace === CHAIN_NAMESPACES.SOLANA || newChainConfig.chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
283
313
|
var _this$wsEmbedInstance2;
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
await ((_this$wsEmbedInstance2 = this.wsEmbedInstance.provider) === null || _this$wsEmbedInstance2 === void 0 ? void 0 : _this$wsEmbedInstance2.request({
|
|
314
|
+
if (!((_this$wsEmbedInstance2 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance2 !== void 0 && _this$wsEmbedInstance2.provider)) throw WalletInitializationError.notReady("Wallet embed is not ready");
|
|
315
|
+
const fullChainId = getCaipChainId(newChainConfig);
|
|
316
|
+
await this.wsEmbedInstance.provider.request({
|
|
288
317
|
method: "wallet_switchChain",
|
|
289
318
|
params: {
|
|
290
319
|
chainId: fullChainId
|
|
291
320
|
}
|
|
292
|
-
})
|
|
321
|
+
});
|
|
293
322
|
} else {
|
|
294
323
|
var _this$privateKeyProvi;
|
|
295
|
-
// cannot switch to other namespaces
|
|
296
|
-
if (currentNamespace !== newNamespace) throw WalletLoginError.connectionError("Cannot switch to other chain namespace");
|
|
297
324
|
await ((_this$privateKeyProvi = this.privateKeyProvider) === null || _this$privateKeyProvi === void 0 ? void 0 : _this$privateKeyProvi.switchChain(params));
|
|
298
325
|
}
|
|
299
326
|
}
|
|
@@ -322,8 +349,351 @@ class AuthConnector extends BaseConnector {
|
|
|
322
349
|
});
|
|
323
350
|
return providerConfig;
|
|
324
351
|
}
|
|
325
|
-
|
|
326
|
-
|
|
352
|
+
async generateChallengeAndSign() {
|
|
353
|
+
// we do not support this for auth connector, as of now. since auth login returns a valid idToken
|
|
354
|
+
throw new Error("Not implemented");
|
|
355
|
+
}
|
|
356
|
+
async switchAccount(account, context) {
|
|
357
|
+
if (!CONNECTED_STATUSES.includes(this.status)) {
|
|
358
|
+
throw WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before switching accounts.");
|
|
359
|
+
}
|
|
360
|
+
try {
|
|
361
|
+
var _userInfo$linkedAccou;
|
|
362
|
+
const userInfo = await this.getUserInfo();
|
|
363
|
+
const linkedAccounts = (_userInfo$linkedAccou = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou !== void 0 ? _userInfo$linkedAccou : [];
|
|
364
|
+
const targetAccount = linkedAccounts.find(candidate => candidate.id === account.id);
|
|
365
|
+
if (!targetAccount) {
|
|
366
|
+
throw AccountLinkingError.requestFailed(`No connected wallet matches account id "${account.id}". Refresh user info and try again.`);
|
|
367
|
+
}
|
|
368
|
+
const currentActiveAccount = context.activeAccount;
|
|
369
|
+
const isTargetAlreadyActive = currentActiveAccount ? currentActiveAccount.id === targetAccount.id : targetAccount.isPrimary;
|
|
370
|
+
if (isTargetAlreadyActive) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_SWITCH_STARTED, this.getSwitchAccountTrackData(targetAccount));
|
|
374
|
+
if (targetAccount.connector === WALLET_CONNECTORS.AUTH && targetAccount.isPrimary) {
|
|
375
|
+
var _this$provider$chainI, _this$provider;
|
|
376
|
+
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);
|
|
377
|
+
const ethereumProvider = this.provider;
|
|
378
|
+
const solanaWallet = this.solanaWallet;
|
|
379
|
+
if (!ethereumProvider && !solanaWallet) {
|
|
380
|
+
throw AccountLinkingError.requestFailed("Failed to restore the primary AUTH session for account switch.");
|
|
381
|
+
}
|
|
382
|
+
return {
|
|
383
|
+
kind: "primary",
|
|
384
|
+
targetAccount,
|
|
385
|
+
activeAccount: null,
|
|
386
|
+
activeChainId,
|
|
387
|
+
connectorName: this.name,
|
|
388
|
+
connectorNamespace: this.connectorNamespace,
|
|
389
|
+
ethereumProvider,
|
|
390
|
+
solanaWallet
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
return {
|
|
394
|
+
kind: "external",
|
|
395
|
+
targetAccount,
|
|
396
|
+
activeAccount: targetAccount,
|
|
397
|
+
activeChainId: this.getChainIdForLinkedAccount(targetAccount, context.currentChainId)
|
|
398
|
+
};
|
|
399
|
+
} catch (error) {
|
|
400
|
+
await this.trackSwitchAccountFailed(account, error);
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
async trackSwitchAccountCompleted(account) {
|
|
405
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_SWITCH_COMPLETED, _objectSpread(_objectSpread({}, this.getSwitchAccountTrackData(account)), {}, {
|
|
406
|
+
connector: account.connector
|
|
407
|
+
}));
|
|
408
|
+
}
|
|
409
|
+
async trackSwitchAccountFailed(account, error) {
|
|
410
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_SWITCH_FAILED, _objectSpread(_objectSpread({}, this.getSwitchAccountTrackData(account)), getErrorAnalyticsProperties(error)));
|
|
411
|
+
}
|
|
412
|
+
async linkAccount(params) {
|
|
413
|
+
if (!CONNECTED_STATUSES.includes(this.status)) {
|
|
414
|
+
throw WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before linking an account.");
|
|
415
|
+
}
|
|
416
|
+
const {
|
|
417
|
+
connectorName,
|
|
418
|
+
chainId,
|
|
419
|
+
walletConnector
|
|
420
|
+
} = params;
|
|
421
|
+
try {
|
|
422
|
+
if (!walletConnector.connected) {
|
|
423
|
+
const connection = await walletConnector.connect({
|
|
424
|
+
chainId,
|
|
425
|
+
isAccountLinking: true
|
|
426
|
+
});
|
|
427
|
+
if (!connection) {
|
|
428
|
+
throw AccountLinkingError.walletProofFailed(`Failed to connect to "${params.connectorName}" for account linking.`);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
} catch (error) {
|
|
432
|
+
if (error instanceof AccountLinkingError) {
|
|
433
|
+
throw error;
|
|
434
|
+
}
|
|
435
|
+
throw AccountLinkingError.walletProofFailed(error instanceof Error ? error.message : String(error), error);
|
|
436
|
+
}
|
|
437
|
+
const trackData = {
|
|
438
|
+
connector: this.name,
|
|
439
|
+
linking_connector: connectorName,
|
|
440
|
+
chain_id: params.chainId
|
|
441
|
+
};
|
|
442
|
+
try {
|
|
443
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_LINKING_STARTED, trackData);
|
|
444
|
+
const {
|
|
445
|
+
accessToken,
|
|
446
|
+
idToken
|
|
447
|
+
} = await this.getPrimaryAuthSession(params.authSessionTokens);
|
|
448
|
+
const walletProof = await this.createWalletLinkingProof(params.walletConnector);
|
|
449
|
+
const authServerUrl = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
450
|
+
const result = await makeAccountLinkingRequest(authServerUrl, accessToken, {
|
|
451
|
+
idToken,
|
|
452
|
+
network: walletProof.network,
|
|
453
|
+
connector: params.connectorName,
|
|
454
|
+
message: walletProof.challenge,
|
|
455
|
+
signature: {
|
|
456
|
+
s: walletProof.signature,
|
|
457
|
+
t: walletProof.signatureType
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_LINKING_COMPLETED, _objectSpread(_objectSpread({}, trackData), {}, {
|
|
461
|
+
linked_address: walletProof.address
|
|
462
|
+
}));
|
|
463
|
+
return result;
|
|
464
|
+
} catch (error) {
|
|
465
|
+
this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_LINKING_FAILED, _objectSpread(_objectSpread({}, trackData), getErrorAnalyticsProperties(error)));
|
|
466
|
+
|
|
467
|
+
// disconnect the wallet connector to avoid any leftover state
|
|
468
|
+
try {
|
|
469
|
+
await walletConnector.disconnect({
|
|
470
|
+
cleanup: true
|
|
471
|
+
});
|
|
472
|
+
} catch (disconnectError) {
|
|
473
|
+
log.debug("Failed to disconnect wallet connector after linking failure", disconnectError);
|
|
474
|
+
}
|
|
475
|
+
throw error;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
async unlinkAccount(params) {
|
|
479
|
+
if (!CONNECTED_STATUSES.includes(this.status)) {
|
|
480
|
+
throw WalletLoginError.notConnectedError("No wallet is connected. Connect with AUTH before unlinking an account.");
|
|
481
|
+
}
|
|
482
|
+
const {
|
|
483
|
+
address,
|
|
484
|
+
authSessionTokens
|
|
485
|
+
} = params;
|
|
486
|
+
const trackData = {
|
|
487
|
+
connector: this.name,
|
|
488
|
+
address
|
|
489
|
+
};
|
|
490
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_UNLINKING_STARTED, trackData);
|
|
491
|
+
try {
|
|
492
|
+
const {
|
|
493
|
+
accessToken,
|
|
494
|
+
idToken,
|
|
495
|
+
linkedAccounts
|
|
496
|
+
} = await this.getPrimaryAuthSession(authSessionTokens, {
|
|
497
|
+
includeLinkedAccounts: true
|
|
498
|
+
});
|
|
499
|
+
const network = this.getNetworkForUnlinkAddress(linkedAccounts, address);
|
|
500
|
+
const authServerUrl = citadelServerUrl(this.coreOptions.authBuildEnv);
|
|
501
|
+
const result = await makeAccountUnlinkingRequest(authServerUrl, accessToken, {
|
|
502
|
+
idToken,
|
|
503
|
+
address,
|
|
504
|
+
network
|
|
505
|
+
});
|
|
506
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_UNLINKING_COMPLETED, _objectSpread(_objectSpread({}, trackData), {}, {
|
|
507
|
+
linked_address: address
|
|
508
|
+
}));
|
|
509
|
+
return result;
|
|
510
|
+
} catch (error) {
|
|
511
|
+
await this.analytics.track(ANALYTICS_EVENTS.ACCOUNT_UNLINKING_FAILED, _objectSpread(_objectSpread({}, trackData), getErrorAnalyticsProperties(error)));
|
|
512
|
+
throw error;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
getChainIdForLinkedAccount(account, preferredChainId) {
|
|
516
|
+
const accountChainNamespace = account.chainNamespace ? parseChainNamespaceFromCitadelResponse(account.chainNamespace) : null;
|
|
517
|
+
if (preferredChainId) {
|
|
518
|
+
const preferredChain = this.coreOptions.chains.find(chain => chain.chainId === preferredChainId);
|
|
519
|
+
if (preferredChain && (!accountChainNamespace || preferredChain.chainNamespace === accountChainNamespace)) {
|
|
520
|
+
return preferredChainId;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
if (accountChainNamespace) {
|
|
524
|
+
const namespaceChain = this.coreOptions.chains.find(chain => chain.chainNamespace === accountChainNamespace);
|
|
525
|
+
if (namespaceChain) {
|
|
526
|
+
return namespaceChain.chainId;
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
throw WalletInitializationError.invalidParams(`No compatible chainId found for connector "${account.connector}".`);
|
|
530
|
+
}
|
|
531
|
+
async assertSwitchAccountConnectorMatchesTarget(connector, account) {
|
|
532
|
+
if (!account.chainNamespace) {
|
|
533
|
+
throw AccountLinkingError.requestFailed(`Could not determine the chain namespace for linked account "${account.eoaAddress}".`);
|
|
534
|
+
}
|
|
535
|
+
const chainNamespace = parseChainNamespaceFromCitadelResponse(account.chainNamespace);
|
|
536
|
+
let connectedAddress = null;
|
|
537
|
+
if (chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
538
|
+
var _accounts$;
|
|
539
|
+
const accounts = connector.provider ? await connector.provider.request({
|
|
540
|
+
method: "eth_accounts"
|
|
541
|
+
}) : [];
|
|
542
|
+
connectedAddress = (_accounts$ = accounts === null || accounts === void 0 ? void 0 : accounts[0]) !== null && _accounts$ !== void 0 ? _accounts$ : null;
|
|
543
|
+
} else if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
544
|
+
var _connector$solanaWall, _connector$solanaWall2;
|
|
545
|
+
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;
|
|
546
|
+
} else {
|
|
547
|
+
throw AccountLinkingError.requestFailed(`Unsupported chain namespace "${account.chainNamespace}" for linked account "${account.eoaAddress}".`);
|
|
548
|
+
}
|
|
549
|
+
if (!connectedAddress) {
|
|
550
|
+
throw AccountLinkingError.requestFailed(`Connector "${account.connector}" is not connected to linked account "${account.eoaAddress}". Connect the intended wallet account and try again.`);
|
|
551
|
+
}
|
|
552
|
+
const isExpectedAddress = chainNamespace === CHAIN_NAMESPACES.EIP155 ? connectedAddress.toLowerCase() === account.eoaAddress.toLowerCase() : connectedAddress === account.eoaAddress;
|
|
553
|
+
if (!isExpectedAddress) {
|
|
554
|
+
throw AccountLinkingError.requestFailed(`Connector "${account.connector}" is connected to "${connectedAddress}" instead of linked account "${account.eoaAddress}". Connect the intended wallet account and try again.`);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
toSwitchAccountConnectorError(account, error) {
|
|
558
|
+
if (error instanceof AccountLinkingError && error.code === 5401) {
|
|
559
|
+
return error;
|
|
560
|
+
}
|
|
561
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
562
|
+
const isUnavailableConnectorError = error instanceof AccountLinkingError && error.code === 5405 || /not available|not initialized|not ready/i.test(message);
|
|
563
|
+
if (isUnavailableConnectorError) {
|
|
564
|
+
return 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);
|
|
565
|
+
}
|
|
566
|
+
return AccountLinkingError.requestFailed(`Failed to connect connector "${account.connector}" for linked account "${account.eoaAddress}". ${message}`, error);
|
|
567
|
+
}
|
|
568
|
+
getSwitchAccountTrackData(account) {
|
|
569
|
+
var _account$eoaAddress;
|
|
570
|
+
return {
|
|
571
|
+
connector: this.name,
|
|
572
|
+
account_id: account.id,
|
|
573
|
+
account_type: account.accountType,
|
|
574
|
+
switched_to_address: (_account$eoaAddress = account.eoaAddress) !== null && _account$eoaAddress !== void 0 ? _account$eoaAddress : null
|
|
575
|
+
};
|
|
576
|
+
}
|
|
577
|
+
async getPrimaryAuthSession(authSessionTokens, options = {}) {
|
|
578
|
+
const {
|
|
579
|
+
accessToken: cachedAccessToken,
|
|
580
|
+
idToken: cachedIdToken
|
|
581
|
+
} = authSessionTokens;
|
|
582
|
+
const {
|
|
583
|
+
includeLinkedAccounts = false
|
|
584
|
+
} = options;
|
|
585
|
+
let accessToken = cachedAccessToken;
|
|
586
|
+
let idToken = cachedIdToken;
|
|
587
|
+
let linkedAccounts = [];
|
|
588
|
+
if (includeLinkedAccounts) {
|
|
589
|
+
const userInfoPromise = this.getUserInfo();
|
|
590
|
+
if (!accessToken || !idToken) {
|
|
591
|
+
var _userInfo$linkedAccou2;
|
|
592
|
+
const [tokenInfo, userInfo] = await Promise.all([this.getAuthTokenInfo(), userInfoPromise]);
|
|
593
|
+
accessToken = tokenInfo.accessToken;
|
|
594
|
+
idToken = tokenInfo.idToken;
|
|
595
|
+
linkedAccounts = (_userInfo$linkedAccou2 = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou2 !== void 0 ? _userInfo$linkedAccou2 : [];
|
|
596
|
+
} else {
|
|
597
|
+
var _userInfo$linkedAccou3;
|
|
598
|
+
const userInfo = await userInfoPromise;
|
|
599
|
+
linkedAccounts = (_userInfo$linkedAccou3 = userInfo.linkedAccounts) !== null && _userInfo$linkedAccou3 !== void 0 ? _userInfo$linkedAccou3 : [];
|
|
600
|
+
}
|
|
601
|
+
} else if (!accessToken || !idToken) {
|
|
602
|
+
const tokenInfo = await this.getAuthTokenInfo();
|
|
603
|
+
accessToken = tokenInfo.accessToken;
|
|
604
|
+
idToken = tokenInfo.idToken;
|
|
605
|
+
}
|
|
606
|
+
if (!accessToken || !idToken) {
|
|
607
|
+
throw AccountLinkingError.primaryTokenNotAvailable("Could not obtain an identity token from the current AUTH session.");
|
|
608
|
+
}
|
|
609
|
+
return {
|
|
610
|
+
accessToken,
|
|
611
|
+
idToken,
|
|
612
|
+
linkedAccounts
|
|
613
|
+
};
|
|
614
|
+
}
|
|
615
|
+
getNetworkForUnlinkAddress(accounts, address) {
|
|
616
|
+
const matchedAccount = accounts.find(account => {
|
|
617
|
+
var _account$address, _account$eoaAddress2;
|
|
618
|
+
if (!account.chainNamespace || parseChainNamespaceFromCitadelResponse(account.chainNamespace) !== CHAIN_NAMESPACES.EIP155) {
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
621
|
+
const normalizedAddress = address.toLowerCase();
|
|
622
|
+
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;
|
|
623
|
+
});
|
|
624
|
+
if (!matchedAccount) {
|
|
625
|
+
throw AccountLinkingError.requestFailed(`No connected wallet matches address "${address}".`);
|
|
626
|
+
}
|
|
627
|
+
if (!matchedAccount.chainNamespace) {
|
|
628
|
+
throw AccountLinkingError.requestFailed(`Could not determine the chain namespace for address "${address}".`);
|
|
629
|
+
}
|
|
630
|
+
const chainNamespace = parseChainNamespaceFromCitadelResponse(matchedAccount.chainNamespace);
|
|
631
|
+
if (chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
632
|
+
return "ethereum";
|
|
633
|
+
}
|
|
634
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
635
|
+
return "solana";
|
|
636
|
+
}
|
|
637
|
+
throw AccountLinkingError.requestFailed(`Unsupported chain namespace "${matchedAccount.chainNamespace}" for address "${address}".`);
|
|
638
|
+
}
|
|
639
|
+
async createWalletLinkingProof(connector) {
|
|
640
|
+
// Notify listeners that the linking wallet is about to be asked for a signature so the UI
|
|
641
|
+
// (e.g. modal) can switch from a "connecting" loader to an "authorizing" prompt while the
|
|
642
|
+
// user reviews the signature request inside their wallet. Emitted on the isolated wallet
|
|
643
|
+
// connector (not the auth connector) so it doesn't mutate the global SDK status.
|
|
644
|
+
connector.emit(CONNECTOR_EVENTS.AUTHORIZING, {
|
|
645
|
+
connector: connector.name
|
|
646
|
+
});
|
|
647
|
+
const {
|
|
648
|
+
challenge,
|
|
649
|
+
signature,
|
|
650
|
+
chainNamespace
|
|
651
|
+
} = await connector.generateChallengeAndSign();
|
|
652
|
+
const address = await this.getLinkingWalletAddress(connector, chainNamespace);
|
|
653
|
+
if (chainNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
654
|
+
return {
|
|
655
|
+
address,
|
|
656
|
+
challenge,
|
|
657
|
+
signature,
|
|
658
|
+
signatureType: "eip191",
|
|
659
|
+
network: "ethereum"
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
663
|
+
return {
|
|
664
|
+
address,
|
|
665
|
+
challenge,
|
|
666
|
+
signature,
|
|
667
|
+
signatureType: "sip99",
|
|
668
|
+
network: "solana"
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
throw AccountLinkingError.unsupportedConnector(`Connector "${connector.name}" returned unsupported chain namespace "${chainNamespace}".`);
|
|
672
|
+
}
|
|
673
|
+
async getLinkingWalletAddress(connector, chainNamespace) {
|
|
674
|
+
if (chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
675
|
+
var _connector$solanaWall3;
|
|
676
|
+
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;
|
|
677
|
+
if (!address) {
|
|
678
|
+
throw AccountLinkingError.walletProofFailed("No connected Solana account found for account linking.");
|
|
679
|
+
}
|
|
680
|
+
return address;
|
|
681
|
+
}
|
|
682
|
+
if (!connector.provider) {
|
|
683
|
+
throw AccountLinkingError.walletProofFailed("No connected EVM account found for account linking.");
|
|
684
|
+
}
|
|
685
|
+
const accounts = await connector.provider.request({
|
|
686
|
+
method: "eth_accounts"
|
|
687
|
+
});
|
|
688
|
+
if (!(accounts !== null && accounts !== void 0 && accounts.length)) {
|
|
689
|
+
throw AccountLinkingError.walletProofFailed("No connected EVM account found for account linking.");
|
|
690
|
+
}
|
|
691
|
+
return accounts[0];
|
|
692
|
+
}
|
|
693
|
+
setupSolanaWallet() {
|
|
694
|
+
const solanaChains = this.coreOptions.chains.filter(c => c.chainNamespace === CHAIN_NAMESPACES.SOLANA);
|
|
695
|
+
if (solanaChains.length === 0 || !this.provider) return;
|
|
696
|
+
this._solanaWallet = new AuthSolanaWallet(this.provider, solanaChains);
|
|
327
697
|
}
|
|
328
698
|
_getFinalPrivKey() {
|
|
329
699
|
if (!this.authInstance) return "";
|
|
@@ -384,24 +754,26 @@ class AuthConnector extends BaseConnector {
|
|
|
384
754
|
sessionNamespace
|
|
385
755
|
} = this.authInstance || {};
|
|
386
756
|
if (sessionId) {
|
|
387
|
-
|
|
757
|
+
this.wsEmbedInstance.setAccessTokenProvider(this.accessTokenProvider.bind(this));
|
|
758
|
+
const isLoggedIn = await this.wsEmbedInstance.connectWithSession({
|
|
388
759
|
sessionId,
|
|
389
|
-
sessionNamespace
|
|
760
|
+
sessionNamespace,
|
|
761
|
+
idToken: await this.getIdToken()
|
|
390
762
|
});
|
|
391
763
|
if (isLoggedIn) {
|
|
392
764
|
var _this$wsEmbedInstance3;
|
|
393
|
-
|
|
394
|
-
//
|
|
395
|
-
|
|
765
|
+
this.setupSolanaWallet();
|
|
766
|
+
// if getAuthTokenInfo is true, then get auth token info
|
|
767
|
+
// No need to get auth token info for auth connector as it is already handled
|
|
396
768
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
397
769
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
398
|
-
|
|
770
|
+
connectorName: WALLET_CONNECTORS.AUTH,
|
|
399
771
|
reconnected: this.rehydrated,
|
|
400
|
-
|
|
401
|
-
|
|
772
|
+
ethereumProvider: this.provider,
|
|
773
|
+
solanaWallet: this._solanaWallet
|
|
402
774
|
});
|
|
403
|
-
if (params.
|
|
404
|
-
|
|
775
|
+
if (params.getAuthTokenInfo) {
|
|
776
|
+
await this.getAuthTokenInfo();
|
|
405
777
|
}
|
|
406
778
|
// handle disconnect from ws embed
|
|
407
779
|
(_this$wsEmbedInstance3 = this.wsEmbedInstance) === null || _this$wsEmbedInstance3 === void 0 || _this$wsEmbedInstance3.provider.on("accountsChanged", (accounts = []) => {
|
|
@@ -418,9 +790,10 @@ class AuthConnector extends BaseConnector {
|
|
|
418
790
|
await this.privateKeyProvider.setupProvider(finalPrivKey, params.chainId);
|
|
419
791
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
420
792
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
793
|
+
connectorName: WALLET_CONNECTORS.AUTH,
|
|
794
|
+
ethereumProvider: this.provider,
|
|
795
|
+
solanaWallet: this._solanaWallet,
|
|
796
|
+
reconnected: this.rehydrated
|
|
424
797
|
});
|
|
425
798
|
}
|
|
426
799
|
}
|
|
@@ -436,10 +809,13 @@ class AuthConnector extends BaseConnector {
|
|
|
436
809
|
const jwtParams = _objectSpread(_objectSpread(_objectSpread({}, providerConfig.jwtParameters || {}), params.extraLoginOptions || {}), {}, {
|
|
437
810
|
login_hint: params.loginHint || ((_params$extraLoginOpt3 = params.extraLoginOptions) === null || _params$extraLoginOpt3 === void 0 ? void 0 : _params$extraLoginOpt3.login_hint)
|
|
438
811
|
});
|
|
439
|
-
const nonce =
|
|
812
|
+
const nonce = generateNonce();
|
|
440
813
|
|
|
441
814
|
// post a message to the auth provider to indicate that login has been initiated.
|
|
442
|
-
const loginParams = cloneDeep(params)
|
|
815
|
+
const loginParams = _objectSpread(_objectSpread({}, cloneDeep(params)), {}, {
|
|
816
|
+
recordId: generateRecordId(),
|
|
817
|
+
loginSource: "web3auth-web"
|
|
818
|
+
});
|
|
443
819
|
loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, loginParams.extraLoginOptions || {}), {}, {
|
|
444
820
|
login_hint: params.loginHint || ((_params$extraLoginOpt4 = params.extraLoginOptions) === null || _params$extraLoginOpt4 === void 0 ? void 0 : _params$extraLoginOpt4.login_hint)
|
|
445
821
|
});
|
|
@@ -462,10 +838,11 @@ class AuthConnector extends BaseConnector {
|
|
|
462
838
|
version: version.split(".")[0],
|
|
463
839
|
web3AuthNetwork: this.coreOptions.web3AuthNetwork,
|
|
464
840
|
web3AuthClientId: this.coreOptions.clientId,
|
|
465
|
-
originData: this.
|
|
841
|
+
originData: this.getOriginData()
|
|
466
842
|
},
|
|
467
843
|
web3AuthClientId: this.coreOptions.clientId,
|
|
468
|
-
web3AuthNetwork: this.coreOptions.web3AuthNetwork
|
|
844
|
+
web3AuthNetwork: this.coreOptions.web3AuthNetwork,
|
|
845
|
+
storageServerUrl: this.authInstance.options.storageServerUrl
|
|
469
846
|
};
|
|
470
847
|
const loginHandler = createHandler(popupParams);
|
|
471
848
|
const verifierWindow = new PopupHandler({
|
|
@@ -474,6 +851,9 @@ class AuthConnector extends BaseConnector {
|
|
|
474
851
|
});
|
|
475
852
|
if (this.authOptions.uxMode === UX_MODE.REDIRECT) return verifierWindow.redirect(this.authOptions.replaceUrlOnRedirect);
|
|
476
853
|
let isClosedWindow = false;
|
|
854
|
+
this.auditOAuditProgress(loginParams).catch(error => {
|
|
855
|
+
log.error("Error reporting `oauthInitiated` audit progress", error);
|
|
856
|
+
});
|
|
477
857
|
return new Promise((resolve, reject) => {
|
|
478
858
|
verifierWindow.open().catch(error => {
|
|
479
859
|
log.error("Error during login with social", error);
|
|
@@ -483,7 +863,9 @@ class AuthConnector extends BaseConnector {
|
|
|
483
863
|
|
|
484
864
|
// this is to close the popup when the login is finished.
|
|
485
865
|
const securePubSub = new SecurePubSub({
|
|
486
|
-
sameIpCheck: true
|
|
866
|
+
sameIpCheck: true,
|
|
867
|
+
serverUrl: this.authInstance.options.storageServerUrl,
|
|
868
|
+
socketUrl: this.authInstance.options.sessionSocketUrl
|
|
487
869
|
});
|
|
488
870
|
securePubSub.subscribe(`web3auth-login-${nonce}`).then(data => {
|
|
489
871
|
const parsedData = JSON.parse(data || "{}");
|
|
@@ -500,6 +882,9 @@ class AuthConnector extends BaseConnector {
|
|
|
500
882
|
}).catch(error => {
|
|
501
883
|
// swallow the error, dont need to throw.
|
|
502
884
|
log.error("Error during login with social", error);
|
|
885
|
+
this.auditOAuditProgress(loginParams, "failed").catch(error => {
|
|
886
|
+
log.error("Error reporting `oauthFailed` audit progress", error);
|
|
887
|
+
});
|
|
503
888
|
});
|
|
504
889
|
verifierWindow.once("close", () => {
|
|
505
890
|
if (!isClosedWindow) {
|
|
@@ -509,6 +894,9 @@ class AuthConnector extends BaseConnector {
|
|
|
509
894
|
}
|
|
510
895
|
});
|
|
511
896
|
this.authInstance.postLoginInitiatedMessage(loginParams, nonce).then(resolve).catch(error => {
|
|
897
|
+
this.auditOAuditProgress(loginParams, "failed").catch(error => {
|
|
898
|
+
log.error("Error reporting `oauthFailed` audit progress", error);
|
|
899
|
+
});
|
|
512
900
|
if (error instanceof Web3AuthError) {
|
|
513
901
|
throw error;
|
|
514
902
|
}
|
|
@@ -516,6 +904,39 @@ class AuthConnector extends BaseConnector {
|
|
|
516
904
|
});
|
|
517
905
|
});
|
|
518
906
|
}
|
|
907
|
+
async accessTokenProvider({
|
|
908
|
+
forceRefresh
|
|
909
|
+
}) {
|
|
910
|
+
if (forceRefresh) {
|
|
911
|
+
await this.authInstance.refreshSession();
|
|
912
|
+
}
|
|
913
|
+
return this.authInstance.getAccessToken();
|
|
914
|
+
}
|
|
915
|
+
async getIdToken() {
|
|
916
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
917
|
+
return this.authInstance.authSessionManager.getIdToken();
|
|
918
|
+
}
|
|
919
|
+
getOriginData() {
|
|
920
|
+
try {
|
|
921
|
+
const {
|
|
922
|
+
originData,
|
|
923
|
+
redirectUrl
|
|
924
|
+
} = this.authInstance.options;
|
|
925
|
+
const origin = new URL(redirectUrl).origin;
|
|
926
|
+
if (originData) {
|
|
927
|
+
const dappOriginData = originData[origin];
|
|
928
|
+
if (dappOriginData) {
|
|
929
|
+
return JSON.stringify({
|
|
930
|
+
[origin]: dappOriginData
|
|
931
|
+
});
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
return undefined;
|
|
935
|
+
} catch (error) {
|
|
936
|
+
log.error("Error getting origin data", error);
|
|
937
|
+
return undefined;
|
|
938
|
+
}
|
|
939
|
+
}
|
|
519
940
|
connectWithJwtLogin(params) {
|
|
520
941
|
var _params$extraLoginOpt5, _params$extraLoginOpt7;
|
|
521
942
|
const loginConfig = this.getOAuthProviderConfig({
|
|
@@ -556,11 +977,47 @@ class AuthConnector extends BaseConnector {
|
|
|
556
977
|
delete loginParams.chainId;
|
|
557
978
|
return this.authInstance.postLoginInitiatedMessage(loginParams);
|
|
558
979
|
}
|
|
980
|
+
async auditOAuditProgress(loginParams, status) {
|
|
981
|
+
const {
|
|
982
|
+
authConnection,
|
|
983
|
+
authConnectionId,
|
|
984
|
+
groupedAuthConnectionId,
|
|
985
|
+
recordId,
|
|
986
|
+
loginSource
|
|
987
|
+
} = loginParams;
|
|
988
|
+
const {
|
|
989
|
+
authBuildEnv = BUILD_ENV.PRODUCTION,
|
|
990
|
+
web3AuthNetwork,
|
|
991
|
+
clientId
|
|
992
|
+
} = this.coreOptions;
|
|
993
|
+
const auditServerUrl = `${CITADEL_SERVER_MAP[authBuildEnv]}/v1/auth/audit`;
|
|
994
|
+
const progressFlag = {
|
|
995
|
+
oauthInitiated: true
|
|
996
|
+
};
|
|
997
|
+
const auditPayload = _objectSpread({
|
|
998
|
+
authConnection,
|
|
999
|
+
authConnectionId,
|
|
1000
|
+
groupedAuthConnectionId,
|
|
1001
|
+
recordId,
|
|
1002
|
+
source: loginSource,
|
|
1003
|
+
web3AuthNetwork,
|
|
1004
|
+
web3AuthClientId: clientId
|
|
1005
|
+
}, progressFlag);
|
|
1006
|
+
if (status === "failed") {
|
|
1007
|
+
auditPayload.oauthFailed = true;
|
|
1008
|
+
} else if (status === "completed") {
|
|
1009
|
+
auditPayload.oauthCompleted = true;
|
|
1010
|
+
} else {
|
|
1011
|
+
auditPayload.oauthInitiated = true;
|
|
1012
|
+
}
|
|
1013
|
+
await put(auditServerUrl, auditPayload);
|
|
1014
|
+
}
|
|
559
1015
|
}
|
|
560
1016
|
const authConnector = params => {
|
|
561
1017
|
return ({
|
|
562
1018
|
projectConfig,
|
|
563
|
-
coreOptions
|
|
1019
|
+
coreOptions,
|
|
1020
|
+
analytics
|
|
564
1021
|
}) => {
|
|
565
1022
|
var _coreOptions$uiConfig, _coreOptions$walletSe, _coreOptions$walletSe2, _coreOptions$walletSe3;
|
|
566
1023
|
// Connector settings
|
|
@@ -605,9 +1062,22 @@ const authConnector = params => {
|
|
|
605
1062
|
mfaLevel: coreOptions.mfaLevel
|
|
606
1063
|
}),
|
|
607
1064
|
coreOptions,
|
|
1065
|
+
analytics,
|
|
608
1066
|
authConnectionConfig: projectConfig.embeddedWalletAuth
|
|
609
1067
|
});
|
|
610
1068
|
};
|
|
611
1069
|
};
|
|
1070
|
+
function isAuthConnector(connector) {
|
|
1071
|
+
if (!connector || connector.name !== WALLET_CONNECTORS.AUTH) {
|
|
1072
|
+
return false;
|
|
1073
|
+
}
|
|
1074
|
+
const maybeAuthConnector = connector;
|
|
1075
|
+
return typeof maybeAuthConnector.switchAccount === "function" && typeof maybeAuthConnector.linkAccount === "function" && typeof maybeAuthConnector.unlinkAccount === "function";
|
|
1076
|
+
}
|
|
1077
|
+
function assertAuthConnector(connector, errorMessage = "Account linking is only supported when connected with the AUTH connector.") {
|
|
1078
|
+
if (!isAuthConnector(connector)) {
|
|
1079
|
+
throw WalletLoginError.unsupportedOperation(errorMessage);
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
612
1082
|
|
|
613
|
-
export { authConnector };
|
|
1083
|
+
export { assertAuthConnector, authConnector, isAuthConnector };
|