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