@web3auth/no-modal 10.0.0-beta.1 → 10.0.0-beta.10

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 (307) hide show
  1. package/dist/lib.cjs/base/connector/baseConnector.js +2 -1
  2. package/dist/lib.cjs/base/connector/constants.js +3 -1
  3. package/dist/lib.cjs/base/constants.js +7 -0
  4. package/dist/lib.cjs/base/cookie.js +38 -0
  5. package/dist/lib.cjs/base/deserialize.js +13 -0
  6. package/dist/lib.cjs/base/errors/index.js +3 -22
  7. package/dist/lib.cjs/base/utils.js +24 -6
  8. package/dist/lib.cjs/base/wallet/index.js +2 -4
  9. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +63 -20
  10. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +13 -5
  11. package/dist/lib.cjs/connectors/coinbase-connector/index.js +7 -0
  12. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +7 -3
  13. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +7 -4
  14. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +43 -15
  15. package/dist/lib.cjs/connectors/utils.js +10 -0
  16. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +6 -1
  17. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +6 -2
  18. package/dist/lib.cjs/index.js +13 -9
  19. package/dist/lib.cjs/noModal.js +190 -69
  20. package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +2 -2
  21. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +1 -1
  22. package/dist/lib.cjs/providers/account-abstraction-provider/index.js +5 -0
  23. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +29 -2
  24. package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +25 -3
  25. package/dist/lib.cjs/providers/base-provider/baseProvider.js +2 -0
  26. package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +7 -0
  27. package/dist/lib.cjs/providers/xrpl-provider/index.js +9 -0
  28. package/dist/lib.cjs/react/Web3AuthProvider.js +19 -0
  29. package/dist/lib.cjs/react/{wallet-services-plugin/WalletServicesContext.js → context/WalletServicesInnerContext.js} +18 -33
  30. package/dist/lib.cjs/react/{no-modal → context}/Web3AuthInnerContext.js +37 -95
  31. package/dist/lib.cjs/react/hooks/useCheckout.js +45 -0
  32. package/dist/lib.cjs/react/hooks/useEnableMFA.js +30 -0
  33. package/dist/lib.cjs/react/hooks/useIdentityToken.js +42 -0
  34. package/dist/lib.cjs/react/hooks/useManageMFA.js +30 -0
  35. package/dist/lib.cjs/react/hooks/useSwap.js +45 -0
  36. package/dist/lib.cjs/react/hooks/useSwitchChain.js +32 -0
  37. package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +45 -0
  38. package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +19 -0
  39. package/dist/lib.cjs/react/hooks/useWalletUI.js +45 -0
  40. package/dist/lib.cjs/react/hooks/useWeb3Auth.js +28 -0
  41. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +48 -0
  42. package/dist/lib.cjs/react/hooks/useWeb3AuthDisconnect.js +30 -0
  43. package/dist/lib.cjs/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
  44. package/dist/lib.cjs/react/hooks/useWeb3AuthUser.js +50 -0
  45. package/dist/lib.cjs/react/index.js +26 -9
  46. package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +35 -0
  47. package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +36 -0
  48. package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +34 -0
  49. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +62 -0
  50. package/dist/lib.cjs/react/solana/index.js +13 -0
  51. package/dist/lib.cjs/react/wagmi/constants.js +16 -0
  52. package/dist/lib.cjs/react/wagmi/index.js +7 -0
  53. package/dist/lib.cjs/react/wagmi/provider.js +189 -0
  54. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +4 -5
  55. package/dist/lib.cjs/types/base/connector/constants.d.ts +2 -0
  56. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +18 -16
  57. package/dist/lib.cjs/types/base/constants.d.ts +5 -0
  58. package/dist/lib.cjs/types/base/cookie.d.ts +10 -0
  59. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +40 -12
  60. package/dist/lib.cjs/types/base/deserialize.d.ts +3 -0
  61. package/dist/lib.cjs/types/base/errors/index.d.ts +1 -2
  62. package/dist/lib.cjs/types/base/hooks/index.d.ts +3 -23
  63. package/dist/lib.cjs/types/base/index.d.ts +1 -0
  64. package/dist/lib.cjs/types/base/interfaces.d.ts +9 -4
  65. package/dist/lib.cjs/types/base/plugin/IPlugin.d.ts +1 -1
  66. package/dist/lib.cjs/types/base/utils.d.ts +3 -1
  67. package/dist/lib.cjs/types/base/wallet/index.d.ts +18 -17
  68. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +5 -6
  69. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +3 -2
  70. package/dist/lib.cjs/types/connectors/coinbase-connector/coinbaseConnector.d.ts +1 -1
  71. package/dist/lib.cjs/types/connectors/index.d.ts +1 -1
  72. package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -1
  73. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +2 -2
  74. package/dist/lib.cjs/types/connectors/utils.d.ts +8 -0
  75. package/dist/lib.cjs/types/noModal.d.ts +20 -9
  76. package/dist/lib.cjs/types/plugins/nft-checkout-plugin/plugin.d.ts +2 -2
  77. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +2 -2
  78. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +3 -2
  79. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/smartAccounts/index.d.ts +1 -1
  80. package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -1
  81. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +1 -1
  82. package/dist/lib.cjs/types/providers/index.d.ts +0 -2
  83. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +1 -1
  84. package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +1 -1
  85. package/dist/lib.cjs/types/react/context/WalletServicesInnerContext.d.ts +6 -0
  86. package/dist/lib.cjs/types/react/{no-modal → context}/Web3AuthInnerContext.d.ts +1 -1
  87. package/dist/lib.cjs/types/react/hooks/index.d.ts +13 -0
  88. package/dist/lib.cjs/types/react/hooks/useCheckout.d.ts +8 -0
  89. package/dist/lib.cjs/types/react/hooks/useEnableMFA.d.ts +7 -0
  90. package/dist/lib.cjs/types/react/hooks/useIdentityToken.d.ts +13 -0
  91. package/dist/lib.cjs/types/react/hooks/useManageMFA.d.ts +7 -0
  92. package/dist/lib.cjs/types/react/hooks/useSwap.d.ts +8 -0
  93. package/dist/lib.cjs/types/react/hooks/useSwitchChain.d.ts +7 -0
  94. package/dist/lib.cjs/types/react/hooks/useWalletConnectScanner.d.ts +8 -0
  95. package/dist/lib.cjs/types/react/hooks/useWalletUI.d.ts +8 -0
  96. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +3 -0
  97. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +9 -0
  98. package/dist/lib.cjs/types/react/hooks/useWeb3AuthDisconnect.d.ts +9 -0
  99. package/dist/lib.cjs/types/react/hooks/useWeb3AuthInner.d.ts +2 -0
  100. package/dist/lib.cjs/types/react/hooks/useWeb3AuthUser.d.ts +9 -0
  101. package/dist/lib.cjs/types/react/index.d.ts +3 -2
  102. package/dist/lib.cjs/types/react/interfaces.d.ts +21 -0
  103. package/dist/lib.cjs/types/react/solana/hooks/index.d.ts +4 -0
  104. package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +9 -0
  105. package/dist/lib.cjs/types/react/solana/hooks/useSignMessage.d.ts +8 -0
  106. package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +14 -0
  107. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +8 -0
  108. package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
  109. package/dist/lib.cjs/types/react/wagmi/constants.d.ts +43 -0
  110. package/dist/lib.cjs/types/react/wagmi/index.d.ts +1 -0
  111. package/dist/lib.cjs/types/react/wagmi/interface.d.ts +4 -0
  112. package/dist/lib.cjs/types/react/wagmi/provider.d.ts +3 -0
  113. package/dist/lib.cjs/types/vue/WalletServicesInnerProvider.d.ts +1 -0
  114. package/dist/lib.cjs/types/vue/composables/index.d.ts +13 -0
  115. package/dist/lib.cjs/types/vue/composables/useCheckout.d.ts +9 -0
  116. package/dist/lib.cjs/types/vue/composables/useEnableMFA.d.ts +8 -0
  117. package/dist/lib.cjs/types/vue/composables/useIdentityToken.d.ts +9 -0
  118. package/dist/lib.cjs/types/vue/composables/useManageMFA.d.ts +8 -0
  119. package/dist/lib.cjs/types/vue/composables/useSwap.d.ts +9 -0
  120. package/dist/lib.cjs/types/vue/composables/useSwitchChain.d.ts +10 -0
  121. package/dist/lib.cjs/types/vue/composables/useWalletConnectScanner.d.ts +9 -0
  122. package/dist/lib.cjs/types/vue/composables/useWalletServicesPlugin.d.ts +2 -0
  123. package/dist/lib.cjs/types/vue/composables/useWalletUI.d.ts +9 -0
  124. package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +3 -0
  125. package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +10 -0
  126. package/dist/lib.cjs/types/vue/composables/useWeb3AuthDisconnect.d.ts +10 -0
  127. package/dist/lib.cjs/types/vue/composables/useWeb3AuthInner.d.ts +2 -0
  128. package/dist/lib.cjs/types/vue/composables/useWeb3AuthUser.d.ts +10 -0
  129. package/dist/lib.cjs/types/vue/{wallet-services-plugin/context.d.ts → context/WalletServicesContext.d.ts} +2 -2
  130. package/dist/lib.cjs/types/vue/context/index.d.ts +1 -0
  131. package/dist/lib.cjs/types/vue/index.d.ts +4 -2
  132. package/dist/lib.cjs/types/vue/interfaces.d.ts +30 -0
  133. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +4 -0
  134. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +10 -0
  135. package/dist/lib.cjs/types/vue/solana/composables/useSignMessage.d.ts +9 -0
  136. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +10 -0
  137. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +9 -0
  138. package/dist/lib.cjs/types/vue/solana/index.d.ts +1 -0
  139. package/dist/lib.cjs/types/vue/wagmi/constants.d.ts +43 -0
  140. package/dist/lib.cjs/types/vue/wagmi/index.d.ts +2 -0
  141. package/dist/lib.cjs/types/vue/wagmi/interface.d.ts +4 -0
  142. package/dist/lib.cjs/types/vue/wagmi/provider.d.ts +17 -0
  143. package/dist/lib.cjs/vue/{wallet-services-plugin/WalletServicesProvider.js → WalletServicesInnerProvider.js} +26 -43
  144. package/dist/lib.cjs/vue/{no-modal/Web3AuthProvider.js → Web3AuthProvider.js} +45 -86
  145. package/dist/lib.cjs/vue/composables/useCheckout.js +45 -0
  146. package/dist/lib.cjs/vue/composables/useEnableMFA.js +43 -0
  147. package/dist/lib.cjs/vue/composables/useIdentityToken.js +55 -0
  148. package/dist/lib.cjs/vue/composables/useManageMFA.js +43 -0
  149. package/dist/lib.cjs/vue/composables/useSwap.js +45 -0
  150. package/dist/lib.cjs/vue/composables/useSwitchChain.js +43 -0
  151. package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +45 -0
  152. package/dist/lib.cjs/vue/composables/useWalletServicesPlugin.js +12 -0
  153. package/dist/lib.cjs/vue/composables/useWalletUI.js +45 -0
  154. package/dist/lib.cjs/vue/composables/useWeb3Auth.js +28 -0
  155. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +61 -0
  156. package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +43 -0
  157. package/dist/lib.cjs/vue/{no-modal/composables/useWeb3Auth.js → composables/useWeb3AuthInner.js} +9 -9
  158. package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +64 -0
  159. package/dist/lib.cjs/vue/index.js +28 -8
  160. package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +36 -0
  161. package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +38 -0
  162. package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +36 -0
  163. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +64 -0
  164. package/dist/lib.cjs/vue/solana/index.js +13 -0
  165. package/dist/lib.cjs/vue/wagmi/constants.js +16 -0
  166. package/dist/lib.cjs/vue/wagmi/index.js +7 -0
  167. package/dist/lib.cjs/vue/wagmi/provider.js +244 -0
  168. package/dist/lib.esm/base/connector/baseConnector.js +6 -1
  169. package/dist/lib.esm/base/connector/constants.js +3 -1
  170. package/dist/lib.esm/base/constants.js +6 -1
  171. package/dist/lib.esm/base/cookie.js +34 -0
  172. package/dist/lib.esm/base/deserialize.js +11 -0
  173. package/dist/lib.esm/base/errors/index.js +14 -22
  174. package/dist/lib.esm/base/plugin/errors.js +2 -0
  175. package/dist/lib.esm/base/utils.js +28 -12
  176. package/dist/lib.esm/base/wallet/index.js +2 -4
  177. package/dist/lib.esm/connectors/auth-connector/authConnector.js +83 -30
  178. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +1 -8
  179. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +1 -8
  180. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -15
  181. package/dist/lib.esm/connectors/coinbase-connector/index.js +1 -0
  182. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +11 -12
  183. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +13 -17
  184. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +52 -27
  185. package/dist/lib.esm/connectors/utils.js +14 -1
  186. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +8 -25
  187. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +20 -25
  188. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +15 -15
  189. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -11
  190. package/dist/lib.esm/index.js +12 -14
  191. package/dist/lib.esm/noModal.js +217 -80
  192. package/dist/lib.esm/plugins/nft-checkout-plugin/embed.js +4 -1
  193. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +4 -10
  194. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +7 -9
  195. package/dist/lib.esm/providers/account-abstraction-provider/index.js +2 -2
  196. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +37 -20
  197. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +0 -10
  198. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +26 -3
  199. package/dist/lib.esm/providers/base-provider/baseProvider.js +7 -9
  200. package/dist/lib.esm/providers/base-provider/utils.js +3 -3
  201. package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +1 -0
  202. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +4 -17
  203. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +3 -13
  204. package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +1 -0
  205. package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +1 -0
  206. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +10 -11
  207. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +3 -3
  208. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +1 -0
  209. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +8 -0
  210. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +2 -15
  211. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +5 -12
  212. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
  213. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +3 -0
  214. package/dist/lib.esm/providers/xrpl-provider/index.js +2 -0
  215. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +3 -14
  216. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -0
  217. package/dist/lib.esm/react/Web3AuthProvider.js +17 -0
  218. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +70 -0
  219. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +129 -0
  220. package/dist/lib.esm/react/hooks/useCheckout.js +32 -0
  221. package/dist/lib.esm/react/hooks/useEnableMFA.js +28 -0
  222. package/dist/lib.esm/react/hooks/useIdentityToken.js +40 -0
  223. package/dist/lib.esm/react/hooks/useManageMFA.js +28 -0
  224. package/dist/lib.esm/react/hooks/useSwap.js +32 -0
  225. package/dist/lib.esm/react/hooks/useSwitchChain.js +30 -0
  226. package/dist/lib.esm/react/hooks/useWalletConnectScanner.js +32 -0
  227. package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +17 -0
  228. package/dist/lib.esm/react/hooks/useWalletUI.js +32 -0
  229. package/dist/lib.esm/react/hooks/useWeb3Auth.js +26 -0
  230. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +46 -0
  231. package/dist/lib.esm/react/hooks/useWeb3AuthDisconnect.js +28 -0
  232. package/dist/lib.esm/react/hooks/useWeb3AuthInner.js +13 -0
  233. package/dist/lib.esm/react/hooks/useWeb3AuthUser.js +48 -0
  234. package/dist/lib.esm/react/index.js +14 -5
  235. package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +33 -0
  236. package/dist/lib.esm/react/solana/hooks/useSignMessage.js +34 -0
  237. package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +32 -0
  238. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +42 -0
  239. package/dist/lib.esm/react/solana/index.js +4 -0
  240. package/dist/lib.esm/react/wagmi/constants.js +14 -0
  241. package/dist/lib.esm/react/wagmi/index.js +1 -0
  242. package/dist/lib.esm/react/wagmi/provider.js +179 -0
  243. package/dist/lib.esm/vue/WalletServicesInnerProvider.js +71 -0
  244. package/dist/lib.esm/vue/Web3AuthProvider.js +154 -0
  245. package/dist/lib.esm/vue/composables/useCheckout.js +32 -0
  246. package/dist/lib.esm/vue/composables/useEnableMFA.js +30 -0
  247. package/dist/lib.esm/vue/composables/useIdentityToken.js +42 -0
  248. package/dist/lib.esm/vue/composables/useManageMFA.js +30 -0
  249. package/dist/lib.esm/vue/composables/useSwap.js +32 -0
  250. package/dist/lib.esm/vue/composables/useSwitchChain.js +30 -0
  251. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +32 -0
  252. package/dist/lib.esm/vue/composables/useWalletServicesPlugin.js +10 -0
  253. package/dist/lib.esm/vue/composables/useWalletUI.js +32 -0
  254. package/dist/lib.esm/vue/composables/useWeb3Auth.js +26 -0
  255. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +48 -0
  256. package/dist/lib.esm/vue/composables/useWeb3AuthDisconnect.js +30 -0
  257. package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +11 -0
  258. package/dist/lib.esm/vue/composables/useWeb3AuthUser.js +51 -0
  259. package/dist/lib.esm/vue/index.js +15 -5
  260. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +34 -0
  261. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +36 -0
  262. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +34 -0
  263. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +51 -0
  264. package/dist/lib.esm/vue/solana/index.js +4 -0
  265. package/dist/lib.esm/vue/wagmi/constants.js +14 -0
  266. package/dist/lib.esm/vue/wagmi/index.js +1 -0
  267. package/dist/lib.esm/vue/wagmi/provider.js +237 -0
  268. package/dist/noModal.umd.min.js +1 -1
  269. package/dist/noModal.umd.min.js.LICENSE.txt +0 -26
  270. package/package.json +79 -20
  271. package/dist/lib.cjs/react/no-modal/Web3AuthProvider.js +0 -15
  272. package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesProvider.js +0 -16
  273. package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -26
  274. package/dist/lib.cjs/types/react/no-modal/hooks/index.d.ts +0 -1
  275. package/dist/lib.cjs/types/react/no-modal/hooks/useWeb3Auth.d.ts +0 -2
  276. package/dist/lib.cjs/types/react/no-modal/index.d.ts +0 -3
  277. package/dist/lib.cjs/types/react/no-modal/interfaces.d.ts +0 -15
  278. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesContext.d.ts +0 -7
  279. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesProvider.d.ts +0 -7
  280. package/dist/lib.cjs/types/react/wallet-services-plugin/hooks/index.d.ts +0 -1
  281. package/dist/lib.cjs/types/react/wallet-services-plugin/index.d.ts +0 -4
  282. package/dist/lib.cjs/types/react/wallet-services-plugin/interfaces.d.ts +0 -5
  283. package/dist/lib.cjs/types/vue/no-modal/composables/index.d.ts +0 -1
  284. package/dist/lib.cjs/types/vue/no-modal/composables/useWeb3Auth.d.ts +0 -2
  285. package/dist/lib.cjs/types/vue/no-modal/index.d.ts +0 -3
  286. package/dist/lib.cjs/types/vue/no-modal/interfaces.d.ts +0 -39
  287. package/dist/lib.cjs/types/vue/wallet-services-plugin/WalletServicesProvider.d.ts +0 -1
  288. package/dist/lib.cjs/types/vue/wallet-services-plugin/composables/index.d.ts +0 -1
  289. package/dist/lib.cjs/types/vue/wallet-services-plugin/composables/useWalletServicesPlugin.d.ts +0 -2
  290. package/dist/lib.cjs/types/vue/wallet-services-plugin/index.d.ts +0 -4
  291. package/dist/lib.cjs/types/vue/wallet-services-plugin/interfaces.d.ts +0 -13
  292. package/dist/lib.cjs/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +0 -24
  293. package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +0 -197
  294. package/dist/lib.esm/react/no-modal/Web3AuthProvider.js +0 -13
  295. package/dist/lib.esm/react/no-modal/hooks/useWeb3Auth.js +0 -24
  296. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +0 -95
  297. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesProvider.js +0 -14
  298. package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -24
  299. package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +0 -203
  300. package/dist/lib.esm/vue/no-modal/composables/useWeb3Auth.js +0 -22
  301. package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +0 -96
  302. package/dist/lib.esm/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +0 -22
  303. /package/dist/lib.cjs/types/react/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
  304. /package/dist/lib.cjs/types/react/{wallet-services-plugin/hooks → hooks}/useWalletServicesPlugin.d.ts +0 -0
  305. /package/dist/lib.cjs/types/vue/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
  306. /package/dist/lib.cjs/vue/{wallet-services-plugin/context.js → context/WalletServicesContext.js} +0 -0
  307. /package/dist/lib.esm/vue/{wallet-services-plugin/context.js → context/WalletServicesContext.js} +0 -0
