@web3auth/no-modal 10.0.0-alpha.0 → 10.0.0-alpha.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/base/chain/IChainInterface.js +2 -2
- package/dist/lib.cjs/base/chain/config.js +63 -22
- package/dist/lib.cjs/base/connector/baseConnector.js +67 -0
- package/dist/lib.cjs/base/connector/constants.js +26 -0
- package/dist/lib.cjs/base/errors/index.js +2 -2
- package/dist/lib.cjs/base/plugin/errors.js +2 -2
- package/dist/lib.cjs/base/wallet/index.js +15 -20
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +392 -0
- package/dist/lib.cjs/{adapters/base-evm-adapter/baseEvmAdapter.js → connectors/base-evm-connector/baseEvmConnector.js} +22 -19
- package/dist/lib.cjs/{adapters/base-solana-adapter/baseSolanaAdapter.js → connectors/base-solana-connector/baseSolanaConnector.js} +24 -23
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +151 -0
- package/dist/lib.cjs/connectors/injected-evm-connector/index.js +12 -0
- package/dist/lib.cjs/{adapters/default-evm-adapter/injectedEvmAdapter.js → connectors/injected-evm-connector/injectedEvmConnector.js} +54 -38
- package/dist/lib.cjs/connectors/injected-solana-connector/index.js +25 -0
- package/dist/lib.cjs/{adapters/default-solana-adapter/walletStandardAdapter.js → connectors/injected-solana-connector/walletStandardConnector.js} +57 -48
- package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.js +40 -90
- package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.js +23 -26
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/index.js +20 -0
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +417 -0
- package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.js +12 -25
- package/dist/lib.cjs/index.js +100 -82
- package/dist/lib.cjs/noModal.js +291 -239
- package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +9 -4
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +43 -199
- package/dist/lib.cjs/providers/account-abstraction-provider/index.js +32 -0
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +99 -31
- package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +21 -26
- package/dist/lib.cjs/providers/base-provider/baseProvider.js +29 -24
- package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +2 -13
- package/dist/lib.cjs/providers/base-provider/index.js +18 -0
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +34 -57
- package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +1 -30
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +9 -11
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +3 -5
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +83 -2
- package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +24 -54
- package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +18 -27
- package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +5 -5
- package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +44 -18
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +23 -58
- package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -3
- package/dist/lib.cjs/react/no-modal/Web3AuthInnerContext.js +18 -42
- package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesContext.js +3 -0
- package/dist/lib.cjs/vue/no-modal/Web3AuthProvider.js +16 -42
- package/dist/lib.cjs/vue/wallet-services-plugin/WalletServicesProvider.js +4 -0
- package/dist/lib.esm/base/chain/IChainInterface.js +2 -2
- package/dist/lib.esm/base/chain/config.js +63 -22
- package/dist/lib.esm/base/connector/baseConnector.js +65 -0
- package/dist/lib.esm/base/connector/constants.js +22 -0
- package/dist/lib.esm/base/errors/index.js +2 -2
- package/dist/lib.esm/base/plugin/errors.js +2 -2
- package/dist/lib.esm/base/wallet/index.js +11 -16
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +390 -0
- package/dist/lib.esm/{adapters/base-evm-adapter/baseEvmAdapter.js → connectors/base-evm-connector/baseEvmConnector.js} +23 -20
- package/dist/lib.esm/{adapters/base-solana-adapter/baseSolanaAdapter.js → connectors/base-solana-connector/baseSolanaConnector.js} +25 -24
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +149 -0
- package/dist/lib.esm/connectors/injected-evm-connector/index.js +2 -0
- package/dist/lib.esm/{adapters/default-evm-adapter/injectedEvmAdapter.js → connectors/injected-evm-connector/injectedEvmConnector.js} +54 -39
- package/dist/lib.esm/connectors/injected-solana-connector/index.js +18 -0
- package/dist/lib.esm/{adapters/default-solana-adapter/walletStandardAdapter.js → connectors/injected-solana-connector/walletStandardConnector.js} +57 -49
- package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.js +41 -91
- package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.js +23 -26
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/index.js +3 -0
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +415 -0
- package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.js +13 -25
- package/dist/lib.esm/index.js +23 -28
- package/dist/lib.esm/noModal.js +290 -238
- package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +9 -4
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +42 -199
- package/dist/lib.esm/providers/account-abstraction-provider/index.js +2 -0
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +96 -31
- package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +22 -27
- package/dist/lib.esm/providers/base-provider/baseProvider.js +29 -24
- package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +2 -13
- package/dist/lib.esm/providers/base-provider/index.js +5 -0
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +34 -57
- package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +2 -30
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +9 -11
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +3 -5
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +83 -2
- package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +24 -54
- package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +18 -27
- package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +5 -5
- package/dist/lib.esm/providers/solana-provider/solanaWallet.js +44 -18
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +23 -58
- package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -3
- package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +18 -42
- package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +3 -0
- package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +16 -42
- package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +4 -0
- package/dist/noModal.cjs.js +12650 -24362
- package/dist/noModal.umd.min.js +1 -1
- package/dist/noModal.umd.min.js.LICENSE.txt +0 -9
- package/dist/types/base/chain/IChainInterface.d.ts +2 -2
- package/dist/types/base/chain/config.d.ts +2 -2
- package/dist/types/base/connector/baseConnector.d.ts +37 -0
- package/dist/types/base/{adapter → connector}/constants.d.ts +7 -4
- package/dist/types/base/{adapter → connector}/index.d.ts +1 -1
- package/dist/types/base/{adapter → connector}/interfaces.d.ts +47 -45
- package/dist/types/base/core/IWeb3Auth.d.ts +75 -34
- package/dist/types/base/errors/index.d.ts +1 -1
- package/dist/types/base/hooks/index.d.ts +2 -6
- package/dist/types/base/index.d.ts +1 -1
- package/dist/types/base/plugin/IPlugin.d.ts +4 -7
- package/dist/types/base/plugin/errors.d.ts +1 -1
- package/dist/types/base/utils.d.ts +1 -1
- package/dist/types/base/wallet/index.d.ts +9 -13
- package/dist/types/connectors/auth-connector/authConnector.d.ts +45 -0
- package/dist/types/connectors/auth-connector/index.d.ts +2 -0
- package/dist/types/connectors/auth-connector/interface.d.ts +14 -0
- package/dist/types/connectors/base-evm-connector/baseEvmConnector.d.ts +7 -0
- package/dist/types/connectors/base-evm-connector/index.d.ts +1 -0
- package/dist/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +7 -0
- package/dist/types/connectors/base-solana-connector/index.d.ts +1 -0
- package/dist/types/connectors/coinbase-connector/coinbaseConnector.d.ts +7 -0
- package/dist/types/connectors/coinbase-connector/index.d.ts +1 -0
- package/dist/types/connectors/index.d.ts +7 -0
- package/dist/types/connectors/injected-evm-connector/index.d.ts +2 -0
- package/dist/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +34 -0
- package/dist/types/connectors/injected-solana-connector/index.d.ts +5 -0
- package/dist/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +33 -0
- package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.d.ts +3 -4
- package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.d.ts +4 -4
- package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/index.d.ts +1 -1
- package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/interface.d.ts +4 -4
- package/dist/types/connectors/wallet-connect-v2-connector/walletConnectV2Connector.d.ts +3 -0
- package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.d.ts +1 -6
- package/dist/types/index.d.ts +1 -1
- package/dist/types/noModal.d.ts +29 -14
- package/dist/types/plugins/nft-checkout-plugin/plugin.d.ts +11 -7
- package/dist/types/plugins/wallet-services-plugin/plugin.d.ts +8 -32
- package/dist/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +16 -14
- package/dist/types/providers/account-abstraction-provider/providers/index.d.ts +0 -1
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/index.d.ts +1 -6
- package/dist/types/providers/base-provider/CommonJRPCProvider.d.ts +3 -3
- package/dist/types/providers/base-provider/baseProvider.d.ts +14 -11
- package/dist/types/providers/base-provider/commonPrivateKeyProvider.d.ts +2 -4
- package/dist/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +14 -5
- package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
- package/dist/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +2 -3
- package/dist/types/providers/ethereum-provider/rpc/interfaces.d.ts +0 -13
- package/dist/types/providers/solana-provider/interface.d.ts +8 -25
- package/dist/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +2 -2
- package/dist/types/providers/solana-provider/providers/injectedProviders/index.d.ts +1 -2
- package/dist/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +3 -0
- package/dist/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +7 -4
- package/dist/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.d.ts +4 -4
- package/dist/types/providers/solana-provider/rpc/interfaces.d.ts +12 -27
- package/dist/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +1 -1
- package/dist/types/providers/solana-provider/solanaWallet.d.ts +21 -7
- package/dist/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +4 -4
- package/dist/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +1 -4
- package/dist/types/react/no-modal/interfaces.d.ts +4 -4
- package/dist/types/react/wallet-services-plugin/interfaces.d.ts +2 -2
- package/dist/types/vue/no-modal/interfaces.d.ts +5 -8
- package/dist/types/vue/wallet-services-plugin/interfaces.d.ts +2 -2
- package/package.json +8 -7
- package/dist/757.noModal.cjs.js +0 -226
- package/dist/lib.cjs/adapters/auth-adapter/authAdapter.js +0 -262
- package/dist/lib.cjs/adapters/auth-adapter/config.js +0 -17
- package/dist/lib.cjs/adapters/coinbase-adapter/coinbaseAdapter.js +0 -156
- package/dist/lib.cjs/adapters/default-evm-adapter/index.js +0 -40
- package/dist/lib.cjs/adapters/default-evm-adapter/injectedAdapters.js +0 -42
- package/dist/lib.cjs/adapters/default-solana-adapter/index.js +0 -40
- package/dist/lib.cjs/adapters/default-solana-adapter/injectedAdapters.js +0 -53
- package/dist/lib.cjs/adapters/default-solana-adapter/walletStandardHandler.js +0 -77
- package/dist/lib.cjs/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.js +0 -376
- package/dist/lib.cjs/base/adapter/baseAdapter.js +0 -117
- package/dist/lib.cjs/base/adapter/constants.js +0 -24
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.js +0 -29
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.js +0 -22
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.js +0 -30
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.js +0 -30
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.js +0 -29
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/constants.js +0 -11
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.js +0 -185
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.js +0 -106
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.js +0 -12
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.js +0 -75
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.js +0 -109
- package/dist/lib.esm/adapters/auth-adapter/authAdapter.js +0 -260
- package/dist/lib.esm/adapters/auth-adapter/config.js +0 -15
- package/dist/lib.esm/adapters/coinbase-adapter/coinbaseAdapter.js +0 -154
- package/dist/lib.esm/adapters/default-evm-adapter/index.js +0 -37
- package/dist/lib.esm/adapters/default-evm-adapter/injectedAdapters.js +0 -40
- package/dist/lib.esm/adapters/default-solana-adapter/index.js +0 -37
- package/dist/lib.esm/adapters/default-solana-adapter/injectedAdapters.js +0 -51
- package/dist/lib.esm/adapters/default-solana-adapter/walletStandardHandler.js +0 -75
- package/dist/lib.esm/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.js +0 -374
- package/dist/lib.esm/base/adapter/baseAdapter.js +0 -115
- package/dist/lib.esm/base/adapter/constants.js +0 -20
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.js +0 -27
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.js +0 -20
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.js +0 -28
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.js +0 -28
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.js +0 -27
- package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/constants.js +0 -9
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.js +0 -183
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.js +0 -104
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.js +0 -10
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.js +0 -73
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.js +0 -107
- package/dist/types/adapters/auth-adapter/authAdapter.d.ts +0 -42
- package/dist/types/adapters/auth-adapter/config.d.ts +0 -2
- package/dist/types/adapters/auth-adapter/index.d.ts +0 -3
- package/dist/types/adapters/auth-adapter/interface.d.ts +0 -11
- package/dist/types/adapters/base-evm-adapter/baseEvmAdapter.d.ts +0 -7
- package/dist/types/adapters/base-evm-adapter/index.d.ts +0 -1
- package/dist/types/adapters/base-solana-adapter/baseSolanaAdapter.d.ts +0 -7
- package/dist/types/adapters/base-solana-adapter/index.d.ts +0 -1
- package/dist/types/adapters/coinbase-adapter/coinbaseAdapter.d.ts +0 -33
- package/dist/types/adapters/coinbase-adapter/index.d.ts +0 -1
- package/dist/types/adapters/default-evm-adapter/index.d.ts +0 -6
- package/dist/types/adapters/default-evm-adapter/injectedAdapters.d.ts +0 -4
- package/dist/types/adapters/default-evm-adapter/injectedEvmAdapter.d.ts +0 -30
- package/dist/types/adapters/default-solana-adapter/index.d.ts +0 -6
- package/dist/types/adapters/default-solana-adapter/injectedAdapters.d.ts +0 -4
- package/dist/types/adapters/default-solana-adapter/walletStandardAdapter.d.ts +0 -31
- package/dist/types/adapters/default-solana-adapter/walletStandardHandler.d.ts +0 -27
- package/dist/types/adapters/index.d.ts +0 -7
- package/dist/types/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.d.ts +0 -42
- package/dist/types/base/adapter/baseAdapter.d.ts +0 -44
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.d.ts +0 -14
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.d.ts +0 -13
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/LightSmartAccount.d.ts +0 -14
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.d.ts +0 -14
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.d.ts +0 -13
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/SimpleSmartAccount.d.ts +0 -13
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.d.ts +0 -13
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/constants.d.ts +0 -9
- package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/types.d.ts +0 -22
- package/dist/types/providers/account-abstraction-provider/providers/types.d.ts +0 -17
- package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.d.ts +0 -30
- package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.d.ts +0 -9
- package/dist/types/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.d.ts +0 -3
- package/dist/types/providers/solana-provider/providers/injectedProviders/interface.d.ts +0 -5
- package/dist/types/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.d.ts +0 -3
- package/dist/types/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.d.ts +0 -18
- /package/dist/lib.cjs/base/{adapter → connector}/utils.js +0 -0
- /package/dist/lib.cjs/{adapters/default-solana-adapter → providers/solana-provider/providers/injectedProviders}/utils.js +0 -0
- /package/dist/lib.esm/base/{adapter → connector}/utils.js +0 -0
- /package/dist/lib.esm/{adapters/default-solana-adapter → providers/solana-provider/providers/injectedProviders}/utils.js +0 -0
- /package/dist/types/base/{adapter → connector}/utils.d.ts +0 -0
- /package/dist/types/{adapters/default-solana-adapter → connectors/injected-solana-connector}/utils.d.ts +0 -0
- /package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/utils.d.ts +0 -0
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
|
+
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
+
import { LOGIN_PROVIDER, UX_MODE, WEB3AUTH_NETWORK, Auth, SUPPORTED_KEY_CURVES } from '@web3auth/auth';
|
|
4
|
+
import deepmerge from 'deepmerge';
|
|
5
|
+
import { CONNECTOR_NAMESPACES, CHAIN_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
6
|
+
import { WalletInitializationError, WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
7
|
+
import { log } from '../../base/loglevel.js';
|
|
8
|
+
import { cloneDeep } from '@toruslabs/base-controllers';
|
|
9
|
+
import '@toruslabs/constants';
|
|
10
|
+
import '@toruslabs/http-helpers';
|
|
11
|
+
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
12
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
13
|
+
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
14
|
+
|
|
15
|
+
class AuthConnector extends BaseConnector {
|
|
16
|
+
constructor(params) {
|
|
17
|
+
super(params);
|
|
18
|
+
_defineProperty(this, "name", WALLET_CONNECTORS.AUTH);
|
|
19
|
+
_defineProperty(this, "connectorNamespace", CONNECTOR_NAMESPACES.MULTICHAIN);
|
|
20
|
+
_defineProperty(this, "type", CONNECTOR_CATEGORY.IN_APP);
|
|
21
|
+
_defineProperty(this, "authInstance", null);
|
|
22
|
+
_defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
|
|
23
|
+
_defineProperty(this, "privateKeyProvider", null);
|
|
24
|
+
_defineProperty(this, "authOptions", void 0);
|
|
25
|
+
_defineProperty(this, "loginSettings", {
|
|
26
|
+
loginProvider: ""
|
|
27
|
+
});
|
|
28
|
+
_defineProperty(this, "wsSettings", {});
|
|
29
|
+
_defineProperty(this, "wsEmbedInstance", null);
|
|
30
|
+
this.authOptions = params.connectorSettings;
|
|
31
|
+
this.loginSettings = params.loginSettings || {
|
|
32
|
+
loginProvider: ""
|
|
33
|
+
};
|
|
34
|
+
this.wsSettings = params.walletServicesSettings || {};
|
|
35
|
+
}
|
|
36
|
+
get provider() {
|
|
37
|
+
if (this.status !== CONNECTOR_STATUS.NOT_READY) {
|
|
38
|
+
var _this$wsEmbedInstance;
|
|
39
|
+
if ((_this$wsEmbedInstance = this.wsEmbedInstance) !== null && _this$wsEmbedInstance !== void 0 && _this$wsEmbedInstance.provider) {
|
|
40
|
+
return this.wsEmbedInstance.provider;
|
|
41
|
+
} else if (this.privateKeyProvider) return this.privateKeyProvider;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
get wsEmbed() {
|
|
46
|
+
return this.wsEmbedInstance;
|
|
47
|
+
}
|
|
48
|
+
set provider(_) {
|
|
49
|
+
throw new Error("Not implemented");
|
|
50
|
+
}
|
|
51
|
+
async init(options) {
|
|
52
|
+
const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
|
|
53
|
+
super.checkInitializationRequirements({
|
|
54
|
+
chainConfig
|
|
55
|
+
});
|
|
56
|
+
if (!this.coreOptions.clientId) throw WalletInitializationError.invalidParams("clientId is required before auth's initialization");
|
|
57
|
+
if (!this.authOptions) throw WalletInitializationError.invalidParams("authOptions is required before auth's initialization");
|
|
58
|
+
const isRedirectResult = this.authOptions.uxMode === UX_MODE.REDIRECT;
|
|
59
|
+
this.authOptions = _objectSpread(_objectSpread({}, this.authOptions), {}, {
|
|
60
|
+
replaceUrlOnRedirect: isRedirectResult,
|
|
61
|
+
useCoreKitKey: this.coreOptions.useCoreKitKey
|
|
62
|
+
});
|
|
63
|
+
const web3AuthNetwork = this.coreOptions.web3AuthNetwork || WEB3AUTH_NETWORK.SAPPHIRE_MAINNET;
|
|
64
|
+
this.authInstance = new Auth(_objectSpread(_objectSpread({}, this.authOptions), {}, {
|
|
65
|
+
clientId: this.coreOptions.clientId,
|
|
66
|
+
network: web3AuthNetwork
|
|
67
|
+
}));
|
|
68
|
+
log.debug("initializing auth connector init");
|
|
69
|
+
await this.authInstance.init();
|
|
70
|
+
|
|
71
|
+
// Use this for xrpl, mpc cases
|
|
72
|
+
if (this.coreOptions.privateKeyProvider) {
|
|
73
|
+
this.privateKeyProvider = this.coreOptions.privateKeyProvider;
|
|
74
|
+
} else {
|
|
75
|
+
// initialize ws embed or private key provider based on chain namespace
|
|
76
|
+
switch (chainConfig.chainNamespace) {
|
|
77
|
+
case CHAIN_NAMESPACES.EIP155:
|
|
78
|
+
case CHAIN_NAMESPACES.SOLANA:
|
|
79
|
+
{
|
|
80
|
+
const {
|
|
81
|
+
default: WsEmbed
|
|
82
|
+
} = await import('@web3auth/ws-embed');
|
|
83
|
+
this.wsEmbedInstance = new WsEmbed({
|
|
84
|
+
web3AuthClientId: this.coreOptions.clientId,
|
|
85
|
+
web3AuthNetwork,
|
|
86
|
+
modalZIndex: this.wsSettings.modalZIndex
|
|
87
|
+
});
|
|
88
|
+
// TODO: once support multiple chains, only pass chains of solana and EVM
|
|
89
|
+
await this.wsEmbedInstance.init(_objectSpread(_objectSpread({}, this.wsSettings), {}, {
|
|
90
|
+
chainConfig: chainConfig,
|
|
91
|
+
// TODO: upgrade ws-embed to support custom chain config
|
|
92
|
+
whiteLabel: _objectSpread(_objectSpread({}, this.authOptions.whiteLabel), this.wsSettings.whiteLabel)
|
|
93
|
+
}));
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
case CHAIN_NAMESPACES.XRPL:
|
|
97
|
+
throw WalletLoginError.connectionError("Private key provider is required for XRPL");
|
|
98
|
+
default:
|
|
99
|
+
{
|
|
100
|
+
const {
|
|
101
|
+
CommonPrivateKeyProvider
|
|
102
|
+
} = await import('../../providers/base-provider/index.js');
|
|
103
|
+
this.privateKeyProvider = new CommonPrivateKeyProvider({
|
|
104
|
+
config: {
|
|
105
|
+
chain: chainConfig,
|
|
106
|
+
chains: this.coreOptions.chains
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
113
|
+
this.emit(CONNECTOR_EVENTS.READY, WALLET_CONNECTORS.AUTH);
|
|
114
|
+
try {
|
|
115
|
+
log.debug("initializing auth connector");
|
|
116
|
+
const {
|
|
117
|
+
sessionId
|
|
118
|
+
} = this.authInstance || {};
|
|
119
|
+
// connect only if it is redirect result or if connect (connector is cached/already connected in same session) is true
|
|
120
|
+
if (sessionId && (options.autoConnect || isRedirectResult)) {
|
|
121
|
+
this.rehydrated = true;
|
|
122
|
+
await this.connect({
|
|
123
|
+
chainId: options.chainId
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
} catch (error) {
|
|
127
|
+
log.error("Failed to connect with cached auth provider", error);
|
|
128
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, error);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
async connect(params) {
|
|
132
|
+
super.checkConnectionRequirements();
|
|
133
|
+
this.status = CONNECTOR_STATUS.CONNECTING;
|
|
134
|
+
this.emit(CONNECTOR_EVENTS.CONNECTING, _objectSpread(_objectSpread({}, params), {}, {
|
|
135
|
+
connector: WALLET_CONNECTORS.AUTH
|
|
136
|
+
}));
|
|
137
|
+
try {
|
|
138
|
+
await this.connectWithProvider(params);
|
|
139
|
+
return this.provider;
|
|
140
|
+
} catch (error) {
|
|
141
|
+
log.error("Failed to connect with auth provider", error);
|
|
142
|
+
// ready again to be connected
|
|
143
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
144
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, error);
|
|
145
|
+
if (error !== null && error !== void 0 && error.message.includes("user closed popup")) {
|
|
146
|
+
throw WalletLoginError.popupClosed();
|
|
147
|
+
} else if (error instanceof Web3AuthError) {
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
throw WalletLoginError.connectionError("Failed to login with auth", error);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async enableMFA(params = {
|
|
154
|
+
loginProvider: ""
|
|
155
|
+
}) {
|
|
156
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError("Not connected with wallet");
|
|
157
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
158
|
+
try {
|
|
159
|
+
await this.authInstance.enableMFA(params);
|
|
160
|
+
} catch (error) {
|
|
161
|
+
log.error("Failed to enable MFA with auth provider", error);
|
|
162
|
+
if (error instanceof Web3AuthError) {
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
throw WalletLoginError.connectionError("Failed to enable MFA with auth", error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async manageMFA(params = {
|
|
169
|
+
loginProvider: ""
|
|
170
|
+
}) {
|
|
171
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError("Not connected with wallet");
|
|
172
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
173
|
+
try {
|
|
174
|
+
await this.authInstance.manageMFA(params);
|
|
175
|
+
} catch (error) {
|
|
176
|
+
log.error("Failed to manage MFA with auth provider", error);
|
|
177
|
+
if (error instanceof Web3AuthError) {
|
|
178
|
+
throw error;
|
|
179
|
+
}
|
|
180
|
+
throw WalletLoginError.connectionError("Failed to manage MFA with auth", error);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
async disconnect(options = {
|
|
184
|
+
cleanup: false
|
|
185
|
+
}) {
|
|
186
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError("Not connected with wallet");
|
|
187
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
188
|
+
this.status = CONNECTOR_STATUS.DISCONNECTING;
|
|
189
|
+
await this.authInstance.logout();
|
|
190
|
+
if (this.wsEmbedInstance) await this.wsEmbedInstance.logout();
|
|
191
|
+
if (options.cleanup) {
|
|
192
|
+
this.status = CONNECTOR_STATUS.NOT_READY;
|
|
193
|
+
this.authInstance = null;
|
|
194
|
+
if (this.wsEmbedInstance) this.wsEmbedInstance = null;
|
|
195
|
+
if (this.privateKeyProvider) this.privateKeyProvider = null;
|
|
196
|
+
} else {
|
|
197
|
+
// ready to be connected again
|
|
198
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
199
|
+
}
|
|
200
|
+
this.rehydrated = false;
|
|
201
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED);
|
|
202
|
+
}
|
|
203
|
+
async authenticateUser() {
|
|
204
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
|
|
205
|
+
const userInfo = await this.getUserInfo();
|
|
206
|
+
return {
|
|
207
|
+
idToken: userInfo.idToken
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async getUserInfo() {
|
|
211
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError("Not connected with wallet");
|
|
212
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
213
|
+
const userInfo = this.authInstance.getUserInfo();
|
|
214
|
+
return userInfo;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// we don't support switching between different namespaces, except for solana and evm
|
|
218
|
+
async switchChain(params, init = false) {
|
|
219
|
+
super.checkSwitchChainRequirements(params, init);
|
|
220
|
+
// get chains and namespaces
|
|
221
|
+
const {
|
|
222
|
+
chainId: newChainId
|
|
223
|
+
} = params;
|
|
224
|
+
const {
|
|
225
|
+
chainId: currentChainId
|
|
226
|
+
} = this.provider;
|
|
227
|
+
const {
|
|
228
|
+
chainNamespace: currentNamespace
|
|
229
|
+
} = this.getChain(currentChainId);
|
|
230
|
+
const {
|
|
231
|
+
chainNamespace: newNamespace
|
|
232
|
+
} = this.getChain(newChainId);
|
|
233
|
+
|
|
234
|
+
// skip if chainId is the same
|
|
235
|
+
if (currentChainId === newChainId) return;
|
|
236
|
+
if (currentNamespace === CHAIN_NAMESPACES.SOLANA || currentNamespace === CHAIN_NAMESPACES.EIP155) {
|
|
237
|
+
var _this$wsEmbedInstance2;
|
|
238
|
+
// can only switch to solana or evm
|
|
239
|
+
if (newNamespace !== CHAIN_NAMESPACES.SOLANA && newNamespace !== CHAIN_NAMESPACES.EIP155) throw WalletLoginError.connectionError("Cannot switch to other chain namespace");
|
|
240
|
+
const fullChainId = `${newNamespace}:${Number(params.chainId)}`;
|
|
241
|
+
await ((_this$wsEmbedInstance2 = this.wsEmbedInstance.provider) === null || _this$wsEmbedInstance2 === void 0 ? void 0 : _this$wsEmbedInstance2.request({
|
|
242
|
+
method: "wallet_switchChain",
|
|
243
|
+
params: {
|
|
244
|
+
chainId: fullChainId
|
|
245
|
+
}
|
|
246
|
+
}));
|
|
247
|
+
} else {
|
|
248
|
+
var _this$privateKeyProvi;
|
|
249
|
+
// cannot switch to other namespaces
|
|
250
|
+
if (currentNamespace !== newNamespace) throw WalletLoginError.connectionError("Cannot switch to other chain namespace");
|
|
251
|
+
await ((_this$privateKeyProvi = this.privateKeyProvider) === null || _this$privateKeyProvi === void 0 ? void 0 : _this$privateKeyProvi.switchChain(params));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
getChain(chainId) {
|
|
255
|
+
return this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
256
|
+
}
|
|
257
|
+
_getFinalPrivKey() {
|
|
258
|
+
if (!this.authInstance) return "";
|
|
259
|
+
let finalPrivKey = this.authInstance.privKey;
|
|
260
|
+
// coreKitKey is available only for custom verifiers by default
|
|
261
|
+
if (this.coreOptions.useCoreKitKey) {
|
|
262
|
+
// this is to check if the user has already logged in but coreKitKey is not available.
|
|
263
|
+
// when useCoreKitKey is set to true.
|
|
264
|
+
// This is to ensure that when there is no user session active, we don't throw an exception.
|
|
265
|
+
if (this.authInstance.privKey && !this.authInstance.coreKitKey) {
|
|
266
|
+
throw WalletLoginError.coreKitKeyNotFound();
|
|
267
|
+
}
|
|
268
|
+
finalPrivKey = this.authInstance.coreKitKey;
|
|
269
|
+
}
|
|
270
|
+
return finalPrivKey;
|
|
271
|
+
}
|
|
272
|
+
async connectWithProvider(params) {
|
|
273
|
+
var _this$authInstance, _params$extraLoginOpt;
|
|
274
|
+
if (!this.authInstance) throw WalletInitializationError.notReady("authInstance is not ready");
|
|
275
|
+
const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId);
|
|
276
|
+
if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
277
|
+
const {
|
|
278
|
+
chainNamespace
|
|
279
|
+
} = chainConfig;
|
|
280
|
+
|
|
281
|
+
// if not logged in then login
|
|
282
|
+
const keyAvailable = chainNamespace === CHAIN_NAMESPACES.EIP155 || chainNamespace === CHAIN_NAMESPACES.SOLANA ? (_this$authInstance = this.authInstance) === null || _this$authInstance === void 0 ? void 0 : _this$authInstance.sessionId : this._getFinalPrivKey();
|
|
283
|
+
if (!keyAvailable || (_params$extraLoginOpt = params.extraLoginOptions) !== null && _params$extraLoginOpt !== void 0 && _params$extraLoginOpt.id_token) {
|
|
284
|
+
var _params$extraLoginOpt2;
|
|
285
|
+
// always use "other" curve to return token with all keys encoded so wallet service can switch between evm and solana namespace
|
|
286
|
+
this.loginSettings.curve = SUPPORTED_KEY_CURVES.OTHER;
|
|
287
|
+
if (!params.loginProvider && !this.loginSettings.loginProvider) throw WalletInitializationError.invalidParams("loginProvider is required for login");
|
|
288
|
+
await this.authInstance.login(deepmerge.all([this.loginSettings, params, {
|
|
289
|
+
extraLoginOptions: _objectSpread(_objectSpread({}, params.extraLoginOptions || {}), {}, {
|
|
290
|
+
login_hint: params.login_hint || ((_params$extraLoginOpt2 = params.extraLoginOptions) === null || _params$extraLoginOpt2 === void 0 ? void 0 : _params$extraLoginOpt2.login_hint)
|
|
291
|
+
})
|
|
292
|
+
}]));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// setup WS embed if chainNamespace is EIP155 or SOLANA
|
|
296
|
+
if (chainNamespace === CHAIN_NAMESPACES.EIP155 || chainNamespace === CHAIN_NAMESPACES.SOLANA) {
|
|
297
|
+
const {
|
|
298
|
+
sessionId,
|
|
299
|
+
sessionNamespace
|
|
300
|
+
} = this.authInstance || {};
|
|
301
|
+
if (sessionId) {
|
|
302
|
+
const isLoggedIn = await this.wsEmbedInstance.loginWithSessionId({
|
|
303
|
+
sessionId,
|
|
304
|
+
sessionNamespace
|
|
305
|
+
});
|
|
306
|
+
if (isLoggedIn) {
|
|
307
|
+
var _this$wsEmbedInstance3;
|
|
308
|
+
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
309
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
310
|
+
connector: WALLET_CONNECTORS.AUTH,
|
|
311
|
+
reconnected: this.rehydrated,
|
|
312
|
+
provider: this.provider
|
|
313
|
+
});
|
|
314
|
+
// handle disconnect from ws embed
|
|
315
|
+
(_this$wsEmbedInstance3 = this.wsEmbedInstance) === null || _this$wsEmbedInstance3 === void 0 || _this$wsEmbedInstance3.provider.on("accountsChanged", (accounts = []) => {
|
|
316
|
+
if (accounts.length === 0 && this.status === CONNECTOR_STATUS.CONNECTED) this.disconnect({
|
|
317
|
+
cleanup: false
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
} else {
|
|
323
|
+
// setup private key provider if chainNamespace is other
|
|
324
|
+
const finalPrivKey = this._getFinalPrivKey();
|
|
325
|
+
if (finalPrivKey) {
|
|
326
|
+
await this.privateKeyProvider.setupProvider(finalPrivKey, params.chainId);
|
|
327
|
+
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
328
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
329
|
+
connector: WALLET_CONNECTORS.AUTH,
|
|
330
|
+
reconnected: this.rehydrated,
|
|
331
|
+
provider: this.provider
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
const authConnector = params => {
|
|
338
|
+
return ({
|
|
339
|
+
projectConfig,
|
|
340
|
+
coreOptions
|
|
341
|
+
}) => {
|
|
342
|
+
var _coreOptions$uiConfig, _coreOptions$walletSe;
|
|
343
|
+
// Connector settings
|
|
344
|
+
const connectorSettings = {};
|
|
345
|
+
const {
|
|
346
|
+
sms_otp_enabled: smsOtpEnabled,
|
|
347
|
+
whitelist
|
|
348
|
+
} = projectConfig;
|
|
349
|
+
if (smsOtpEnabled !== undefined) {
|
|
350
|
+
connectorSettings.loginConfig = {
|
|
351
|
+
[LOGIN_PROVIDER.SMS_PASSWORDLESS]: {
|
|
352
|
+
showOnModal: smsOtpEnabled,
|
|
353
|
+
showOnDesktop: smsOtpEnabled,
|
|
354
|
+
showOnMobile: smsOtpEnabled,
|
|
355
|
+
showOnSocialBackupFactor: smsOtpEnabled
|
|
356
|
+
}
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
if (whitelist) connectorSettings.originData = whitelist.signed_urls;
|
|
360
|
+
if ((_coreOptions$uiConfig = coreOptions.uiConfig) !== null && _coreOptions$uiConfig !== void 0 && _coreOptions$uiConfig.uxMode) connectorSettings.uxMode = coreOptions.uiConfig.uxMode;
|
|
361
|
+
const uiConfig = deepmerge(cloneDeep((projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.whitelabel) || {}), coreOptions.uiConfig || {});
|
|
362
|
+
if (!uiConfig.mode) uiConfig.mode = "light";
|
|
363
|
+
connectorSettings.whiteLabel = uiConfig;
|
|
364
|
+
const finalConnectorSettings = deepmerge.all([{
|
|
365
|
+
uxMode: UX_MODE.POPUP
|
|
366
|
+
},
|
|
367
|
+
// default settings
|
|
368
|
+
(params === null || params === void 0 ? void 0 : params.connectorSettings) || {}, connectorSettings]);
|
|
369
|
+
|
|
370
|
+
// WS settings
|
|
371
|
+
const isKeyExportEnabled = typeof projectConfig.key_export_enabled === "boolean" ? projectConfig.key_export_enabled : true;
|
|
372
|
+
const finalWsSettings = _objectSpread(_objectSpread({}, coreOptions.walletServicesConfig), {}, {
|
|
373
|
+
whiteLabel: _objectSpread(_objectSpread({}, uiConfig), (_coreOptions$walletSe = coreOptions.walletServicesConfig) === null || _coreOptions$walletSe === void 0 ? void 0 : _coreOptions$walletSe.whiteLabel),
|
|
374
|
+
accountAbstractionConfig: coreOptions.accountAbstractionConfig,
|
|
375
|
+
enableLogging: coreOptions.enableLogging
|
|
376
|
+
// enableKeyExport: keyExportEnabled, TODO: add this to ws embed and implement in WS
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
// Core options
|
|
380
|
+
if (coreOptions.privateKeyProvider) coreOptions.privateKeyProvider.setKeyExportFlag(isKeyExportEnabled);
|
|
381
|
+
return new AuthConnector({
|
|
382
|
+
connectorSettings: finalConnectorSettings,
|
|
383
|
+
walletServicesSettings: finalWsSettings,
|
|
384
|
+
loginSettings: params === null || params === void 0 ? void 0 : params.loginSettings,
|
|
385
|
+
coreOptions
|
|
386
|
+
});
|
|
387
|
+
};
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
export { authConnector };
|
|
@@ -1,23 +1,18 @@
|
|
|
1
1
|
import { signChallenge, verifySignedChallenge } from '@toruslabs/base-controllers';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ADAPTER_STATUS, ADAPTER_EVENTS } from '../../base/adapter/constants.js';
|
|
2
|
+
import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
3
|
+
import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
|
|
4
|
+
import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/connector/utils.js';
|
|
5
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
6
|
+
import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
8
7
|
|
|
9
|
-
class
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
8
|
+
class BaseEvmConnector extends BaseConnector {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
10
|
+
async init(_) {}
|
|
13
11
|
async authenticateUser() {
|
|
14
|
-
if (!this.provider || this.status !==
|
|
15
|
-
|
|
16
|
-
chainNamespace,
|
|
17
|
-
chainId
|
|
18
|
-
} = this.chainConfig;
|
|
12
|
+
if (!this.provider || this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError();
|
|
13
|
+
if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with valid options");
|
|
19
14
|
const accounts = await this.provider.request({
|
|
20
|
-
method:
|
|
15
|
+
method: EVM_METHOD_TYPES.GET_ACCOUNTS
|
|
21
16
|
});
|
|
22
17
|
if (accounts && accounts.length > 0) {
|
|
23
18
|
const existingToken = getSavedToken(accounts[0], this.name);
|
|
@@ -29,6 +24,14 @@ class BaseEvmAdapter extends BaseAdapter {
|
|
|
29
24
|
};
|
|
30
25
|
}
|
|
31
26
|
}
|
|
27
|
+
const chainId = await this.provider.request({
|
|
28
|
+
method: "eth_chainId"
|
|
29
|
+
});
|
|
30
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
31
|
+
if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
32
|
+
const {
|
|
33
|
+
chainNamespace
|
|
34
|
+
} = currentChainConfig;
|
|
32
35
|
const payload = {
|
|
33
36
|
domain: window.location.origin,
|
|
34
37
|
uri: window.location.href,
|
|
@@ -41,10 +44,10 @@ class BaseEvmAdapter extends BaseAdapter {
|
|
|
41
44
|
const challenge = await signChallenge(payload, chainNamespace);
|
|
42
45
|
const hexChallenge = `0x${Buffer.from(challenge, "utf8").toString("hex")}`;
|
|
43
46
|
const signedMessage = await this.provider.request({
|
|
44
|
-
method:
|
|
47
|
+
method: EVM_METHOD_TYPES.PERSONAL_SIGN,
|
|
45
48
|
params: [hexChallenge, accounts[0]]
|
|
46
49
|
});
|
|
47
|
-
const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.sessionTime, this.clientId, this.web3AuthNetwork);
|
|
50
|
+
const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
|
|
48
51
|
saveToken(accounts[0], this.name, idToken);
|
|
49
52
|
return {
|
|
50
53
|
idToken
|
|
@@ -63,8 +66,8 @@ class BaseEvmAdapter extends BaseAdapter {
|
|
|
63
66
|
}
|
|
64
67
|
async disconnect() {
|
|
65
68
|
this.rehydrated = false;
|
|
66
|
-
this.emit(
|
|
69
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED);
|
|
67
70
|
}
|
|
68
71
|
}
|
|
69
72
|
|
|
70
|
-
export {
|
|
73
|
+
export { BaseEvmConnector };
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
import { signChallenge, verifySignedChallenge } from '@toruslabs/base-controllers';
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { ADAPTER_STATUS, ADAPTER_EVENTS } from '../../base/adapter/constants.js';
|
|
8
|
-
import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/adapter/utils.js';
|
|
2
|
+
import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
|
|
3
|
+
import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
|
|
4
|
+
import { BaseConnector } from '../../base/connector/baseConnector.js';
|
|
5
|
+
import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
6
|
+
import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/connector/utils.js';
|
|
9
7
|
|
|
10
|
-
class
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
8
|
+
class BaseSolanaConnector extends BaseConnector {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
10
|
+
async init(_) {}
|
|
14
11
|
async authenticateUser() {
|
|
15
|
-
if (!this.provider || this.status !==
|
|
16
|
-
|
|
17
|
-
chainNamespace,
|
|
18
|
-
chainId
|
|
19
|
-
} = this.chainConfig;
|
|
12
|
+
if (!this.provider || this.status !== CONNECTOR_STATUS.CONNECTED) throw WalletLoginError.notConnectedError();
|
|
13
|
+
if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with a valid options");
|
|
20
14
|
const accounts = await this.provider.request({
|
|
21
|
-
method:
|
|
15
|
+
method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
|
|
22
16
|
});
|
|
23
17
|
if (accounts && accounts.length > 0) {
|
|
24
18
|
const existingToken = getSavedToken(accounts[0], this.name);
|
|
@@ -30,6 +24,14 @@ class BaseSolanaAdapter extends BaseAdapter {
|
|
|
30
24
|
};
|
|
31
25
|
}
|
|
32
26
|
}
|
|
27
|
+
const chainId = await this.provider.request({
|
|
28
|
+
method: "solana_chainId"
|
|
29
|
+
});
|
|
30
|
+
const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
31
|
+
if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
|
|
32
|
+
const {
|
|
33
|
+
chainNamespace
|
|
34
|
+
} = currentChainConfig;
|
|
33
35
|
const payload = {
|
|
34
36
|
domain: window.location.origin,
|
|
35
37
|
uri: window.location.href,
|
|
@@ -40,15 +42,14 @@ class BaseSolanaAdapter extends BaseAdapter {
|
|
|
40
42
|
issuedAt: new Date().toISOString()
|
|
41
43
|
};
|
|
42
44
|
const challenge = await signChallenge(payload, chainNamespace);
|
|
43
|
-
const encodedMessage = new TextEncoder().encode(challenge);
|
|
44
45
|
const signedMessage = await this.provider.request({
|
|
45
|
-
method:
|
|
46
|
+
method: SOLANA_METHOD_TYPES.SIGN_MESSAGE,
|
|
46
47
|
params: {
|
|
47
|
-
|
|
48
|
+
data: challenge,
|
|
48
49
|
display: "utf8"
|
|
49
50
|
}
|
|
50
51
|
});
|
|
51
|
-
const idToken = await verifySignedChallenge(chainNamespace,
|
|
52
|
+
const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
|
|
52
53
|
saveToken(accounts[0], this.name, idToken);
|
|
53
54
|
return {
|
|
54
55
|
idToken
|
|
@@ -59,7 +60,7 @@ class BaseSolanaAdapter extends BaseAdapter {
|
|
|
59
60
|
async disconnectSession() {
|
|
60
61
|
super.checkDisconnectionRequirements();
|
|
61
62
|
const accounts = await this.provider.request({
|
|
62
|
-
method:
|
|
63
|
+
method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
|
|
63
64
|
});
|
|
64
65
|
if (accounts && accounts.length > 0) {
|
|
65
66
|
clearToken(accounts[0], this.name);
|
|
@@ -67,8 +68,8 @@ class BaseSolanaAdapter extends BaseAdapter {
|
|
|
67
68
|
}
|
|
68
69
|
async disconnect() {
|
|
69
70
|
this.rehydrated = false;
|
|
70
|
-
this.emit(
|
|
71
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED);
|
|
71
72
|
}
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
export {
|
|
75
|
+
export { BaseSolanaConnector };
|