@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.
Files changed (245) hide show
  1. package/dist/lib.cjs/base/chain/IChainInterface.js +2 -2
  2. package/dist/lib.cjs/base/chain/config.js +63 -22
  3. package/dist/lib.cjs/base/connector/baseConnector.js +67 -0
  4. package/dist/lib.cjs/base/connector/constants.js +26 -0
  5. package/dist/lib.cjs/base/errors/index.js +2 -2
  6. package/dist/lib.cjs/base/plugin/errors.js +2 -2
  7. package/dist/lib.cjs/base/wallet/index.js +15 -20
  8. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +392 -0
  9. package/dist/lib.cjs/{adapters/base-evm-adapter/baseEvmAdapter.js → connectors/base-evm-connector/baseEvmConnector.js} +22 -19
  10. package/dist/lib.cjs/{adapters/base-solana-adapter/baseSolanaAdapter.js → connectors/base-solana-connector/baseSolanaConnector.js} +24 -23
  11. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +151 -0
  12. package/dist/lib.cjs/connectors/injected-evm-connector/index.js +12 -0
  13. package/dist/lib.cjs/{adapters/default-evm-adapter/injectedEvmAdapter.js → connectors/injected-evm-connector/injectedEvmConnector.js} +54 -38
  14. package/dist/lib.cjs/connectors/injected-solana-connector/index.js +25 -0
  15. package/dist/lib.cjs/{adapters/default-solana-adapter/walletStandardAdapter.js → connectors/injected-solana-connector/walletStandardConnector.js} +57 -48
  16. package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.js +40 -90
  17. package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.js +23 -26
  18. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/index.js +20 -0
  19. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +417 -0
  20. package/dist/lib.cjs/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.js +12 -25
  21. package/dist/lib.cjs/index.js +100 -82
  22. package/dist/lib.cjs/noModal.js +291 -239
  23. package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +9 -4
  24. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +43 -199
  25. package/dist/lib.cjs/providers/account-abstraction-provider/index.js +32 -0
  26. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +99 -31
  27. package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +21 -26
  28. package/dist/lib.cjs/providers/base-provider/baseProvider.js +29 -24
  29. package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +2 -13
  30. package/dist/lib.cjs/providers/base-provider/index.js +18 -0
  31. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +34 -57
  32. package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +1 -30
  33. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +9 -11
  34. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +3 -5
  35. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +83 -2
  36. package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +24 -54
  37. package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +18 -27
  38. package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +5 -5
  39. package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +44 -18
  40. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +23 -58
  41. package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -3
  42. package/dist/lib.cjs/react/no-modal/Web3AuthInnerContext.js +18 -42
  43. package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesContext.js +3 -0
  44. package/dist/lib.cjs/vue/no-modal/Web3AuthProvider.js +16 -42
  45. package/dist/lib.cjs/vue/wallet-services-plugin/WalletServicesProvider.js +4 -0
  46. package/dist/lib.esm/base/chain/IChainInterface.js +2 -2
  47. package/dist/lib.esm/base/chain/config.js +63 -22
  48. package/dist/lib.esm/base/connector/baseConnector.js +65 -0
  49. package/dist/lib.esm/base/connector/constants.js +22 -0
  50. package/dist/lib.esm/base/errors/index.js +2 -2
  51. package/dist/lib.esm/base/plugin/errors.js +2 -2
  52. package/dist/lib.esm/base/wallet/index.js +11 -16
  53. package/dist/lib.esm/connectors/auth-connector/authConnector.js +390 -0
  54. package/dist/lib.esm/{adapters/base-evm-adapter/baseEvmAdapter.js → connectors/base-evm-connector/baseEvmConnector.js} +23 -20
  55. package/dist/lib.esm/{adapters/base-solana-adapter/baseSolanaAdapter.js → connectors/base-solana-connector/baseSolanaConnector.js} +25 -24
  56. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +149 -0
  57. package/dist/lib.esm/connectors/injected-evm-connector/index.js +2 -0
  58. package/dist/lib.esm/{adapters/default-evm-adapter/injectedEvmAdapter.js → connectors/injected-evm-connector/injectedEvmConnector.js} +54 -39
  59. package/dist/lib.esm/connectors/injected-solana-connector/index.js +18 -0
  60. package/dist/lib.esm/{adapters/default-solana-adapter/walletStandardAdapter.js → connectors/injected-solana-connector/walletStandardConnector.js} +57 -49
  61. package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.js +41 -91
  62. package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.js +23 -26
  63. package/dist/lib.esm/connectors/wallet-connect-v2-connector/index.js +3 -0
  64. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +415 -0
  65. package/dist/lib.esm/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.js +13 -25
  66. package/dist/lib.esm/index.js +23 -28
  67. package/dist/lib.esm/noModal.js +290 -238
  68. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +9 -4
  69. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +42 -199
  70. package/dist/lib.esm/providers/account-abstraction-provider/index.js +2 -0
  71. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +96 -31
  72. package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +22 -27
  73. package/dist/lib.esm/providers/base-provider/baseProvider.js +29 -24
  74. package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +2 -13
  75. package/dist/lib.esm/providers/base-provider/index.js +5 -0
  76. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +34 -57
  77. package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +2 -30
  78. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +9 -11
  79. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +3 -5
  80. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +83 -2
  81. package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +24 -54
  82. package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +18 -27
  83. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +5 -5
  84. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +44 -18
  85. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +23 -58
  86. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -3
  87. package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +18 -42
  88. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +3 -0
  89. package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +16 -42
  90. package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +4 -0
  91. package/dist/noModal.cjs.js +12650 -24362
  92. package/dist/noModal.umd.min.js +1 -1
  93. package/dist/noModal.umd.min.js.LICENSE.txt +0 -9
  94. package/dist/types/base/chain/IChainInterface.d.ts +2 -2
  95. package/dist/types/base/chain/config.d.ts +2 -2
  96. package/dist/types/base/connector/baseConnector.d.ts +37 -0
  97. package/dist/types/base/{adapter → connector}/constants.d.ts +7 -4
  98. package/dist/types/base/{adapter → connector}/index.d.ts +1 -1
  99. package/dist/types/base/{adapter → connector}/interfaces.d.ts +47 -45
  100. package/dist/types/base/core/IWeb3Auth.d.ts +75 -34
  101. package/dist/types/base/errors/index.d.ts +1 -1
  102. package/dist/types/base/hooks/index.d.ts +2 -6
  103. package/dist/types/base/index.d.ts +1 -1
  104. package/dist/types/base/plugin/IPlugin.d.ts +4 -7
  105. package/dist/types/base/plugin/errors.d.ts +1 -1
  106. package/dist/types/base/utils.d.ts +1 -1
  107. package/dist/types/base/wallet/index.d.ts +9 -13
  108. package/dist/types/connectors/auth-connector/authConnector.d.ts +45 -0
  109. package/dist/types/connectors/auth-connector/index.d.ts +2 -0
  110. package/dist/types/connectors/auth-connector/interface.d.ts +14 -0
  111. package/dist/types/connectors/base-evm-connector/baseEvmConnector.d.ts +7 -0
  112. package/dist/types/connectors/base-evm-connector/index.d.ts +1 -0
  113. package/dist/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +7 -0
  114. package/dist/types/connectors/base-solana-connector/index.d.ts +1 -0
  115. package/dist/types/connectors/coinbase-connector/coinbaseConnector.d.ts +7 -0
  116. package/dist/types/connectors/coinbase-connector/index.d.ts +1 -0
  117. package/dist/types/connectors/index.d.ts +7 -0
  118. package/dist/types/connectors/injected-evm-connector/index.d.ts +2 -0
  119. package/dist/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +34 -0
  120. package/dist/types/connectors/injected-solana-connector/index.d.ts +5 -0
  121. package/dist/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +33 -0
  122. package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/WalletConnectV2Provider.d.ts +3 -4
  123. package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/config.d.ts +4 -4
  124. package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/index.d.ts +1 -1
  125. package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/interface.d.ts +4 -4
  126. package/dist/types/connectors/wallet-connect-v2-connector/walletConnectV2Connector.d.ts +3 -0
  127. package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/walletConnectV2Utils.d.ts +1 -6
  128. package/dist/types/index.d.ts +1 -1
  129. package/dist/types/noModal.d.ts +29 -14
  130. package/dist/types/plugins/nft-checkout-plugin/plugin.d.ts +11 -7
  131. package/dist/types/plugins/wallet-services-plugin/plugin.d.ts +8 -32
  132. package/dist/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +16 -14
  133. package/dist/types/providers/account-abstraction-provider/providers/index.d.ts +0 -1
  134. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/index.d.ts +1 -6
  135. package/dist/types/providers/base-provider/CommonJRPCProvider.d.ts +3 -3
  136. package/dist/types/providers/base-provider/baseProvider.d.ts +14 -11
  137. package/dist/types/providers/base-provider/commonPrivateKeyProvider.d.ts +2 -4
  138. package/dist/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +14 -5
  139. package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
  140. package/dist/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +2 -3
  141. package/dist/types/providers/ethereum-provider/rpc/interfaces.d.ts +0 -13
  142. package/dist/types/providers/solana-provider/interface.d.ts +8 -25
  143. package/dist/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +2 -2
  144. package/dist/types/providers/solana-provider/providers/injectedProviders/index.d.ts +1 -2
  145. package/dist/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +3 -0
  146. package/dist/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +7 -4
  147. package/dist/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.d.ts +4 -4
  148. package/dist/types/providers/solana-provider/rpc/interfaces.d.ts +12 -27
  149. package/dist/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +1 -1
  150. package/dist/types/providers/solana-provider/solanaWallet.d.ts +21 -7
  151. package/dist/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +4 -4
  152. package/dist/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +1 -4
  153. package/dist/types/react/no-modal/interfaces.d.ts +4 -4
  154. package/dist/types/react/wallet-services-plugin/interfaces.d.ts +2 -2
  155. package/dist/types/vue/no-modal/interfaces.d.ts +5 -8
  156. package/dist/types/vue/wallet-services-plugin/interfaces.d.ts +2 -2
  157. package/package.json +8 -7
  158. package/dist/757.noModal.cjs.js +0 -226
  159. package/dist/lib.cjs/adapters/auth-adapter/authAdapter.js +0 -262
  160. package/dist/lib.cjs/adapters/auth-adapter/config.js +0 -17
  161. package/dist/lib.cjs/adapters/coinbase-adapter/coinbaseAdapter.js +0 -156
  162. package/dist/lib.cjs/adapters/default-evm-adapter/index.js +0 -40
  163. package/dist/lib.cjs/adapters/default-evm-adapter/injectedAdapters.js +0 -42
  164. package/dist/lib.cjs/adapters/default-solana-adapter/index.js +0 -40
  165. package/dist/lib.cjs/adapters/default-solana-adapter/injectedAdapters.js +0 -53
  166. package/dist/lib.cjs/adapters/default-solana-adapter/walletStandardHandler.js +0 -77
  167. package/dist/lib.cjs/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.js +0 -376
  168. package/dist/lib.cjs/base/adapter/baseAdapter.js +0 -117
  169. package/dist/lib.cjs/base/adapter/constants.js +0 -24
  170. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.js +0 -29
  171. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.js +0 -22
  172. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.js +0 -30
  173. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.js +0 -30
  174. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.js +0 -29
  175. package/dist/lib.cjs/providers/account-abstraction-provider/providers/smartAccounts/constants.js +0 -11
  176. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.js +0 -185
  177. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.js +0 -106
  178. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.js +0 -12
  179. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.js +0 -75
  180. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.js +0 -109
  181. package/dist/lib.esm/adapters/auth-adapter/authAdapter.js +0 -260
  182. package/dist/lib.esm/adapters/auth-adapter/config.js +0 -15
  183. package/dist/lib.esm/adapters/coinbase-adapter/coinbaseAdapter.js +0 -154
  184. package/dist/lib.esm/adapters/default-evm-adapter/index.js +0 -37
  185. package/dist/lib.esm/adapters/default-evm-adapter/injectedAdapters.js +0 -40
  186. package/dist/lib.esm/adapters/default-solana-adapter/index.js +0 -37
  187. package/dist/lib.esm/adapters/default-solana-adapter/injectedAdapters.js +0 -51
  188. package/dist/lib.esm/adapters/default-solana-adapter/walletStandardHandler.js +0 -75
  189. package/dist/lib.esm/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.js +0 -374
  190. package/dist/lib.esm/base/adapter/baseAdapter.js +0 -115
  191. package/dist/lib.esm/base/adapter/constants.js +0 -20
  192. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.js +0 -27
  193. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.js +0 -20
  194. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.js +0 -28
  195. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.js +0 -28
  196. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.js +0 -27
  197. package/dist/lib.esm/providers/account-abstraction-provider/providers/smartAccounts/constants.js +0 -9
  198. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.js +0 -183
  199. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.js +0 -104
  200. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.js +0 -10
  201. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.js +0 -73
  202. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.js +0 -107
  203. package/dist/types/adapters/auth-adapter/authAdapter.d.ts +0 -42
  204. package/dist/types/adapters/auth-adapter/config.d.ts +0 -2
  205. package/dist/types/adapters/auth-adapter/index.d.ts +0 -3
  206. package/dist/types/adapters/auth-adapter/interface.d.ts +0 -11
  207. package/dist/types/adapters/base-evm-adapter/baseEvmAdapter.d.ts +0 -7
  208. package/dist/types/adapters/base-evm-adapter/index.d.ts +0 -1
  209. package/dist/types/adapters/base-solana-adapter/baseSolanaAdapter.d.ts +0 -7
  210. package/dist/types/adapters/base-solana-adapter/index.d.ts +0 -1
  211. package/dist/types/adapters/coinbase-adapter/coinbaseAdapter.d.ts +0 -33
  212. package/dist/types/adapters/coinbase-adapter/index.d.ts +0 -1
  213. package/dist/types/adapters/default-evm-adapter/index.d.ts +0 -6
  214. package/dist/types/adapters/default-evm-adapter/injectedAdapters.d.ts +0 -4
  215. package/dist/types/adapters/default-evm-adapter/injectedEvmAdapter.d.ts +0 -30
  216. package/dist/types/adapters/default-solana-adapter/index.d.ts +0 -6
  217. package/dist/types/adapters/default-solana-adapter/injectedAdapters.d.ts +0 -4
  218. package/dist/types/adapters/default-solana-adapter/walletStandardAdapter.d.ts +0 -31
  219. package/dist/types/adapters/default-solana-adapter/walletStandardHandler.d.ts +0 -27
  220. package/dist/types/adapters/index.d.ts +0 -7
  221. package/dist/types/adapters/wallet-connect-v2-adapter/walletConnectV2adapter.d.ts +0 -42
  222. package/dist/types/base/adapter/baseAdapter.d.ts +0 -44
  223. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/BiconomySmartAccount.d.ts +0 -14
  224. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/KernelSmartAccount.d.ts +0 -13
  225. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/LightSmartAccount.d.ts +0 -14
  226. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/NexusSmartAccount.d.ts +0 -14
  227. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/SafeSmartAccount.d.ts +0 -13
  228. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/SimpleSmartAccount.d.ts +0 -13
  229. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/TrustSmartAccount.d.ts +0 -13
  230. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/constants.d.ts +0 -9
  231. package/dist/types/providers/account-abstraction-provider/providers/smartAccounts/types.d.ts +0 -22
  232. package/dist/types/providers/account-abstraction-provider/providers/types.d.ts +0 -17
  233. package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/EthereumPrivateKeyProvider.d.ts +0 -30
  234. package/dist/types/providers/ethereum-provider/providers/privateKeyProviders/ethPrivatekeyUtils.d.ts +0 -9
  235. package/dist/types/providers/solana-provider/providers/injectedProviders/injectedProviderProxy.d.ts +0 -3
  236. package/dist/types/providers/solana-provider/providers/injectedProviders/interface.d.ts +0 -5
  237. package/dist/types/providers/solana-provider/providers/injectedProviders/torus/providerHandlers.d.ts +0 -3
  238. package/dist/types/providers/solana-provider/providers/injectedProviders/torus/torusInjectedProvider.d.ts +0 -18
  239. /package/dist/lib.cjs/base/{adapter → connector}/utils.js +0 -0
  240. /package/dist/lib.cjs/{adapters/default-solana-adapter → providers/solana-provider/providers/injectedProviders}/utils.js +0 -0
  241. /package/dist/lib.esm/base/{adapter → connector}/utils.js +0 -0
  242. /package/dist/lib.esm/{adapters/default-solana-adapter → providers/solana-provider/providers/injectedProviders}/utils.js +0 -0
  243. /package/dist/types/base/{adapter → connector}/utils.d.ts +0 -0
  244. /package/dist/types/{adapters/default-solana-adapter → connectors/injected-solana-connector}/utils.d.ts +0 -0
  245. /package/dist/types/{adapters/wallet-connect-v2-adapter → connectors/wallet-connect-v2-connector}/utils.d.ts +0 -0