@@ -5,43 +5,53 @@ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var auth = require('@web3auth/auth');
7
7
  var deepmerge = require('deepmerge');
8
- var authConnector = require('./connectors/auth-connector/authConnector.js');
9
8
  var IChainInterface = require('./base/chain/IChainInterface.js');
10
9
  var index = require('./base/errors/index.js');
11
10
  var index$1 = require('./base/wallet/index.js');
12
11
  var constants = require('./base/connector/constants.js');
13
12
  var utils$1 = require('./base/connector/utils.js');
14
13
  var constants$1 = require('./base/constants.js');
14
+ var cookie = require('./base/cookie.js');
15
15
  var loglevel = require('./base/loglevel.js');
16
16
  require('./base/plugin/errors.js');
17
17
  var IPlugin = require('./base/plugin/IPlugin.js');
18
18
  var utils = require('./base/utils.js');
19
+ var deserialize = require('./base/deserialize.js');
20
+ var authConnector = require('./connectors/auth-connector/authConnector.js');
21
+ var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
22
+ var plugin = require('./plugins/wallet-services-plugin/plugin.js');
19
23
  var baseControllers = require('@toruslabs/base-controllers');
20
24
  require('./providers/base-provider/utils.js');
21
25
  var CommonJRPCProvider = require('./providers/base-provider/CommonJRPCProvider.js');
