@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
package/dist/lib.esm/noModal.js
CHANGED
|
@@ -1,296 +1,332 @@
|
|
|
1
1
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
|
-
import { SafeEventEmitter
|
|
4
|
-
import
|
|
3
|
+
import { SafeEventEmitter } from '@web3auth/auth';
|
|
4
|
+
import { authConnector } from './connectors/auth-connector/authConnector.js';
|
|
5
5
|
import { getChainConfig } from './base/chain/config.js';
|
|
6
|
-
import { CHAIN_NAMESPACES,
|
|
6
|
+
import { CHAIN_NAMESPACES, CONNECTOR_NAMESPACES } from './base/chain/IChainInterface.js';
|
|
7
7
|
import { WalletInitializationError, WalletLoginError } from './base/errors/index.js';
|
|
8
8
|
import { log } from './base/loglevel.js';
|
|
9
9
|
import { fetchProjectConfig } from './base/utils.js';
|
|
10
|
-
import {
|
|
11
|
-
import { storageAvailable } from './base/adapter/utils.js';
|
|
10
|
+
import { WALLET_CONNECTORS } from './base/wallet/index.js';
|
|
12
11
|
import { CommonJRPCProvider } from './providers/base-provider/CommonJRPCProvider.js';
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
12
|
+
import { storageAvailable } from './base/connector/utils.js';
|
|
13
|
+
import { PLUGIN_STATUS, PLUGIN_NAMESPACES } from './base/plugin/IPlugin.js';
|
|
14
|
+
import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from './base/connector/constants.js';
|
|
16
15
|
|
|
17
|
-
const
|
|
16
|
+
const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
|
|
17
|
+
const CURRENT_CHAIN_CACHE_KEY = "Web3Auth-currentChain";
|
|
18
18
|
class Web3AuthNoModal extends SafeEventEmitter {
|
|
19
19
|
constructor(options) {
|
|
20
|
-
var _options$chainConfig, _options$chainConfig2, _options$chainConfig3, _options$chainConfig4;
|
|
21
20
|
super();
|
|
22
21
|
_defineProperty(this, "coreOptions", void 0);
|
|
23
|
-
_defineProperty(this, "
|
|
24
|
-
_defineProperty(this, "status",
|
|
25
|
-
_defineProperty(this, "
|
|
26
|
-
_defineProperty(this, "
|
|
22
|
+
_defineProperty(this, "connectedConnectorName", null);
|
|
23
|
+
_defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
|
|
24
|
+
_defineProperty(this, "cachedConnector", null);
|
|
25
|
+
_defineProperty(this, "currentChainId", void 0);
|
|
26
|
+
_defineProperty(this, "connectors", []);
|
|
27
27
|
_defineProperty(this, "commonJRPCProvider", null);
|
|
28
28
|
_defineProperty(this, "plugins", {});
|
|
29
29
|
_defineProperty(this, "storage", "localStorage");
|
|
30
30
|
if (!options.clientId) throw WalletInitializationError.invalidParams("Please provide a valid clientId in constructor");
|
|
31
31
|
if (options.enableLogging) log.enableAll();else log.setLevel("error");
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
// TODO: This is fine. we get chains from project config. we can throw in init instead
|
|
33
|
+
if (!options.chains || options.chains.length === 0) {
|
|
34
|
+
throw WalletInitializationError.invalidParams("Please provide chains");
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const {
|
|
37
|
+
chains
|
|
38
|
+
} = options;
|
|
39
|
+
// validate chain namespace of each chain config
|
|
40
|
+
for (const chain of chains) {
|
|
41
|
+
if (!chain.chainNamespace || !Object.values(CHAIN_NAMESPACES).includes(chain.chainNamespace)) throw WalletInitializationError.invalidParams("Please provide a valid chainNamespace in chains");
|
|
42
|
+
}
|
|
43
|
+
if (options.storageType === "session") this.storage = "sessionStorage";
|
|
39
44
|
this.coreOptions = _objectSpread(_objectSpread({}, options), {}, {
|
|
40
|
-
|
|
45
|
+
chains: chains.map(chain => _objectSpread(_objectSpread({}, getChainConfig(chain === null || chain === void 0 ? void 0 : chain.chainNamespace, chain === null || chain === void 0 ? void 0 : chain.chainId, options.clientId) || {}), chain))
|
|
41
46
|
});
|
|
42
|
-
this.
|
|
47
|
+
this.currentChainId = options.defaultChainId || chains[0].chainId;
|
|
48
|
+
}
|
|
49
|
+
get currentChain() {
|
|
50
|
+
return this.coreOptions.chains.find(chain => chain.chainId === this.currentChainId);
|
|
43
51
|
}
|
|
44
52
|
get connected() {
|
|
45
|
-
return Boolean(this.
|
|
53
|
+
return Boolean(this.connectedConnector);
|
|
46
54
|
}
|
|
47
55
|
get provider() {
|
|
48
|
-
if (this.status !==
|
|
56
|
+
if (this.status !== CONNECTOR_STATUS.NOT_READY && this.commonJRPCProvider) {
|
|
49
57
|
return this.commonJRPCProvider;
|
|
50
58
|
}
|
|
51
59
|
return null;
|
|
52
60
|
}
|
|
61
|
+
get connectedConnector() {
|
|
62
|
+
return this.connectors.find(connector => connector.name === this.connectedConnectorName) || null;
|
|
63
|
+
}
|
|
53
64
|
set provider(_) {
|
|
54
65
|
throw new Error("Not implemented");
|
|
55
66
|
}
|
|
56
67
|
async init() {
|
|
57
|
-
this.
|
|
58
|
-
|
|
59
|
-
|
|
68
|
+
this.initCachedConnectorAndChainId();
|
|
69
|
+
|
|
70
|
+
// get project config
|
|
60
71
|
let projectConfig;
|
|
61
72
|
try {
|
|
62
73
|
var _this$coreOptions$acc;
|
|
63
|
-
projectConfig = await fetchProjectConfig(this.coreOptions.clientId, this.coreOptions.web3AuthNetwork, (_this$coreOptions$acc = this.coreOptions.
|
|
74
|
+
projectConfig = await fetchProjectConfig(this.coreOptions.clientId, this.coreOptions.web3AuthNetwork, (_this$coreOptions$acc = this.coreOptions.accountAbstractionConfig) === null || _this$coreOptions$acc === void 0 ? void 0 : _this$coreOptions$acc.smartAccountType);
|
|
64
75
|
} catch (e) {
|
|
65
76
|
log.error("Failed to fetch project configurations", e);
|
|
66
77
|
throw WalletInitializationError.notReady("failed to fetch project configurations", e);
|
|
67
78
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} else {
|
|
83
|
-
this.walletAdapters[adapterName].setAdapterSettings({
|
|
84
|
-
sessionTime: this.coreOptions.sessionTime,
|
|
85
|
-
clientId: this.coreOptions.clientId,
|
|
86
|
-
web3AuthNetwork: this.coreOptions.web3AuthNetwork,
|
|
87
|
-
useCoreKitKey: this.coreOptions.useCoreKitKey
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
if (adapterName === WALLET_ADAPTERS.AUTH) {
|
|
91
|
-
const authAdapter = this.walletAdapters[adapterName];
|
|
92
|
-
const {
|
|
93
|
-
whitelabel
|
|
94
|
-
} = projectConfig;
|
|
95
|
-
this.coreOptions.uiConfig = deepmerge(cloneDeep(whitelabel || {}), this.coreOptions.uiConfig || {});
|
|
96
|
-
if (!this.coreOptions.uiConfig.mode) this.coreOptions.uiConfig.mode = "light";
|
|
97
|
-
const {
|
|
98
|
-
sms_otp_enabled: smsOtpEnabled,
|
|
99
|
-
whitelist,
|
|
100
|
-
key_export_enabled: keyExportEnabled
|
|
101
|
-
} = projectConfig;
|
|
102
|
-
if (smsOtpEnabled !== undefined) {
|
|
103
|
-
authAdapter.setAdapterSettings({
|
|
104
|
-
loginConfig: {
|
|
105
|
-
[LOGIN_PROVIDER.SMS_PASSWORDLESS]: {
|
|
106
|
-
showOnModal: smsOtpEnabled,
|
|
107
|
-
showOnDesktop: smsOtpEnabled,
|
|
108
|
-
showOnMobile: smsOtpEnabled,
|
|
109
|
-
showOnSocialBackupFactor: smsOtpEnabled
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
if (whitelist) {
|
|
115
|
-
authAdapter.setAdapterSettings({
|
|
116
|
-
originData: whitelist.signed_urls
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
if (typeof keyExportEnabled === "boolean") {
|
|
120
|
-
this.coreOptions.privateKeyProvider.setKeyExportFlag(keyExportEnabled);
|
|
121
|
-
// dont know if this is required or not.
|
|
122
|
-
this.commonJRPCProvider.setKeyExportFlag(keyExportEnabled);
|
|
123
|
-
}
|
|
124
|
-
if (this.coreOptions.privateKeyProvider) {
|
|
125
|
-
if (authAdapter.currentChainNamespace !== this.coreOptions.privateKeyProvider.currentChainConfig.chainNamespace) {
|
|
126
|
-
throw WalletInitializationError.incompatibleChainNameSpace("private key provider is not compatible with provided chainNamespace for auth adapter");
|
|
127
|
-
}
|
|
128
|
-
authAdapter.setAdapterSettings({
|
|
129
|
-
privateKeyProvider: this.coreOptions.privateKeyProvider
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
authAdapter.setAdapterSettings({
|
|
133
|
-
whiteLabel: this.coreOptions.uiConfig
|
|
134
|
-
});
|
|
135
|
-
if (!authAdapter.privateKeyProvider) {
|
|
136
|
-
throw WalletInitializationError.invalidParams("privateKeyProvider is required for auth adapter");
|
|
137
|
-
}
|
|
138
|
-
} else if (adapterName === WALLET_ADAPTERS.WALLET_CONNECT_V2) {
|
|
139
|
-
const walletConnectAdapter = this.walletAdapters[adapterName];
|
|
140
|
-
const {
|
|
141
|
-
wallet_connect_enabled: walletConnectEnabled,
|
|
142
|
-
wallet_connect_project_id: walletConnectProjectId
|
|
143
|
-
} = projectConfig;
|
|
144
|
-
if (walletConnectEnabled === false) {
|
|
145
|
-
throw WalletInitializationError.invalidParams("Please enable wallet connect v2 addon on dashboard");
|
|
146
|
-
}
|
|
147
|
-
if (!walletConnectProjectId) throw WalletInitializationError.invalidParams("Invalid wallet connect project id. Please configure it on the dashboard");
|
|
148
|
-
walletConnectAdapter.setAdapterSettings({
|
|
149
|
-
adapterSettings: {
|
|
150
|
-
walletConnectInitOptions: {
|
|
151
|
-
projectId: walletConnectProjectId
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
});
|
|
79
|
+
|
|
80
|
+
// setup common JRPC provider
|
|
81
|
+
await this.setupCommonJRPCProvider();
|
|
82
|
+
|
|
83
|
+
// initialize connectors
|
|
84
|
+
this.on(CONNECTOR_EVENTS.CONNECTORS_UPDATED, async ({
|
|
85
|
+
connectors: newConnectors
|
|
86
|
+
}) => {
|
|
87
|
+
await Promise.all(newConnectors.map(this.setupConnector));
|
|
88
|
+
|
|
89
|
+
// emit connector ready event
|
|
90
|
+
if (this.status === CONNECTOR_STATUS.NOT_READY) {
|
|
91
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
92
|
+
this.emit(CONNECTOR_EVENTS.READY);
|
|
155
93
|
}
|
|
156
|
-
return this.walletAdapters[adapterName].init({
|
|
157
|
-
autoConnect: this.cachedAdapter === adapterName
|
|
158
|
-
}).catch(e => log.error(e, adapterName));
|
|
159
94
|
});
|
|
160
|
-
await
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
95
|
+
await this.loadConnectors({
|
|
96
|
+
projectConfig
|
|
97
|
+
});
|
|
98
|
+
await this.initPlugins();
|
|
165
99
|
}
|
|
166
|
-
|
|
167
|
-
return this.
|
|
168
|
-
}
|
|
169
|
-
configureAdapter(adapter) {
|
|
170
|
-
this.checkInitRequirements();
|
|
171
|
-
const providedChainConfig = this.coreOptions.chainConfig;
|
|
172
|
-
if (!providedChainConfig.chainNamespace) throw WalletInitializationError.invalidParams("Please provide chainNamespace in chainConfig");
|
|
173
|
-
const adapterAlreadyExists = this.walletAdapters[adapter.name];
|
|
174
|
-
if (adapterAlreadyExists) throw WalletInitializationError.duplicateAdapterError(`Wallet adapter for ${adapter.name} already exists`);
|
|
175
|
-
if (adapter.adapterNamespace !== ADAPTER_NAMESPACES.MULTICHAIN && adapter.adapterNamespace !== providedChainConfig.chainNamespace) throw WalletInitializationError.incompatibleChainNameSpace(`This wallet adapter belongs to ${adapter.adapterNamespace} which is incompatible with currently used namespace: ${providedChainConfig.chainNamespace}`);
|
|
176
|
-
if (adapter.adapterNamespace === ADAPTER_NAMESPACES.MULTICHAIN && adapter.currentChainNamespace && providedChainConfig.chainNamespace !== adapter.currentChainNamespace) {
|
|
177
|
-
// chainConfig checks are already validated in constructor so using typecast is safe here.
|
|
178
|
-
adapter.setAdapterSettings({
|
|
179
|
-
chainConfig: providedChainConfig
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
this.walletAdapters[adapter.name] = adapter;
|
|
183
|
-
return this;
|
|
100
|
+
getConnector(connectorName) {
|
|
101
|
+
return this.connectors.find(connector => connector.name === connectorName) || null;
|
|
184
102
|
}
|
|
185
103
|
clearCache() {
|
|
186
104
|
if (!storageAvailable(this.storage)) return;
|
|
187
|
-
window[this.storage].removeItem(
|
|
188
|
-
this.
|
|
189
|
-
|
|
190
|
-
async addChain(chainConfig) {
|
|
191
|
-
if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) return this.walletAdapters[this.connectedAdapterName].addChain(chainConfig);
|
|
192
|
-
if (this.commonJRPCProvider) {
|
|
193
|
-
return this.commonJRPCProvider.addChain(chainConfig);
|
|
194
|
-
}
|
|
195
|
-
throw WalletInitializationError.notReady(`No wallet is ready`);
|
|
105
|
+
window[this.storage].removeItem(CONNECTOR_CACHE_KEY);
|
|
106
|
+
window[this.storage].removeItem(CURRENT_CHAIN_CACHE_KEY);
|
|
107
|
+
this.cachedConnector = null;
|
|
196
108
|
}
|
|
197
109
|
async switchChain(params) {
|
|
198
|
-
if (
|
|
110
|
+
if (params.chainId === this.currentChain.chainId) return;
|
|
111
|
+
const newChainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId);
|
|
112
|
+
if (!newChainConfig) throw WalletInitializationError.invalidParams("Invalid chainId");
|
|
113
|
+
if (this.status === CONNECTOR_STATUS.CONNECTED && this.connectedConnector) {
|
|
114
|
+
await this.connectedConnector.switchChain(params);
|
|
115
|
+
this.setCurrentChain(params.chainId);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
199
118
|
if (this.commonJRPCProvider) {
|
|
200
|
-
|
|
119
|
+
await this.commonJRPCProvider.switchChain(params);
|
|
120
|
+
this.setCurrentChain(params.chainId);
|
|
121
|
+
return;
|
|
201
122
|
}
|
|
202
123
|
throw WalletInitializationError.notReady(`No wallet is ready`);
|
|
203
124
|
}
|
|
204
125
|
|
|
205
126
|
/**
|
|
206
|
-
* Connect to a specific wallet
|
|
207
|
-
* @param
|
|
127
|
+
* Connect to a specific wallet connector
|
|
128
|
+
* @param connectorName - Key of the wallet connector to use.
|
|
208
129
|
*/
|
|
209
|
-
async connectTo(
|
|
210
|
-
if (!this.
|
|
130
|
+
async connectTo(connectorName, loginParams) {
|
|
131
|
+
if (!this.getConnector(connectorName) || !this.commonJRPCProvider) throw WalletInitializationError.notFound(`Please add wallet connector for ${connectorName} wallet, before connecting`);
|
|
211
132
|
return new Promise((resolve, reject) => {
|
|
212
|
-
this.once(
|
|
133
|
+
this.once(CONNECTOR_EVENTS.CONNECTED, _ => {
|
|
213
134
|
resolve(this.provider);
|
|
214
135
|
});
|
|
215
|
-
this.once(
|
|
136
|
+
this.once(CONNECTOR_EVENTS.ERRORED, err => {
|
|
216
137
|
reject(err);
|
|
217
138
|
});
|
|
218
|
-
this.
|
|
139
|
+
const connector = this.getConnector(connectorName);
|
|
140
|
+
const initialChain = this.getInitialChainIdForConnector(connector);
|
|
141
|
+
const finalLoginParams = _objectSpread(_objectSpread({}, loginParams), {}, {
|
|
142
|
+
chainId: initialChain.chainId
|
|
143
|
+
});
|
|
144
|
+
connector.connect(finalLoginParams);
|
|
145
|
+
this.setCurrentChain(initialChain.chainId);
|
|
219
146
|
});
|
|
220
147
|
}
|
|
221
148
|
async logout(options = {
|
|
222
149
|
cleanup: false
|
|
223
150
|
}) {
|
|
224
|
-
if (this.status !==
|
|
225
|
-
await this.
|
|
151
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
|
|
152
|
+
await this.connectedConnector.disconnect(options);
|
|
226
153
|
}
|
|
227
154
|
async getUserInfo() {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
155
|
+
var _this$connectedConnec;
|
|
156
|
+
log.debug("Getting user info", this.status, (_this$connectedConnec = this.connectedConnector) === null || _this$connectedConnec === void 0 ? void 0 : _this$connectedConnec.name);
|
|
157
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
|
|
158
|
+
return this.connectedConnector.getUserInfo();
|
|
231
159
|
}
|
|
232
160
|
async enableMFA(loginParams) {
|
|
233
|
-
if (this.status !==
|
|
234
|
-
if (this.
|
|
235
|
-
return this.
|
|
161
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
|
|
162
|
+
if (this.connectedConnector.name !== WALLET_CONNECTORS.AUTH) throw WalletLoginError.unsupportedOperation(`EnableMFA is not supported for this connector.`);
|
|
163
|
+
return this.connectedConnector.enableMFA(loginParams);
|
|
236
164
|
}
|
|
237
165
|
async manageMFA(loginParams) {
|
|
238
|
-
if (this.status !==
|
|
239
|
-
if (this.
|
|
240
|
-
return this.
|
|
166
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
|
|
167
|
+
if (this.connectedConnector.name !== WALLET_CONNECTORS.AUTH) throw WalletLoginError.unsupportedOperation(`ManageMFA is not supported for this connector.`);
|
|
168
|
+
return this.connectedConnector.manageMFA(loginParams);
|
|
241
169
|
}
|
|
242
170
|
async authenticateUser() {
|
|
243
|
-
if (this.status !==
|
|
244
|
-
return this.
|
|
171
|
+
if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
|
|
172
|
+
return this.connectedConnector.authenticateUser();
|
|
245
173
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
174
|
+
getPlugin(name) {
|
|
175
|
+
return this.plugins[name] || null;
|
|
176
|
+
}
|
|
177
|
+
initCachedConnectorAndChainId() {
|
|
178
|
+
this.cachedConnector = storageAvailable(this.storage) ? window[this.storage].getItem(CONNECTOR_CACHE_KEY) : null;
|
|
179
|
+
// init chainId using cached chainId if it exists and is valid, otherwise use the defaultChainId or the first chain
|
|
180
|
+
const cachedChainId = storageAvailable(this.storage) ? window[this.storage].getItem(CURRENT_CHAIN_CACHE_KEY) : null;
|
|
181
|
+
const isCachedChainIdValid = cachedChainId && this.coreOptions.chains.some(chain => chain.chainId === cachedChainId);
|
|
182
|
+
this.currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
|
|
183
|
+
}
|
|
184
|
+
async setupCommonJRPCProvider() {
|
|
185
|
+
this.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({
|
|
186
|
+
chain: this.currentChain,
|
|
187
|
+
chains: this.coreOptions.chains
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
// sync chainId
|
|
191
|
+
this.commonJRPCProvider.on("chainChanged", chainId => this.setCurrentChain(chainId));
|
|
192
|
+
}
|
|
193
|
+
async setupConnector(connector) {
|
|
194
|
+
this.subscribeToConnectorEvents(connector);
|
|
195
|
+
try {
|
|
196
|
+
const initialChain = this.getInitialChainIdForConnector(connector);
|
|
197
|
+
await connector.init({
|
|
198
|
+
autoConnect: this.cachedConnector === connector.name,
|
|
199
|
+
chainId: initialChain.chainId
|
|
254
200
|
});
|
|
201
|
+
} catch (e) {
|
|
202
|
+
log.error(e, connector.name);
|
|
255
203
|
}
|
|
256
|
-
return this;
|
|
257
204
|
}
|
|
258
|
-
|
|
259
|
-
|
|
205
|
+
async loadConnectors({
|
|
206
|
+
projectConfig
|
|
207
|
+
}) {
|
|
208
|
+
var _this$coreOptions$mul;
|
|
209
|
+
// always add auth connector
|
|
210
|
+
const connectorFns = [...(this.coreOptions.connectors || []), authConnector()];
|
|
211
|
+
const config = {
|
|
212
|
+
projectConfig,
|
|
213
|
+
coreOptions: this.coreOptions
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// add injected connectors
|
|
217
|
+
const isMipdEnabled = (_this$coreOptions$mul = this.coreOptions.multiInjectedProviderDiscovery) !== null && _this$coreOptions$mul !== void 0 ? _this$coreOptions$mul : true;
|
|
218
|
+
const chainNamespaces = new Set(this.coreOptions.chains.map(chain => chain.chainNamespace));
|
|
219
|
+
if (isMipdEnabled) {
|
|
220
|
+
// Solana chains
|
|
221
|
+
if (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA)) {
|
|
222
|
+
const {
|
|
223
|
+
createSolanaMipd,
|
|
224
|
+
hasSolanaWalletStandardFeatures,
|
|
225
|
+
walletStandardConnector
|
|
226
|
+
} = await import('./connectors/injected-solana-connector/index.js');
|
|
227
|
+
const solanaMipd = createSolanaMipd();
|
|
228
|
+
// subscribe to new injected connectors
|
|
229
|
+
solanaMipd.on("register", async (...wallets) => {
|
|
230
|
+
const newConnectors = wallets.filter(hasSolanaWalletStandardFeatures).map(wallet => walletStandardConnector(wallet)(config));
|
|
231
|
+
this.setConnectors(newConnectors);
|
|
232
|
+
});
|
|
233
|
+
connectorFns.push(...solanaMipd.get().filter(wallet => hasSolanaWalletStandardFeatures(wallet)).map(walletStandardConnector));
|
|
234
|
+
}
|
|
235
|
+
// EVM chains
|
|
236
|
+
if (chainNamespaces.has(CHAIN_NAMESPACES.EIP155)) {
|
|
237
|
+
const {
|
|
238
|
+
createMipd,
|
|
239
|
+
injectedEvmConnector
|
|
240
|
+
} = await import('./connectors/injected-evm-connector/index.js');
|
|
241
|
+
const evmMipd = createMipd();
|
|
242
|
+
// subscribe to new injected connectors
|
|
243
|
+
evmMipd.subscribe(providerDetails => {
|
|
244
|
+
const newConnectors = providerDetails.map(providerDetail => injectedEvmConnector(providerDetail)(config));
|
|
245
|
+
this.setConnectors(newConnectors);
|
|
246
|
+
});
|
|
247
|
+
connectorFns.push(...evmMipd.getProviders().map(injectedEvmConnector));
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// add WalletConnectV2 connector if enabled
|
|
252
|
+
if (projectConfig.wallet_connect_enabled && projectConfig.wallet_connect_project_id && (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(CHAIN_NAMESPACES.EIP155))) {
|
|
253
|
+
const {
|
|
254
|
+
walletConnectV2Connector
|
|
255
|
+
} = await import('./connectors/wallet-connect-v2-connector/index.js');
|
|
256
|
+
connectorFns.push(walletConnectV2Connector());
|
|
257
|
+
}
|
|
258
|
+
const connectors = connectorFns.map(connectorFn => connectorFn(config));
|
|
259
|
+
this.setConnectors(connectors);
|
|
260
|
+
}
|
|
261
|
+
async initPlugins() {
|
|
262
|
+
const pluginFns = this.coreOptions.plugins || [];
|
|
263
|
+
for (const pluginFn of pluginFns) {
|
|
264
|
+
const plugin = pluginFn();
|
|
265
|
+
if (!this.plugins[plugin.name]) this.plugins[plugin.name] = plugin;
|
|
266
|
+
}
|
|
260
267
|
}
|
|
261
|
-
|
|
262
|
-
|
|
268
|
+
setConnectors(connectors) {
|
|
269
|
+
const connectorSet = new Set(this.connectors.map(connector => connector.name));
|
|
270
|
+
const newConnectors = connectors.map(connector => {
|
|
271
|
+
if (connectorSet.has(connector.name)) return null;
|
|
272
|
+
connectorSet.add(connector.name);
|
|
273
|
+
return connector;
|
|
274
|
+
}).filter(connector => connector !== null);
|
|
275
|
+
if (newConnectors.length > 0) {
|
|
276
|
+
this.connectors = [...this.connectors, ...newConnectors];
|
|
277
|
+
// only emit new connectors
|
|
278
|
+
this.emit(CONNECTOR_EVENTS.CONNECTORS_UPDATED, {
|
|
279
|
+
connectors: newConnectors
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
subscribeToConnectorEvents(connector) {
|
|
284
|
+
connector.on(CONNECTOR_EVENTS.CONNECTED, async data => {
|
|
263
285
|
if (!this.commonJRPCProvider) throw WalletInitializationError.notFound(`CommonJrpcProvider not found`);
|
|
264
286
|
const {
|
|
265
287
|
provider
|
|
266
288
|
} = data;
|
|
267
289
|
let finalProvider = provider.provider || provider;
|
|
268
|
-
// setup aa provider
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
290
|
+
// setup aa provider for external wallets on EVM chains, for in app wallet, it uses WS provider which already supports AA
|
|
291
|
+
const {
|
|
292
|
+
accountAbstractionConfig
|
|
293
|
+
} = this.coreOptions;
|
|
294
|
+
if (this.currentChain.chainNamespace === CHAIN_NAMESPACES.EIP155 && accountAbstractionConfig && data.connector !== WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet) {
|
|
295
|
+
const {
|
|
296
|
+
accountAbstractionProvider
|
|
297
|
+
} = await import('./providers/account-abstraction-provider/index.js');
|
|
298
|
+
const aaProvider = await accountAbstractionProvider({
|
|
299
|
+
accountAbstractionConfig,
|
|
300
|
+
provider,
|
|
301
|
+
chain: this.currentChain,
|
|
302
|
+
chains: this.coreOptions.chains
|
|
303
|
+
});
|
|
304
|
+
finalProvider = aaProvider;
|
|
305
|
+
// TODO: when switching chains to Solana or other chains, we need to switch to the non-AA provider
|
|
272
306
|
}
|
|
273
307
|
this.commonJRPCProvider.updateProviderEngineProxy(finalProvider);
|
|
274
|
-
this.
|
|
275
|
-
this.status =
|
|
276
|
-
this.cacheWallet(data.
|
|
277
|
-
log.debug("connected", this.status, this.
|
|
308
|
+
this.connectedConnectorName = data.connector;
|
|
309
|
+
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
310
|
+
this.cacheWallet(data.connector);
|
|
311
|
+
log.debug("connected", this.status, this.connectedConnectorName);
|
|
278
312
|
this.connectToPlugins(data);
|
|
279
|
-
this.emit(
|
|
313
|
+
this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
|
|
280
314
|
});
|
|
281
|
-
|
|
315
|
+
connector.on(CONNECTOR_EVENTS.DISCONNECTED, async () => {
|
|
282
316
|
// get back to ready state for rehydrating.
|
|
283
|
-
this.status =
|
|
317
|
+
this.status = CONNECTOR_STATUS.READY;
|
|
284
318
|
if (storageAvailable(this.storage)) {
|
|
285
|
-
const
|
|
286
|
-
if (this.
|
|
319
|
+
const cachedConnector = window[this.storage].getItem(CONNECTOR_CACHE_KEY);
|
|
320
|
+
if (this.connectedConnectorName === cachedConnector) {
|
|
287
321
|
this.clearCache();
|
|
288
322
|
}
|
|
289
323
|
}
|
|
290
|
-
log.debug("disconnected", this.status, this.
|
|
291
|
-
await Promise.all(Object.values(this.plugins).map(plugin => {
|
|
324
|
+
log.debug("disconnected", this.status, this.connectedConnectorName);
|
|
325
|
+
await Promise.all(Object.values(this.plugins).map(async plugin => {
|
|
326
|
+
if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
|
|
327
|
+
if (plugin.status !== PLUGIN_STATUS.CONNECTED) return;
|
|
292
328
|
return plugin.disconnect().catch(error => {
|
|
293
|
-
// swallow error if
|
|
329
|
+
// swallow error if connector doesn't supports this plugin.
|
|
294
330
|
if (error.code === 5211) {
|
|
295
331
|
return;
|
|
296
332
|
}
|
|
@@ -298,63 +334,79 @@ class Web3AuthNoModal extends SafeEventEmitter {
|
|
|
298
334
|
log.error(error);
|
|
299
335
|
});
|
|
300
336
|
}));
|
|
301
|
-
this.
|
|
302
|
-
this.emit(
|
|
337
|
+
this.connectedConnectorName = null;
|
|
338
|
+
this.emit(CONNECTOR_EVENTS.DISCONNECTED);
|
|
303
339
|
});
|
|
304
|
-
|
|
305
|
-
this.status =
|
|
306
|
-
this.emit(
|
|
307
|
-
log.debug("connecting", this.status, this.
|
|
340
|
+
connector.on(CONNECTOR_EVENTS.CONNECTING, data => {
|
|
341
|
+
this.status = CONNECTOR_STATUS.CONNECTING;
|
|
342
|
+
this.emit(CONNECTOR_EVENTS.CONNECTING, data);
|
|
343
|
+
log.debug("connecting", this.status, this.connectedConnectorName);
|
|
308
344
|
});
|
|
309
|
-
|
|
310
|
-
this.status =
|
|
345
|
+
connector.on(CONNECTOR_EVENTS.ERRORED, data => {
|
|
346
|
+
this.status = CONNECTOR_STATUS.ERRORED;
|
|
311
347
|
this.clearCache();
|
|
312
|
-
this.emit(
|
|
313
|
-
log.debug("errored", this.status, this.
|
|
348
|
+
this.emit(CONNECTOR_EVENTS.ERRORED, data);
|
|
349
|
+
log.debug("errored", this.status, this.connectedConnectorName);
|
|
314
350
|
});
|
|
315
|
-
|
|
316
|
-
log.debug("
|
|
317
|
-
this.emit(
|
|
351
|
+
connector.on(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data => {
|
|
352
|
+
log.debug("connector data updated", data);
|
|
353
|
+
this.emit(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data);
|
|
318
354
|
});
|
|
319
|
-
|
|
320
|
-
log.debug("
|
|
355
|
+
connector.on(CONNECTOR_EVENTS.CACHE_CLEAR, data => {
|
|
356
|
+
log.debug("connector cache clear", data);
|
|
321
357
|
if (storageAvailable(this.storage)) {
|
|
322
358
|
this.clearCache();
|
|
323
359
|
}
|
|
324
360
|
});
|
|
325
361
|
}
|
|
326
362
|
checkInitRequirements() {
|
|
327
|
-
if (this.status ===
|
|
328
|
-
if (this.status ===
|
|
329
|
-
if (this.status ===
|
|
363
|
+
if (this.status === CONNECTOR_STATUS.CONNECTING) throw WalletInitializationError.notReady("Already pending connection");
|
|
364
|
+
if (this.status === CONNECTOR_STATUS.CONNECTED) throw WalletInitializationError.notReady("Already connected");
|
|
365
|
+
if (this.status === CONNECTOR_STATUS.READY) throw WalletInitializationError.notReady("Connector is already initialized");
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* Gets the initial chain configuration for a connector
|
|
370
|
+
* @throws WalletInitializationError If no chain is found for the connector's namespace
|
|
371
|
+
*/
|
|
372
|
+
getInitialChainIdForConnector(connector) {
|
|
373
|
+
let initialChain = this.currentChain;
|
|
374
|
+
if (initialChain.chainNamespace !== connector.connectorNamespace && connector.connectorNamespace !== CONNECTOR_NAMESPACES.MULTICHAIN) {
|
|
375
|
+
initialChain = this.coreOptions.chains.find(x => x.chainNamespace === connector.connectorNamespace);
|
|
376
|
+
if (!initialChain) throw WalletInitializationError.invalidParams(`No chain found for ${connector.connectorNamespace}`);
|
|
377
|
+
}
|
|
378
|
+
return initialChain;
|
|
330
379
|
}
|
|
331
380
|
cacheWallet(walletName) {
|
|
332
381
|
if (!storageAvailable(this.storage)) return;
|
|
333
|
-
|
|
334
|
-
this.
|
|
382
|
+
// TODO: use the key from user + this
|
|
383
|
+
window[this.storage].setItem(CONNECTOR_CACHE_KEY, walletName);
|
|
384
|
+
this.cachedConnector = walletName;
|
|
385
|
+
}
|
|
386
|
+
setCurrentChain(chainId) {
|
|
387
|
+
if (chainId === this.currentChainId) return;
|
|
388
|
+
const newChain = this.coreOptions.chains.find(chain => chain.chainId === chainId);
|
|
389
|
+
if (!newChain) throw WalletInitializationError.invalidParams(`Invalid chainId: ${chainId}`);
|
|
390
|
+
this.currentChainId = chainId;
|
|
391
|
+
this.cacheCurrentChain(chainId);
|
|
392
|
+
}
|
|
393
|
+
cacheCurrentChain(chainId) {
|
|
394
|
+
if (!storageAvailable(this.storage)) return;
|
|
395
|
+
window[this.storage].setItem(CURRENT_CHAIN_CACHE_KEY, chainId);
|
|
335
396
|
}
|
|
336
397
|
connectToPlugins(data) {
|
|
337
398
|
Object.values(this.plugins).map(async plugin => {
|
|
338
399
|
try {
|
|
339
|
-
if
|
|
340
|
-
|
|
341
|
-
|
|
400
|
+
// skip if it's not compatible with the connector
|
|
401
|
+
if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
|
|
402
|
+
// skip if it's not compatible with the current chain
|
|
403
|
+
if (plugin.pluginNamespace !== PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== this.currentChain.chainNamespace) return;
|
|
404
|
+
// skip if it's already connected
|
|
342
405
|
if (plugin.status === PLUGIN_STATUS.CONNECTED) return;
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
} = this.walletAdapters[this.connectedAdapterName];
|
|
346
|
-
const {
|
|
347
|
-
options,
|
|
348
|
-
sessionId,
|
|
349
|
-
sessionNamespace
|
|
350
|
-
} = authInstance || {};
|
|
351
|
-
await plugin.initWithWeb3Auth(this, options === null || options === void 0 ? void 0 : options.whiteLabel);
|
|
352
|
-
await plugin.connect({
|
|
353
|
-
sessionId,
|
|
354
|
-
sessionNamespace
|
|
355
|
-
});
|
|
406
|
+
await plugin.initWithWeb3Auth(this, this.coreOptions.uiConfig);
|
|
407
|
+
await plugin.connect();
|
|
356
408
|
} catch (error) {
|
|
357
|
-
// swallow error if connector
|
|
409
|
+
// swallow error if connector connector doesn't supports this plugin.
|
|
358
410
|
if (error.code === 5211) {
|
|
359
411
|
return;
|
|
360
412
|
}
|