@@ -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, LOGIN_PROVIDER } from '@web3auth/auth';
4
- import deepmerge from 'deepmerge';
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, ADAPTER_NAMESPACES } from './base/chain/IChainInterface.js';
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 { WALLET_ADAPTERS } from './base/wallet/index.js';
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 { PLUGIN_NAMESPACES, PLUGIN_STATUS } from './base/plugin/IPlugin.js';
14
- import { ADAPTER_STATUS, ADAPTER_EVENTS } from './base/adapter/constants.js';
15
- import { cloneDeep } from '@toruslabs/base-controllers';
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 ADAPTER_CACHE_KEY = "Web3Auth-cachedAdapter";
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, "connectedAdapterName", null);
24
- _defineProperty(this, "status", ADAPTER_STATUS.NOT_READY);
25
- _defineProperty(this, "cachedAdapter", null);
26
- _defineProperty(this, "walletAdapters", {});
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
- if (!options.privateKeyProvider && !options.chainConfig) {
33
- throw WalletInitializationError.invalidParams("Please provide chainConfig or privateKeyProvider");
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
- options.chainConfig = options.chainConfig || options.privateKeyProvider.currentChainConfig;
36
- if (!((_options$chainConfig = options.chainConfig) !== null && _options$chainConfig !== void 0 && _options$chainConfig.chainNamespace) || !Object.values(CHAIN_NAMESPACES).includes((_options$chainConfig2 = options.chainConfig) === null || _options$chainConfig2 === void 0 ? void 0 : _options$chainConfig2.chainNamespace)) throw WalletInitializationError.invalidParams("Please provide a valid chainNamespace in chainConfig");
37
- if (options.storageKey === "session") this.storage = "sessionStorage";
38
- this.cachedAdapter = storageAvailable(this.storage) ? window[this.storage].getItem(ADAPTER_CACHE_KEY) : null;
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
- chainConfig: _objectSpread(_objectSpread({}, getChainConfig((_options$chainConfig3 = options.chainConfig) === null || _options$chainConfig3 === void 0 ? void 0 : _options$chainConfig3.chainNamespace, (_options$chainConfig4 = options.chainConfig) === null || _options$chainConfig4 === void 0 ? void 0 : _options$chainConfig4.chainId) || {}), options.chainConfig)
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.subscribeToAdapterEvents = this.subscribeToAdapterEvents.bind(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.connectedAdapterName);
53
+ return Boolean(this.connectedConnector);
46
54
  }