22
26
  require('./providers/base-provider/commonPrivateKeyProvider.js');
23
- var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
24
27
 
25
28
  const _excluded = ["walletScope"];
26
- const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
27
- const CURRENT_CHAIN_CACHE_KEY = "Web3Auth-currentChain";
28
29
  class Web3AuthNoModal extends auth.SafeEventEmitter {
29
- constructor(options) {
30
+ constructor(options, initialState) {
30
31
  super();
31
32
  _defineProperty(this, "coreOptions", void 0);
32
- _defineProperty(this, "connectedConnectorName", null);
33
33
  _defineProperty(this, "status", constants.CONNECTOR_STATUS.NOT_READY);
34
- _defineProperty(this, "cachedConnector", null);
35
- _defineProperty(this, "currentChainId", void 0);
34
+ _defineProperty(this, "aaProvider", null);
36
35
  _defineProperty(this, "connectors", []);
37
36
  _defineProperty(this, "commonJRPCProvider", null);
38
37
  _defineProperty(this, "plugins", {});
39
- _defineProperty(this, "storage", "localStorage");
38
+ _defineProperty(this, "storage", void 0);
39
+ _defineProperty(this, "state", {
40
+ connectedConnectorName: null,
41
+ cachedConnector: null,
42
+ currentChainId: null,
43
+ idToken: null
44
+ });
45
+ _defineProperty(this, "loginMode", constants$1.LOGIN_MODE.NO_MODAL);
40
46
  if (!options.clientId) throw index.WalletInitializationError.invalidParams("Please provide a valid clientId in constructor");
41
47
  if (options.enableLogging) loglevel.log.enableAll();else loglevel.log.setLevel("error");
42
- if (options.storageType === "session") this.storage = "sessionStorage";
48
+ if (!options.storageType) options.storageType = "local";
43
49
  this.coreOptions = options;
44
- this.currentChainId = options.defaultChainId;
50
+ this.storage = this.getStorageMethod();
51
+ this.loadState(initialState);
52
+ if (this.state.idToken && this.coreOptions.ssr) {
53
+ this.status = constants.CONNECTOR_STATUS.CONNECTED;
54
+ }
45
55
  }
46
56
  get currentChain() {
47
57
  var _this$coreOptions$cha;
@@ -56,14 +66,29 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
56
66
  }
57
67
  return null;
58
68
  }
69
+ get connectedConnectorName() {
70
+ return this.state.connectedConnectorName;
71
+ }
72
+ get cachedConnector() {
73
+ return this.state.cachedConnector;
74
+ }
75
+ get currentChainId() {
76
+ return this.state.currentChainId || this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
77
+ }
59
78
  get connectedConnector() {
60
79
  var _this$currentChain;
61
80
  return this.getConnector(this.connectedConnectorName, (_this$currentChain = this.currentChain) === null || _this$currentChain === void 0 ? void 0 : _this$currentChain.chainNamespace);
62
81
  }
82
+ get accountAbstractionProvider() {
83
+ return this.aaProvider;
84
+ }
63
85
  set provider(_) {
64
86
  throw new Error("Not implemented");
65
87
  }
66
- async init() {
88
+ async init(options) {
89
+ const {
90
+ signal
91
+ } = options || {};
67
92
  // get project config
68
93
  let projectConfig;
69
94
  try {
@@ -75,30 +100,37 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
75
100
  authBuildEnv: this.coreOptions.authBuildEnv
76
101
  });
77
102
  } catch (e) {
78
- loglevel.log.error("Failed to fetch project configurations", e);
79
- throw index.WalletInitializationError.notReady("failed to fetch project configurations", e);
103
+ const error = await auth.serializeError(e);
104
+ loglevel.log.error("Failed to fetch project configurations", error);
105
+ throw index.WalletInitializationError.notReady("failed to fetch project configurations", error);
80
106
  }
81
107
  // init config
82
108
  this.initAccountAbstractionConfig(projectConfig);
83
109
  this.initChainsConfig(projectConfig);
84
110
  this.initCachedConnectorAndChainId();
85
111
  // setup common JRPC provider
86
- await this.setupCommonJRPCProvider();
112
+ await utils.withAbort(() => this.setupCommonJRPCProvider(), signal);
87
113
  // initialize connectors
88
114
  this.on(constants.CONNECTOR_EVENTS.CONNECTORS_UPDATED, async ({
89
115
  connectors: newConnectors
90
116
  }) => {
91
- await Promise.all(newConnectors.map(this.setupConnector.bind(this)));
117
+ const onAbortHandler = () => {
118
+ var _this$connectors;
119
+ if (((_this$connectors = this.connectors) === null || _this$connectors === void 0 ? void 0 : _this$connectors.length) > 0) {
120
+ this.cleanup();
121
+ }
122
+ };
123
+ await utils.withAbort(() => Promise.all(newConnectors.map(this.setupConnector.bind(this))), signal, onAbortHandler);
92
124
  // emit connector ready event
93
125
  if (this.status === constants.CONNECTOR_STATUS.NOT_READY) {
94
126
  this.status = constants.CONNECTOR_STATUS.READY;
95
127
  this.emit(constants.CONNECTOR_EVENTS.READY);
96
128
  }
97
129
  });
98
- await this.loadConnectors({
130
+ await utils.withAbort(() => this.loadConnectors({
99
131
  projectConfig
100
- });
101
- await this.initPlugins();
132
+ }), signal);
133
+ await utils.withAbort(() => this.initPlugins(), signal);
102
134
  }
