@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
@@ -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 deepmerge = require('deepmerge');
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$1 = require('./base/utils.js');
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/adapter/constants.js');
17
- var baseControllers = require('@toruslabs/base-controllers');
16
+ var constants = require('./base/connector/constants.js');
18
17
 
19
- const ADAPTER_CACHE_KEY = "Web3Auth-cachedAdapter";
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, "connectedAdapterName", null);
26
- _defineProperty(this, "status", constants.ADAPTER_STATUS.NOT_READY);
27
- _defineProperty(this, "cachedAdapter", null);
28
- _defineProperty(this, "walletAdapters", {});
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
- if (!options.privateKeyProvider && !options.chainConfig) {
35
- throw index.WalletInitializationError.invalidParams("Please provide chainConfig or privateKeyProvider");
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
- options.chainConfig = options.chainConfig || options.privateKeyProvider.currentChainConfig;
38
- if (!((_options$chainConfig = options.chainConfig) !== null && _options$chainConfig !== void 0 && _options$chainConfig.chainNamespace) || !Object.values(IChainInterface.CHAIN_NAMESPACES).includes((_options$chainConfig2 = options.chainConfig) === null || _options$chainConfig2 === void 0 ? void 0 : _options$chainConfig2.chainNamespace)) throw index.WalletInitializationError.invalidParams("Please provide a valid chainNamespace in chainConfig");
39
- if (options.storageKey === "session") this.storage = "sessionStorage";
40
- this.cachedAdapter = utils.storageAvailable(this.storage) ? window[this.storage].getItem(ADAPTER_CACHE_KEY) : null;
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
- chainConfig: _objectSpread(_objectSpread({}, config.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)
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.subscribeToAdapterEvents = this.subscribeToAdapterEvents.bind(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.connectedAdapterName);
55
+ return Boolean(this.connectedConnector);
48
56
  }
49
57
  get provider() {
50
- if (this.status !== constants.ADAPTER_STATUS.NOT_READY && this.commonJRPCProvider) {
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.commonJRPCProvider = await CommonJRPCProvider.CommonJRPCProvider.getProviderInstance({
60
- chainConfig: this.coreOptions.chainConfig
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$1.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);
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
- const initPromises = Object.keys(this.walletAdapters).map(async adapterName => {
71
- this.subscribeToAdapterEvents(this.walletAdapters[adapterName]);
72
- // if adapter doesn't have any chain config yet then set it based on provided namespace and chainId.
73
- // if no chainNamespace or chainId is being provided, it will connect with mainnet.
74
- if (!this.walletAdapters[adapterName].chainConfigProxy) {
75
- const providedChainConfig = this.coreOptions.chainConfig;
76
- if (!providedChainConfig.chainNamespace) throw index.WalletInitializationError.invalidParams("Please provide chainNamespace in chainConfig");
77
- this.walletAdapters[adapterName].setAdapterSettings({
78
- chainConfig: providedChainConfig,
79
- sessionTime: this.coreOptions.sessionTime,
80
- clientId: this.coreOptions.clientId,
81
- web3AuthNetwork: this.coreOptions.web3AuthNetwork,
82
- useCoreKitKey: this.coreOptions.useCoreKitKey
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 Promise.all(initPromises);
163
- if (this.status === constants.ADAPTER_STATUS.NOT_READY) {
164
- this.status = constants.ADAPTER_STATUS.READY;
165
- this.emit(constants.ADAPTER_EVENTS.READY);
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
- configureAdapter(adapter) {
172
- this.checkInitRequirements();
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(ADAPTER_CACHE_KEY);
190
- this.cachedAdapter = null;
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 (this.status === constants.ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) return this.walletAdapters[this.connectedAdapterName].switchChain(params);
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
- return this.commonJRPCProvider.switchChain(params);
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 adapter
209
- * @param walletName - Key of the walletAdapter to use.
129
+ * Connect to a specific wallet connector
130
+ * @param connectorName - Key of the wallet connector to use.
210
131
  */
211
- async connectTo(walletName, loginParams) {
212
- if (!this.walletAdapters[walletName] || !this.commonJRPCProvider) throw index.WalletInitializationError.notFound(`Please add wallet adapter for ${walletName} wallet, before connecting`);
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.ADAPTER_EVENTS.CONNECTED, _ => {
135
+ this.once(constants.CONNECTOR_EVENTS.CONNECTED, _ => {
215
136
  resolve(this.provider);
216
137
  });
217
- this.once(constants.ADAPTER_EVENTS.ERRORED, err => {
138
+ this.once(constants.CONNECTOR_EVENTS.ERRORED, err => {
218
139
  reject(err);
219
140
  });
220
- this.walletAdapters[walletName].connect(loginParams);
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.ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw index.WalletLoginError.notConnectedError(`No wallet is connected`);
227
- await this.walletAdapters[this.connectedAdapterName].disconnect(options);
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
- loglevel.log.debug("Getting user info", this.status, this.connectedAdapterName);
231
- if (this.status !== constants.ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw index.WalletLoginError.notConnectedError(`No wallet is connected`);
232
- return this.walletAdapters[this.connectedAdapterName].getUserInfo();
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.ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw index.WalletLoginError.notConnectedError(`No wallet is connected`);
236
- if (this.connectedAdapterName !== index$1.WALLET_ADAPTERS.AUTH) throw index.WalletLoginError.unsupportedOperation(`EnableMFA is not supported for this adapter.`);
237
- return this.walletAdapters[this.connectedAdapterName].enableMFA(loginParams);
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.ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw index.WalletLoginError.notConnectedError(`No wallet is connected`);
241
- if (this.connectedAdapterName !== index$1.WALLET_ADAPTERS.AUTH) throw index.WalletLoginError.unsupportedOperation(`ManageMFA is not supported for this adapter.`);
242
- return this.walletAdapters[this.connectedAdapterName].manageMFA(loginParams);
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.ADAPTER_STATUS.CONNECTED || !this.connectedAdapterName) throw index.WalletLoginError.notConnectedError(`No wallet is connected`);
246
- return this.walletAdapters[this.connectedAdapterName].authenticateUser();
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
- addPlugin(plugin) {
249
- if (this.plugins[plugin.name]) throw index.WalletInitializationError.duplicateAdapterError(`Plugin ${plugin.name} already exist`);
250
- if (plugin.pluginNamespace !== IPlugin.PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== this.coreOptions.chainConfig.chainNamespace) throw index.WalletInitializationError.incompatibleChainNameSpace(`This plugin belongs to ${plugin.pluginNamespace} namespace which is incompatible with currently used namespace: ${this.coreOptions.chainConfig.chainNamespace}`);
251
- this.plugins[plugin.name] = plugin;
252
- if (this.status === constants.ADAPTER_STATUS.CONNECTED && this.connectedAdapterName) {
253
- // web3auth is already connected. can initialize plugins
254
- this.connectToPlugins({
255
- adapter: this.connectedAdapterName
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
- getPlugin(name) {
261
- return this.plugins[name] || null;
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
- subscribeToAdapterEvents(walletAdapter) {
264
- walletAdapter.on(constants.ADAPTER_EVENTS.CONNECTED, async data => {
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 after adapter is connected and private key provider is setup
271
- if (this.coreOptions.accountAbstractionProvider && (data.adapter === index$1.WALLET_ADAPTERS.AUTH || data.adapter !== index$1.WALLET_ADAPTERS.AUTH && this.coreOptions.useAAWithExternalWallet)) {
272
- await this.coreOptions.accountAbstractionProvider.setupProvider(provider); // Don't change this to finalProvider
273
- finalProvider = this.coreOptions.accountAbstractionProvider;
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.connectedAdapterName = data.adapter;
277
- this.status = constants.ADAPTER_STATUS.CONNECTED;
278
- this.cacheWallet(data.adapter);
279
- loglevel.log.debug("connected", this.status, this.connectedAdapterName);
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.ADAPTER_EVENTS.CONNECTED, _objectSpread({}, data));
315
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
282
316
  });
283
- walletAdapter.on(constants.ADAPTER_EVENTS.DISCONNECTED, async () => {
317
+ connector.on(constants.CONNECTOR_EVENTS.DISCONNECTED, async () => {
284
318
  // get back to ready state for rehydrating.
285
- this.status = constants.ADAPTER_STATUS.READY;
286
- if (utils.storageAvailable(this.storage)) {
287
- const cachedAdapter = window[this.storage].getItem(ADAPTER_CACHE_KEY);
288
- if (this.connectedAdapterName === cachedAdapter) {
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.connectedAdapterName);
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 adapter doesn't supports this plugin.
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.connectedAdapterName = null;
304
- this.emit(constants.ADAPTER_EVENTS.DISCONNECTED);
339
+ this.connectedConnectorName = null;
340
+ this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED);
305
341
  });
306
- walletAdapter.on(constants.ADAPTER_EVENTS.CONNECTING, data => {
307
- this.status = constants.ADAPTER_STATUS.CONNECTING;
308
- this.emit(constants.ADAPTER_EVENTS.CONNECTING, data);
309
- loglevel.log.debug("connecting", this.status, this.connectedAdapterName);
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
- walletAdapter.on(constants.ADAPTER_EVENTS.ERRORED, data => {
312
- this.status = constants.ADAPTER_STATUS.ERRORED;
347
+ connector.on(constants.CONNECTOR_EVENTS.ERRORED, data => {
348
+ this.status = constants.CONNECTOR_STATUS.ERRORED;
313
349
  this.clearCache();
314
- this.emit(constants.ADAPTER_EVENTS.ERRORED, data);
315
- loglevel.log.debug("errored", this.status, this.connectedAdapterName);
350
+ this.emit(constants.CONNECTOR_EVENTS.ERRORED, data);
351
+ loglevel.log.debug("errored", this.status, this.connectedConnectorName);
316
352
  });
317
- walletAdapter.on(constants.ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data => {
318
- loglevel.log.debug("adapter data updated", data);
319
- this.emit(constants.ADAPTER_EVENTS.ADAPTER_DATA_UPDATED, data);
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
- walletAdapter.on(constants.ADAPTER_EVENTS.CACHE_CLEAR, data => {
322
- loglevel.log.debug("adapter cache clear", data);
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.ADAPTER_STATUS.CONNECTING) throw index.WalletInitializationError.notReady("Already pending connection");
330
- if (this.status === constants.ADAPTER_STATUS.CONNECTED) throw index.WalletInitializationError.notReady("Already connected");
331
- if (this.status === constants.ADAPTER_STATUS.READY) throw index.WalletInitializationError.notReady("Adapter is already initialized");
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
- window[this.storage].setItem(ADAPTER_CACHE_KEY, walletName);
336
- this.cachedAdapter = walletName;
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 (!plugin.SUPPORTED_ADAPTERS.includes("all") && !plugin.SUPPORTED_ADAPTERS.includes(data.adapter)) {
342
- return;
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
- const {
346
- authInstance
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 adapter doesn't supports this plugin.
411
+ // swallow error if connector connector doesn't supports this plugin.
360
412
  if (error.code === 5211) {
361
413
  return;
362
414
  }