47
55
  get provider() {
48
- if (this.status !== ADAPTER_STATUS.NOT_READY && this.commonJRPCProvider) {
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.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({
58
- chainConfig: this.coreOptions.chainConfig
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.accountAbstractionProvider) === null || _this$coreOptions$acc === void 0 ? void 0 : _this$coreOptions$acc.config.smartAccountInit.name);
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
- const initPromises = Object.keys(this.walletAdapters).map(async adapterName => {
69
- this.subscribeToAdapterEvents(this.walletAdapters[adapterName]);
70
- // if adapter doesn't have any chain config yet then set it based on provided namespace and chainId.
71
- // if no chainNamespace or chainId is being provided, it will connect with mainnet.
72
- if (!this.walletAdapters[adapterName].chainConfigProxy) {
73
- const providedChainConfig = this.coreOptions.chainConfig;
74
- if (!providedChainConfig.chainNamespace) throw WalletInitializationError.invalidParams("Please provide chainNamespace in chainConfig");
75
- this.walletAdapters[adapterName].setAdapterSettings({
76
- chainConfig: providedChainConfig,
77
- sessionTime: this.coreOptions.sessionTime,
78
- clientId: this.coreOptions.clientId,
79
- web3AuthNetwork: this.coreOptions.web3AuthNetwork,
80
- useCoreKitKey: this.coreOptions.useCoreKitKey
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 Promise.all(initPromises);
161
- if (this.status === ADAPTER_STATUS.NOT_READY) {
162
- this.status = ADAPTER_STATUS.READY;
163
- this.emit(ADAPTER_EVENTS.READY);
164
- }
95
+ await this.loadConnectors({
96
+ projectConfig
97
+ });
98
+ await this.initPlugins();
165
99
  }
166
- getAdapter(adapterName) {
167
- return this.walletAdapters[adapterName] || null;
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(ADAPTER_CACHE_KEY);
188
- this.cachedAdapter = null;
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 (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) return this.walletAdapters[this.connectedAdapterName].switchChain(params);
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
- return this.commonJRPCProvider.switchChain(params);
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 adapter
207
- * @param walletName - Key of the walletAdapter to use.
127
+ * Connect to a specific wallet connector
128
+ * @param connectorName - Key of the wallet connector to use.
208
129
  */
209
- async connectTo(walletName, loginParams) {
210
- if (!this.walletAdapters[walletName] || !this.commonJRPCProvider) throw WalletInitializationError.notFound(`Please add wallet adapter for ${walletName} wallet, before connecting`);
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(ADAPTER_EVENTS.CONNECTED, _ => {
133
+ this.once(CONNECTOR_EVENTS.CONNECTED, _ => {
213
134
  resolve(this.provider);
214
135
  });
215
- this.once(ADAPTER_EVENTS.ERRORED, err => {
136
+ this.once(CONNECTOR_EVENTS.ERRORED, err => {
216
137
  reject(err);
217
138
  });
218
- this.walletAdapters[walletName].connect(loginParams);
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 !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
225
- await this.walletAdapters[this.connectedAdapterName].disconnect(options);
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
- log.debug("Getting user info", this.status, this.connectedAdapterName);
229
- if (this.status !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
230
- return this.walletAdapters[this.connectedAdapterName].getUserInfo();
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 !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
234
- if (this.connectedAdapterName !== WALLET_ADAPTERS.AUTH) throw WalletLoginError.unsupportedOperation(`EnableMFA is not supported for this adapter.`);
235
- return this.walletAdapters[this.connectedAdapterName].enableMFA(loginParams);
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 !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
239
- if (this.connectedAdapterName !== WALLET_ADAPTERS.AUTH) throw WalletLoginError.unsupportedOperation(`ManageMFA is not supported for this adapter.`);
240
- return this.walletAdapters[this.connectedAdapterName].manageMFA(loginParams);
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 !== ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw WalletLoginError.notConnectedError(`No wallet is connected`);
244
- return this.walletAdapters[this.connectedAdapterName].authenticateUser();
171
+ if (this.status !== CONNECTOR_STATUS.CONNECTED || !this.connectedConnector) throw WalletLoginError.notConnectedError(`No wallet is connected`);
172
+ return this.connectedConnector.authenticateUser();
245
173
  }
246
- addPlugin(plugin) {
247
- if (this.plugins[plugin.name]) throw WalletInitializationError.duplicateAdapterError(`Plugin ${plugin.name} already exist`);
248
- if (plugin.pluginNamespace !== PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== this.coreOptions.chainConfig.chainNamespace) throw WalletInitializationError.incompatibleChainNameSpace(`This plugin belongs to ${plugin.pluginNamespace} namespace which is incompatible with currently used namespace: ${this.coreOptions.chainConfig.chainNamespace}`);
249
- this.plugins[plugin.name] = plugin;
250
- if (this.status === ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) {
251
- // web3auth is already connected. can initialize plugins
252
- this.connectToPlugins({
253
- adapter: this.connectedAdapterName
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
- getPlugin(name) {
259
- return this.plugins[name] || null;
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
- subscribeToAdapterEvents(walletAdapter) {
262
- walletAdapter.on(ADAPTER_EVENTS.CONNECTED, async data => {
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 after adapter is connected and private key provider is setup
269
- if (this.coreOptions.accountAbstractionProvider && (data.adapter === WALLET_ADAPTERS.AUTH || data.adapter !== WALLET_ADAPTERS.AUTH && this.coreOptions.useAAWithExternalWallet)) {
270
- await this.coreOptions.accountAbstractionProvider.setupProvider(provider); // Don't change this to finalProvider
271
- finalProvider = this.coreOptions.accountAbstractionProvider;
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.connectedAdapterName = data.adapter;
275
- this.status = ADAPTER_STATUS.CONNECTED;
276
- this.cacheWallet(data.adapter);
277
- log.debug("connected", this.status, this.connectedAdapterName);
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(ADAPTER_EVENTS.CONNECTED, _objectSpread({}, data));
313
+ this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
280
314
  });
281
- walletAdapter.on(ADAPTER_EVENTS.DISCONNECTED, async () => {
315
+ connector.on(CONNECTOR_EVENTS.DISCONNECTED, async () => {
282
316
  // get back to ready state for rehydrating.
283
- this.status = ADAPTER_STATUS.READY;
317
+ this.status = CONNECTOR_STATUS.READY;
284
318
  if (storageAvailable(this.storage)) {
285
- const cachedAdapter = window[this.storage].getItem(ADAPTER_CACHE_KEY);
286
- if (this.connectedAdapterName === cachedAdapter) {
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.connectedAdapterName);
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 adapter doesn't supports this plugin.
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.connectedAdapterName = null;
302
- this.emit(ADAPTER_EVENTS.DISCONNECTED);
337
+ this.connectedConnectorName = null;
338
+ this.emit(CONNECTOR_EVENTS.DISCONNECTED);
303
339
  });
304
- walletAdapter.on(ADAPTER_EVENTS.CONNECTING, data => {
305
- this.status = ADAPTER_STATUS.CONNECTING;
306
- this.emit(ADAPTER_EVENTS.CONNECTING, data);
307
- log.debug("connecting", this.status, this.connectedAdapterName);
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
- walletAdapter.on(ADAPTER_EVENTS.ERRORED, data => {
310
- this.status = ADAPTER_STATUS.ERRORED;
345
+ connector.on(CONNECTOR_EVENTS.ERRORED, data => {
346
+ this.status = CONNECTOR_STATUS.ERRORED;
311
347
  this.clearCache();
312
- this.emit(ADAPTER_EVENTS.ERRORED, data);
313
- log.debug("errored", this.status, this.connectedAdapterName);
348
+ this.emit(CONNECTOR_EVENTS.ERRORED, data);
349
+ log.debug("errored", this.status, this.connectedConnectorName);
314
350
  });
315
- walletAdapter.on(ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data => {
316
- log.debug("adapter data updated", data);
317
- this.emit(ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data);
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
- walletAdapter.on(ADAPTER_EVENTS.CACHE_CLEAR, data => {
320
- log.debug("adapter cache clear", data);
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 === ADAPTER_STATUS.CONNECTING) throw WalletInitializationError.notReady("Already pending connection");
328
- if (this.status === ADAPTER_STATUS.CONNECTED) throw WalletInitializationError.notReady("Already connected");
329
- if (this.status === ADAPTER_STATUS.READY) throw WalletInitializationError.notReady("Adapter is already initialized");
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
- window[this.storage].setItem(ADAPTER_CACHE_KEY, walletName);
334
- this.cachedAdapter = walletName;
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 (!plugin.SUPPORTED_ADAPTERS.includes("all") && !plugin.SUPPORTED_ADAPTERS.includes(data.adapter)) {
340
- return;
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
- const {
344
- authInstance
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 adapter doesn't supports this plugin.
409
+ // swallow error if connector connector doesn't supports this plugin.
358
410
  if (error.code === 5211) {
359
411
  return;
360
412
  }