103
135
  // we need to take into account the chainNamespace as for external connectors, same connector name can be used for multiple chain namespaces
104
136
  getConnector(connectorName, chainNamespace) {
@@ -112,10 +144,17 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
112
144
  }) || null;
113
145
  }
114
146
  clearCache() {
115
- if (!utils$1.storageAvailable(this.storage)) return;
116
- window[this.storage].removeItem(CONNECTOR_CACHE_KEY);
117
- window[this.storage].removeItem(CURRENT_CHAIN_CACHE_KEY);
118
- this.cachedConnector = null;
147
+ this.setState({
148
+ connectedConnectorName: null,
149
+ cachedConnector: null,
150
+ currentChainId: null,
151
+ idToken: null
152
+ });
153
+ }
154
+ async cleanup() {
155
+ for (const connector of this.connectors) {
156
+ if (connector.cleanup) await connector.cleanup();
157
+ }
119
158
  }
120
159
  async switchChain(params) {
121
160
  var _this$currentChain2;
@@ -138,11 +177,12 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
138
177
  * Connect to a specific wallet connector
139
178
  * @param connectorName - Key of the wallet connector to use.
140
179
  */
141
- async connectTo(connectorName, loginParams) {
180
+ async connectTo(connectorName, loginParams, loginMode) {
181
+ this.loginMode = loginMode || "no-modal";
142
182
  const connector = this.getConnector(connectorName, loginParams === null || loginParams === void 0 ? void 0 : loginParams.chainNamespace);
143
183
  if (!connector || !this.commonJRPCProvider) throw index.WalletInitializationError.notFound(`Please add wallet connector for ${connectorName} wallet, before connecting`);
144
184
  return new Promise((resolve, reject) => {
145
- this.once(constants.CONNECTOR_EVENTS.CONNECTED, _ => {
185
+ this.once(constants.CONNECTOR_EVENTS.CONNECTED, async _ => {
146
186
  resolve(this.provider);
147
187
  });
148
188
  this.once(constants.CONNECTOR_EVENTS.ERRORED, err => {
@@ -222,6 +262,10 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
222
262
  // if AA is enabled, filter out chains that are not AA-supported
223
263
  if (this.coreOptions.accountAbstractionConfig) {
224
264
  // write a for loop over accountAbstractionConfig.chains and check if the chainId is valid
265
+ if (this.coreOptions.accountAbstractionConfig.chains.length === 0) {
266
+ loglevel.log.error("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
267
+ throw index.WalletInitializationError.invalidParams("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
268
+ }
225
269
  for (const chain of this.coreOptions.accountAbstractionConfig.chains) {
226
270
  if (!utils.isHexStrict(chain.chainId)) {
227
271
  loglevel.log.error(`Please provide a valid chainId in accountAbstractionConfig.chains for chain ${chain.chainId}`);
@@ -254,27 +298,38 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
254
298
  }
255
299
  }
256
300
  initAccountAbstractionConfig(projectConfig) {
301
+ var _this$coreOptions$acc2;
257
302
  const isAAEnabled = Boolean(this.coreOptions.accountAbstractionConfig || (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts));
258
303
  if (!isAAEnabled) return;
259
- // merge project config with core options, code config take precedence over project config
304
+ // merge smart account config from project config with core options, core options will take precedence over project config
260
305
  const _ref = (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts) || {},
261
306
  {
262
307
  walletScope
263
308
  } = _ref,
264
309
  configWithoutWalletScope = _objectWithoutProperties(_ref, _excluded);
265
- this.coreOptions.accountAbstractionConfig = deepmerge(configWithoutWalletScope || {}, this.coreOptions.accountAbstractionConfig || {});
310
+ const aaChainMap = new Map();
311
+ const allAaChains = [...((configWithoutWalletScope === null || configWithoutWalletScope === void 0 ? void 0 : configWithoutWalletScope.chains) || []), ...(((_this$coreOptions$acc2 = this.coreOptions.accountAbstractionConfig) === null || _this$coreOptions$acc2 === void 0 ? void 0 : _this$coreOptions$acc2.chains) || [])];
312
+ for (const chain of allAaChains) {
313
+ const existingChain = aaChainMap.get(chain.chainId);
314
+ if (!existingChain) aaChainMap.set(chain.chainId, chain);else aaChainMap.set(chain.chainId, _objectSpread(_objectSpread({}, existingChain), chain));
315
+ }
316
+ this.coreOptions.accountAbstractionConfig = _objectSpread(_objectSpread({}, deepmerge(configWithoutWalletScope || {}, this.coreOptions.accountAbstractionConfig || {})), {}, {
317
+ chains: Array.from(aaChainMap.values())
318
+ });
266
319
  // determine if we should use AA with external wallet
267
320
  if (this.coreOptions.useAAWithExternalWallet === undefined) {
268
321
  this.coreOptions.useAAWithExternalWallet = walletScope === constants$1.SMART_ACCOUNT_WALLET_SCOPE.ALL;
269
322
  }
270
323
  }
271
324
  initCachedConnectorAndChainId() {
272
- this.cachedConnector = utils$1.storageAvailable(this.storage) ? window[this.storage].getItem(CONNECTOR_CACHE_KEY) : null;
273
325
  // init chainId using cached chainId if it exists and is valid, otherwise use the defaultChainId or the first chain
274
- const cachedChainId = utils$1.storageAvailable(this.storage) ? window[this.storage].getItem(CURRENT_CHAIN_CACHE_KEY) : null;
326
+ const cachedChainId = this.state.currentChainId;
275
327
  const isCachedChainIdValid = cachedChainId && this.coreOptions.chains.some(chain => chain.chainId === cachedChainId);
276
328
  if (this.coreOptions.defaultChainId && !utils.isHexStrict(this.coreOptions.defaultChainId)) throw index.WalletInitializationError.invalidParams("Please provide a valid defaultChainId in constructor");
277
- this.currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
329
+ const currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
330
+ this.setState({
331
+ currentChainId
332
+ });
278
333
  }
279
334
  async setupCommonJRPCProvider() {
280
335
  this.commonJRPCProvider = await CommonJRPCProvider.CommonJRPCProvider.getProviderInstance({
@@ -297,7 +352,8 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
297
352
  }
298
353
  }
299
354
  async loadConnectors({
300
- projectConfig
355
+ projectConfig,
356
+ modalMode
301
357
  }) {
302
358
  var _this$coreOptions$mul;
303
359
  // always add auth connector
@@ -310,7 +366,7 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
310
366
  const isExternalWalletEnabled = Boolean(projectConfig.externalWalletAuth);
311
367
  const isMipdEnabled = isExternalWalletEnabled && ((_this$coreOptions$mul = this.coreOptions.multiInjectedProviderDiscovery) !== null && _this$coreOptions$mul !== void 0 ? _this$coreOptions$mul : true);
312
368
  const chainNamespaces = new Set(this.coreOptions.chains.map(chain => chain.chainNamespace));
313
- if (isMipdEnabled) {
369
+ if (isMipdEnabled && utils.isBrowser()) {
314
370
  // Solana chains
315
371
  if (chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.SOLANA)) {
316
372
  const {
@@ -342,9 +398,14 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
342
398
  }
343
399
  }
344
400
  // it's safe to add it here as if there is a MetaMask injected provider, this won't override it
345
- connectorFns.push(metamaskConnector.metaMaskConnector());
401
+ // only set headless to true if modal SDK is used, otherwise just use the modal from native Metamask SDK
402
+ if (utils.isBrowser() && (chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.EIP155) || chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.SOLANA))) {
403
+ connectorFns.push(metamaskConnector.metaMaskConnector(modalMode ? {
404
+ headless: true
405
+ } : undefined));
406
+ }
346
407
  // add WalletConnectV2 connector if external wallets are enabled
347
- if (isExternalWalletEnabled && (chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.EIP155))) {
408
+ if (utils.isBrowser() && isExternalWalletEnabled && (chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.EIP155))) {
348
409
  const {
349
410
  walletConnectV2Connector
350
411
  } = await Promise.resolve().then(function () { return require('./connectors/wallet-connect-v2-connector/index.js'); });
@@ -354,7 +415,15 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
354
415
  this.setConnectors(connectors);
355
416
  }
356
417
  async initPlugins() {
357
- const pluginFns = this.coreOptions.plugins || [];
418
+ const {
419
+ chains,
420
+ plugins
421
+ } = this.coreOptions;
422
+ const pluginFns = plugins || [];
423
+ const isWsSupportedChain = chains.some(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 || x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA);
424
+ if (isWsSupportedChain) {
425
+ pluginFns.push(plugin.walletServicesPlugin());
426
+ }
358
427
  for (const pluginFn of pluginFns) {
359
428
  const plugin = pluginFn();
360
429
  if (!this.plugins[plugin.name]) this.plugins[plugin.name] = plugin;
@@ -384,50 +453,77 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
384
453
  const {
385
454
  provider
386
455
  } = data;
456
+ // when ssr is enabled, we need to get the idToken from the connector.
457
+ if (this.coreOptions.ssr) {
458
+ try {
459
+ const data = await connector.authenticateUser();
460
+ if (!data.idToken) throw index.WalletLoginError.connectionError("No idToken found");
461
+ this.setState({
462
+ idToken: data.idToken
463
+ });
464
+ } catch (error) {
465
+ loglevel.log.error(error);
466
+ this.status = constants.CONNECTOR_STATUS.ERRORED;
467
+ this.emit(constants.CONNECTOR_EVENTS.ERRORED, error);
468
+ return;
469
+ }
470
+ }
387
471
  let finalProvider = provider.provider || provider;
388
- // setup AA provider for external wallets on EVM chains, no need for app wallet as it uses WS provider which already supports AA
472
+ // setup AA provider if AA is enabled
389
473
  const {
390
474
  accountAbstractionConfig
391
475
  } = this.coreOptions;
392
- const doesAASupportCurrentChain = ((_this$currentChain3 = this.currentChain) === null || _this$currentChain3 === void 0 ? void 0 : _this$currentChain3.chainNamespace) === baseControllers.CHAIN_NAMESPACES.EIP155 && (accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo = accountAbstractionConfig.chains) === null || _accountAbstractionCo === void 0 ? void 0 : _accountAbstractionCo.some(chain => {
476
+ const isAaSupportedForCurrentChain = ((_this$currentChain3 = this.currentChain) === null || _this$currentChain3 === void 0 ? void 0 : _this$currentChain3.chainNamespace) === baseControllers.CHAIN_NAMESPACES.EIP155 && (accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo = accountAbstractionConfig.chains) === null || _accountAbstractionCo === void 0 ? void 0 : _accountAbstractionCo.some(chain => {
393
477
  var _this$currentChain4;
394
478
  return chain.chainId === ((_this$currentChain4 = this.currentChain) === null || _this$currentChain4 === void 0 ? void 0 : _this$currentChain4.chainId);
395
479
  }));
396
- const isExternalWalletAndAAEnabled = data.connector !== index$1.WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet;
397
- if (isExternalWalletAndAAEnabled && doesAASupportCurrentChain) {
480
+ if (isAaSupportedForCurrentChain && (data.connector === index$1.WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
398
481
  var _accountAbstractionCo2;
399
- const aaChainIds = new Set((accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo2 = accountAbstractionConfig.chains) === null || _accountAbstractionCo2 === void 0 ? void 0 : _accountAbstractionCo2.map(chain => chain.chainId)) || []);
400
482
  const {
401
- accountAbstractionProvider
483
+ accountAbstractionProvider,
484
+ toEoaProvider
402
485
  } = await Promise.resolve().then(function () { return require('./providers/account-abstraction-provider/index.js'); });
486
+ // for embedded wallets, we use ws-embed provider which is AA provider, need to derive EOA provider
487
+ const eoaProvider = data.connector === index$1.WALLET_CONNECTORS.AUTH ? await toEoaProvider(provider) : provider;
488
+ const aaChainIds = new Set((accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo2 = accountAbstractionConfig.chains) === null || _accountAbstractionCo2 === void 0 ? void 0 : _accountAbstractionCo2.map(chain => chain.chainId)) || []);
403
489
  const aaProvider = await accountAbstractionProvider({
404
490
  accountAbstractionConfig,
405
- provider,
491
+ provider: eoaProvider,
406
492
  chain: this.currentChain,
407
493
  chains: this.coreOptions.chains.filter(chain => aaChainIds.has(chain.chainId))
408
494
  });
409
- finalProvider = aaProvider;
495
+ this.aaProvider = aaProvider;
496
+ // if external wallet is used and AA is enabled for external wallets, use AA provider
497
+ // for embedded wallets, we use ws-embed provider which already supports AA
498
+ if (data.connector !== index$1.WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet) {
499
+ finalProvider = this.aaProvider;
500
+ }
410
501
  }
411
502
  this.commonJRPCProvider.updateProviderEngineProxy(finalProvider);
412
- this.connectedConnectorName = data.connector;
413
- this.status = constants.CONNECTOR_STATUS.CONNECTED;
503
+ this.setState({
504
+ connectedConnectorName: data.connector
505
+ });
414
506
  this.cacheWallet(data.connector);
507
+ this.status = constants.CONNECTOR_STATUS.CONNECTED;
415
508
  loglevel.log.debug("connected", this.status, this.connectedConnectorName);
416
509
  this.connectToPlugins(data);
417
- this.emit(constants.CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
510
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTED, _objectSpread(_objectSpread({}, data), {}, {
511
+ loginMode: this.loginMode
512
+ }));
418
513
  });
419
514
  connector.on(constants.CONNECTOR_EVENTS.DISCONNECTED, async () => {
515
+ // re-setup commonJRPCProvider
516
+ this.commonJRPCProvider.removeAllListeners();
517
+ this.setupCommonJRPCProvider();
420
518
  // get back to ready state for rehydrating.
421
519
  this.status = constants.CONNECTOR_STATUS.READY;
422
- if (utils$1.storageAvailable(this.storage)) {
423
- const cachedConnector = window[this.storage].getItem(CONNECTOR_CACHE_KEY);
424
- if (this.connectedConnectorName === cachedConnector) {
425
- this.clearCache();
426
- }
520
+ const cachedConnector = this.state.cachedConnector;
521
+ if (this.connectedConnectorName === cachedConnector) {
522
+ this.clearCache();
427
523
  }
428
524
  loglevel.log.debug("disconnected", this.status, this.connectedConnectorName);
429
525
  await Promise.all(Object.values(this.plugins).map(async plugin => {
430
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
526
+ if (!plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
431
527
  if (plugin.status !== IPlugin.PLUGIN_STATUS.CONNECTED) return;
432
528
  return plugin.disconnect().catch(error => {
433
529
  // swallow error if connector doesn't supports this plugin.
@@ -438,7 +534,9 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
438
534
  loglevel.log.error(error);
439
535
  });
440
536
  }));
441
- this.connectedConnectorName = null;
537
+ this.setState({
538
+ connectedConnectorName: null
539
+ });
442
540
  this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED);
443
541
  });
444
542
  connector.on(constants.CONNECTOR_EVENTS.CONNECTING, data => {
@@ -452,20 +550,25 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
452
550
  this.emit(constants.CONNECTOR_EVENTS.ERRORED, data);
453
551
  loglevel.log.debug("errored", this.status, this.connectedConnectorName);
454
552
  });
553
+ connector.on(constants.CONNECTOR_EVENTS.REHYDRATION_ERROR, error => {
554
+ this.status = constants.CONNECTOR_STATUS.READY;
555
+ this.clearCache();
556
+ this.emit(constants.CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
557
+ });
455
558
  connector.on(constants.CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data => {
456
559
  loglevel.log.debug("connector data updated", data);
457
560
  this.emit(constants.CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data);
458
561
  });
459
562
  connector.on(constants.CONNECTOR_EVENTS.CACHE_CLEAR, data => {
460
563
  loglevel.log.debug("connector cache clear", data);
461
- if (utils$1.storageAvailable(this.storage)) {
462
- this.clearCache();
463
- }
564
+ this.clearCache();
565
+ });
566
+ connector.on(constants.CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled => {
567
+ loglevel.log.debug("mfa enabled", isMFAEnabled);
568
+ this.emit(constants.CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled);
464
569
  });
465
570
  }
466
571
  checkInitRequirements() {
467
- if (this.status === constants.CONNECTOR_STATUS.CONNECTING) throw index.WalletInitializationError.notReady("Already pending connection");
468
- if (this.status === constants.CONNECTOR_STATUS.CONNECTED) throw index.WalletInitializationError.notReady("Already connected");
469
572
  if (this.status === constants.CONNECTOR_STATUS.READY) throw index.WalletInitializationError.notReady("Connector is already initialized");
470
573
  }
471
574
  /**
@@ -482,28 +585,24 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
482
585
  return initialChain;
483
586
  }
484
587
  cacheWallet(walletName) {
485
- if (!utils$1.storageAvailable(this.storage)) return;
486
- // TODO: use the key from user + this
487
- window[this.storage].setItem(CONNECTOR_CACHE_KEY, walletName);
488
- this.cachedConnector = walletName;
588
+ this.setState({
589
+ cachedConnector: walletName
590
+ });
489
591
  }
490
592
  setCurrentChain(chainId) {
491
593
  if (chainId === this.currentChainId) return;
492
594
  const newChain = this.coreOptions.chains.find(chain => chain.chainId === chainId);
493
595
  if (!newChain) throw index.WalletInitializationError.invalidParams(`Invalid chainId: ${chainId}`);
494
- this.currentChainId = chainId;
495
- this.cacheCurrentChain(chainId);
496
- }
497
- cacheCurrentChain(chainId) {
498
- if (!utils$1.storageAvailable(this.storage)) return;
499
- window[this.storage].setItem(CURRENT_CHAIN_CACHE_KEY, chainId);
596
+ this.setState({
597
+ currentChainId: chainId
598
+ });
500
599
  }
501
600
  connectToPlugins(data) {
502
601
  Object.values(this.plugins).map(async plugin => {
503
602
  try {
504
603
  var _this$currentChain5;
505
604
  // skip if it's not compatible with the connector
506
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
605
+ if (!plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
507
606
  // skip if it's not compatible with the current chain
508
607
  if (plugin.pluginNamespace !== IPlugin.PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== ((_this$currentChain5 = this.currentChain) === null || _this$currentChain5 === void 0 ? void 0 : _this$currentChain5.chainNamespace)) return;
509
608
  // skip if it's already connected
@@ -519,6 +618,28 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
519
618
  }
520
619
  });
521
620
  }
621
+ setState(newState) {
622
+ this.state = _objectSpread(_objectSpread({}, this.state), newState);
623
+ this.storage.setItem(constants$1.WEB3AUTH_STATE_STORAGE_KEY, JSON.stringify(this.state));
624
+ }
625
+ loadState(initialState) {
626
+ if (initialState) {
627
+ this.state = initialState;
628
+ return;
629
+ }
630
+ const state = this.storage.getItem(constants$1.WEB3AUTH_STATE_STORAGE_KEY);
631
+ if (!state) return;
632
+ this.state = deserialize.deserialize(state);
633
+ }
634
+ getStorageMethod() {
635
+ if (this.coreOptions.ssr || this.coreOptions.storageType === "cookies") return cookie.cookieStorage({
636
+ expiry: this.coreOptions.sessionTime
637
+ });
638
+ if (this.coreOptions.storageType === "session" && utils$1.storageAvailable("sessionStorage")) return window.sessionStorage;
639
+ if (this.coreOptions.storageType === "local" && utils$1.storageAvailable("localStorage")) return window.localStorage;
640
+ // If no storage is available, use a memory store.
641
+ return new auth.MemoryStore();
642
+ }
522
643
  }
523
644
 
524
645
  exports.Web3AuthNoModal = Web3AuthNoModal;
@@ -4,7 +4,7 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var auth = require('@web3auth/auth');
5
5
  require('@toruslabs/base-controllers');
6
6
  require('../../base/errors/index.js');
7
- require('../../base/wallet/index.js');
7
+ var index = require('../../base/wallet/index.js');
8
8
  var constants = require('../../base/connector/constants.js');
9
9
  require('jwt-decode');
10
10
  require('../../base/loglevel.js');
@@ -19,7 +19,7 @@ class NFTCheckoutPlugin extends auth.SafeEventEmitter {
19
19
  super();
20
20
  _defineProperty(this, "name", IPlugin.EVM_PLUGINS.NFT_CHECKOUT);
21
21
  _defineProperty(this, "status", IPlugin.PLUGIN_STATUS.DISCONNECTED);
22
- _defineProperty(this, "SUPPORTED_CONNECTORS", ["all"]);
22
+ _defineProperty(this, "SUPPORTED_CONNECTORS", Object.values(index.WALLET_CONNECTORS));
23
23
  _defineProperty(this, "pluginNamespace", IPlugin.PLUGIN_NAMESPACES.EIP155);
24
24
  _defineProperty(this, "web3auth", null);
25
25
  _defineProperty(this, "nftCheckoutEmbedInstance", null);
@@ -20,7 +20,7 @@ class WalletServicesPlugin extends auth.SafeEventEmitter {
20
20
  super(...args);
21
21
  _defineProperty(this, "name", IPlugin.EVM_PLUGINS.WALLET_SERVICES);
22
22
  _defineProperty(this, "status", IPlugin.PLUGIN_STATUS.DISCONNECTED);
23
- _defineProperty(this, "SUPPORTED_CONNECTORS", [index.WALLET_CONNECTORS.AUTH, index.WALLET_CONNECTORS.SFA]);
23
+ _defineProperty(this, "SUPPORTED_CONNECTORS", [index.WALLET_CONNECTORS.AUTH]);
24
24
  _defineProperty(this, "pluginNamespace", IPlugin.PLUGIN_NAMESPACES.MULTICHAIN);
25
25
  _defineProperty(this, "wsEmbedInstance", void 0);
26
26
  _defineProperty(this, "provider", null);
@@ -6,6 +6,7 @@ var ethereumControllers = require('@toruslabs/ethereum-controllers');
6
6
 
7
7
 
8
8
  exports.accountAbstractionProvider = AccountAbstractionProvider.accountAbstractionProvider;
9
+ exports.toEoaProvider = AccountAbstractionProvider.toEoaProvider;
9
10
  Object.defineProperty(exports, "BiconomySmartAccount", {
10
11
  enumerable: true,
11
12
  get: function () { return ethereumControllers.BiconomySmartAccount; }
@@ -14,6 +15,10 @@ Object.defineProperty(exports, "KernelSmartAccount", {
14
15
  enumerable: true,
15
16
  get: function () { return ethereumControllers.KernelSmartAccount; }
16
17
  });
18
+ Object.defineProperty(exports, "MetamaskSmartAccount", {
19
+ enumerable: true,
20
+ get: function () { return ethereumControllers.MetamaskSmartAccount; }
21
+ });
17
22
  Object.defineProperty(exports, "NexusSmartAccount", {
18
23
  enumerable: true,
19
24
  get: function () { return ethereumControllers.NexusSmartAccount; }
@@ -107,8 +107,16 @@ class AccountAbstractionProvider extends baseProvider.BaseProvider {
107
107
  chain,
108
108
  transport: viem.http(currentChain.rpcTarget)
109
109
  });
110
+ const [eoaAddress] = await eoaProvider.request({
111
+ method: ethereumControllers.METHOD_TYPES.ETH_REQUEST_ACCOUNTS
112
+ });
113
+ const walletClient = viem.createWalletClient({
114
+ account: eoaAddress,
115
+ chain,
116
+ transport: viem.custom(eoaProvider)
117
+ });
110
118
  this._smartAccount = await this.config.smartAccountInit.getSmartAccount({
111
- owner: eoaProvider,
119
+ walletClient,
112
120
  client: this._publicClient
113
121
  });
114
122
  // setup bundler and paymaster
@@ -137,7 +145,7 @@ class AccountAbstractionProvider extends baseProvider.BaseProvider {
137
145
  handlers: providerHandlers
138
146
  });
139
147
  engine.push(aaMiddleware);
140
- const eoaMiddleware = ethRpcMiddlewares.eoaProviderAsMiddleware(eoaProvider);
148
+ const eoaMiddleware = ethRpcMiddlewares.providerAsMiddleware(eoaProvider);
141
149
  engine.push(eoaMiddleware);
142
150
  const provider = auth.providerFromEngine(engine);
143
151
  this.updateProviderEngineProxy(provider);
@@ -228,6 +236,14 @@ const accountAbstractionProvider = async ({
228
236
  smartAccountInit = new TrustSmartAccount(smartAccountConfig);
229
237
  break;
230
238
  }
239
+ case ethereumControllers.SMART_ACCOUNT.METAMASK:
240
+ {
241
+ const {
242
+ MetamaskSmartAccount
243
+ } = await import('@toruslabs/ethereum-controllers');
244
+ smartAccountInit = new MetamaskSmartAccount(smartAccountConfig);
245
+ break;
246
+ }
231
247
  default:
232
248
  throw new Error("Smart account type not supported");
233
249
  }
@@ -239,9 +255,20 @@ const accountAbstractionProvider = async ({
239
255
  smartAccountChainsConfig
240
256
  });
241
257
  };
258
+ const toEoaProvider = async aaProvider => {
259
+ // derive EOA provider from AA provider
260
+ const engine = new auth.JRPCEngine();
261
+ const eoaMiddleware = await ethRpcMiddlewares.createEoaMiddleware({
262
+ aaProvider
263
+ });
264
+ engine.push(eoaMiddleware);
265
+ engine.push(ethRpcMiddlewares.providerAsMiddleware(aaProvider));
266
+ return auth.providerFromEngine(engine);
267
+ };
242
268
 
243
269
  Object.defineProperty(exports, "SMART_ACCOUNT", {
244
270
  enumerable: true,
245
271
  get: function () { return ethereumControllers.SMART_ACCOUNT; }
246
272
  });
247
273
  exports.accountAbstractionProvider = accountAbstractionProvider;
274
+ exports.toEoaProvider = toEoaProvider;
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var ethereumControllers = require('@toruslabs/ethereum-controllers');
4
5
  var auth = require('@web3auth/auth');
5
6
 
6
7
  async function createAaMiddleware({
@@ -8,7 +9,7 @@ async function createAaMiddleware({
8
9
  handlers
9
10
  }) {
10
11
  const [eoaAddress] = await eoaProvider.request({
11
- method: "eth_accounts"
12
+ method: ethereumControllers.METHOD_TYPES.GET_ACCOUNTS
12
13
  });
13
14
  /**
14
15
  * Validates the keyholder address, and returns a normalized (i.e. lowercase)
@@ -155,7 +156,27 @@ async function createAaMiddleware({
155
156
  personal_sign: auth.createAsyncMiddleware(personalSign)
156
157
  });
157
158
  }
158
- function eoaProviderAsMiddleware(provider) {
159
+ async function createEoaMiddleware({
160
+ aaProvider
161
+ }) {
162
+ async function getAccounts(_req, res) {
163
+ const [, eoaAddress] = await aaProvider.request({
164
+ method: ethereumControllers.METHOD_TYPES.GET_ACCOUNTS
165
+ });
166
+ res.result = [eoaAddress];
167
+ }
168
+ async function requestAccounts(_req, res) {
169
+ const [, eoaAddress] = await aaProvider.request({
170
+ method: ethereumControllers.METHOD_TYPES.ETH_REQUEST_ACCOUNTS
171
+ });
172
+ res.result = [eoaAddress];
173
+ }
174
+ return auth.createScaffoldMiddleware({
175
+ eth_accounts: auth.createAsyncMiddleware(getAccounts),
176
+ eth_requestAccounts: auth.createAsyncMiddleware(requestAccounts)
177
+ });
178
+ }
179
+ function providerAsMiddleware(provider) {
159
180
  return async (req, res, _next, end) => {
160
181
  // send request to provider
161
182
  try {
@@ -169,4 +190,5 @@ function eoaProviderAsMiddleware(provider) {
169
190
  }
170
191
 
171
192
  exports.createAaMiddleware = createAaMiddleware;
172
- exports.eoaProviderAsMiddleware = eoaProviderAsMiddleware;
193
+ exports.createEoaMiddleware = createEoaMiddleware;
194
+ exports.providerAsMiddleware = providerAsMiddleware;
@@ -106,6 +106,8 @@ class BaseProvider extends baseControllers.BaseController {
106
106
  // we want events to propagate from Ethereum provider -> wrapper provider (e.g. CommonJRPC provider) -> SDK -> dapp
107
107
  // ensure that only one handler is added for each event
108
108
  const reEmitHandler = event => {
109
+ // skip newListener event
110
+ if (event === "newListener") return;
109
111
  // listen to the event from the Ethereum provider
110
112
  provider.on(event, (...args) => {
111
113
  // handle chainChanged event: update chainId state