@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
@@ -1,45 +1,52 @@
1
1
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
2
2
  import _objectSpread from '@babel/runtime/helpers/objectSpread2';
3
3
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
- import { SafeEventEmitter } from '@web3auth/auth';
4
+ import { SafeEventEmitter, serializeError, MemoryStore } from '@web3auth/auth';
5
5
  import deepmerge from 'deepmerge';
6
+ import { cookieStorage } from './base/cookie.js';
7
+ import { deserialize } from './base/deserialize.js';
8
+ import { LOGIN_MODE, SMART_ACCOUNT_WALLET_SCOPE, WEB3AUTH_STATE_STORAGE_KEY } from './base/constants.js';
9
+ import { fetchProjectConfig, withAbort, isHexStrict, isBrowser } from './base/utils.js';
10
+ import { CommonJRPCProvider } from './providers/base-provider/CommonJRPCProvider.js';
6
11
  import { authConnector } from './connectors/auth-connector/authConnector.js';
7
- import { CONNECTOR_NAMESPACES } from './base/chain/IChainInterface.js';
8
- import { WalletInitializationError, WalletLoginError } from './base/errors/index.js';
9
- import { WALLET_CONNECTORS } from './base/wallet/index.js';
10
- import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from './base/connector/constants.js';
12
+ import { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
13
+ import { walletServicesPlugin } from './plugins/wallet-services-plugin/plugin.js';
11
14
  import { storageAvailable } from './base/connector/utils.js';
12
- import { SMART_ACCOUNT_WALLET_SCOPE } from './base/constants.js';
15
+ import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from './base/connector/constants.js';
16
+ import { WalletInitializationError, WalletLoginError } from './base/errors/index.js';
13
17
  import { log } from './base/loglevel.js';
14
- import './base/plugin/errors.js';
15
- import { PLUGIN_STATUS, PLUGIN_NAMESPACES } from './base/plugin/IPlugin.js';
16
- import { fetchProjectConfig, isHexStrict } from './base/utils.js';
18
+ import { CONNECTOR_NAMESPACES } from './base/chain/IChainInterface.js';
19
+ import { WALLET_CONNECTORS } from './base/wallet/index.js';
17
20
  import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
18
- import './providers/base-provider/utils.js';
19
- import { CommonJRPCProvider } from './providers/base-provider/CommonJRPCProvider.js';
20
- import './providers/base-provider/commonPrivateKeyProvider.js';
21
- import { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
21
+ import { PLUGIN_STATUS, PLUGIN_NAMESPACES } from './base/plugin/IPlugin.js';
22
22
 
23
23
  const _excluded = ["walletScope"];
24
- const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
25
- const CURRENT_CHAIN_CACHE_KEY = "Web3Auth-currentChain";
26
24
  class Web3AuthNoModal extends SafeEventEmitter {
27
- constructor(options) {
25
+ constructor(options, initialState) {
28
26
  super();
29
27
  _defineProperty(this, "coreOptions", void 0);
30
- _defineProperty(this, "connectedConnectorName", null);
31
28
  _defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
32
- _defineProperty(this, "cachedConnector", null);
33
- _defineProperty(this, "currentChainId", void 0);
29
+ _defineProperty(this, "aaProvider", null);
34
30
  _defineProperty(this, "connectors", []);
35
31
  _defineProperty(this, "commonJRPCProvider", null);
36
32
  _defineProperty(this, "plugins", {});
37
- _defineProperty(this, "storage", "localStorage");
33
+ _defineProperty(this, "storage", void 0);
34
+ _defineProperty(this, "state", {
35
+ connectedConnectorName: null,
36
+ cachedConnector: null,
37
+ currentChainId: null,
38
+ idToken: null
39
+ });
40
+ _defineProperty(this, "loginMode", LOGIN_MODE.NO_MODAL);
38
41
  if (!options.clientId) throw WalletInitializationError.invalidParams("Please provide a valid clientId in constructor");
39
42
  if (options.enableLogging) log.enableAll();else log.setLevel("error");
40
- if (options.storageType === "session") this.storage = "sessionStorage";
43
+ if (!options.storageType) options.storageType = "local";
41
44
  this.coreOptions = options;
42
- this.currentChainId = options.defaultChainId;
45
+ this.storage = this.getStorageMethod();
46
+ this.loadState(initialState);
47
+ if (this.state.idToken && this.coreOptions.ssr) {
48
+ this.status = CONNECTOR_STATUS.CONNECTED;
49
+ }
43
50
  }
44
51
  get currentChain() {
45
52
  var _this$coreOptions$cha;
@@ -54,14 +61,29 @@ class Web3AuthNoModal extends SafeEventEmitter {
54
61
  }
55
62
  return null;
56
63
  }
64
+ get connectedConnectorName() {
65
+ return this.state.connectedConnectorName;
66
+ }
67
+ get cachedConnector() {
68
+ return this.state.cachedConnector;
69
+ }
70
+ get currentChainId() {
71
+ return this.state.currentChainId || this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
72
+ }
57
73
  get connectedConnector() {
58
74
  var _this$currentChain;
59
75
  return this.getConnector(this.connectedConnectorName, (_this$currentChain = this.currentChain) === null || _this$currentChain === void 0 ? void 0 : _this$currentChain.chainNamespace);
60
76
  }
77
+ get accountAbstractionProvider() {
78
+ return this.aaProvider;
79
+ }
61
80
  set provider(_) {
62
81
  throw new Error("Not implemented");
63
82
  }
64
- async init() {
83
+ async init(options) {
84
+ const {
85
+ signal
86
+ } = options || {};
65
87
  // get project config
66
88
  let projectConfig;
67
89
  try {
@@ -73,31 +95,43 @@ class Web3AuthNoModal extends SafeEventEmitter {
73
95
  authBuildEnv: this.coreOptions.authBuildEnv
74
96
  });
75
97
  } catch (e) {
76
- log.error("Failed to fetch project configurations", e);
77
- throw WalletInitializationError.notReady("failed to fetch project configurations", e);
98
+ const error = await serializeError(e);
99
+ log.error("Failed to fetch project configurations", error);
100
+ throw WalletInitializationError.notReady("failed to fetch project configurations", error);
78
101
  }
102
+
79
103
  // init config
80
104
  this.initAccountAbstractionConfig(projectConfig);
81
105
  this.initChainsConfig(projectConfig);
82
106
  this.initCachedConnectorAndChainId();
107
+
83
108
  // setup common JRPC provider
84
- await this.setupCommonJRPCProvider();
109
+ await withAbort(() => this.setupCommonJRPCProvider(), signal);
110
+
85
111
  // initialize connectors
86
112
  this.on(CONNECTOR_EVENTS.CONNECTORS_UPDATED, async ({
87
113
  connectors: newConnectors
88
114
  }) => {
89
- await Promise.all(newConnectors.map(this.setupConnector.bind(this)));
115
+ const onAbortHandler = () => {
116
+ var _this$connectors;
117
+ if (((_this$connectors = this.connectors) === null || _this$connectors === void 0 ? void 0 : _this$connectors.length) > 0) {
118
+ this.cleanup();
119
+ }
120
+ };
121
+ await withAbort(() => Promise.all(newConnectors.map(this.setupConnector.bind(this))), signal, onAbortHandler);
122
+
90
123
  // emit connector ready event
91
124
  if (this.status === CONNECTOR_STATUS.NOT_READY) {
92
125
  this.status = CONNECTOR_STATUS.READY;
93
126
  this.emit(CONNECTOR_EVENTS.READY);
94
127
  }
95
128
  });
96
- await this.loadConnectors({
129
+ await withAbort(() => this.loadConnectors({
97
130
  projectConfig
98
- });
99
- await this.initPlugins();
131
+ }), signal);
132
+ await withAbort(() => this.initPlugins(), signal);
100
133
  }
134
+
101
135
  // we need to take into account the chainNamespace as for external connectors, same connector name can be used for multiple chain namespaces
102
136
  getConnector(connectorName, chainNamespace) {
103
137
  return this.connectors.find(connector => {
@@ -110,10 +144,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
110
144
  }) || null;
111
145
  }
112
146
  clearCache() {
113
- if (!storageAvailable(this.storage)) return;
114
- window[this.storage].removeItem(CONNECTOR_CACHE_KEY);
115
- window[this.storage].removeItem(CURRENT_CHAIN_CACHE_KEY);
116
- 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
+ }
117
158
  }
118
159
  async switchChain(params) {
119
160
  var _this$currentChain2;
@@ -132,15 +173,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
132
173
  }
133
174
  throw WalletInitializationError.notReady(`No wallet is ready`);
134
175
  }
176
+
135
177
  /**
136
178
  * Connect to a specific wallet connector
137
179
  * @param connectorName - Key of the wallet connector to use.
138
180
  */
139
- async connectTo(connectorName, loginParams) {
181
+ async connectTo(connectorName, loginParams, loginMode) {
182
+ this.loginMode = loginMode || "no-modal";
140
183
  const connector = this.getConnector(connectorName, loginParams === null || loginParams === void 0 ? void 0 : loginParams.chainNamespace);
141
184
  if (!connector || !this.commonJRPCProvider) throw WalletInitializationError.notFound(`Please add wallet connector for ${connectorName} wallet, before connecting`);
142
185
  return new Promise((resolve, reject) => {
143
- this.once(CONNECTOR_EVENTS.CONNECTED, _ => {
186
+ this.once(CONNECTOR_EVENTS.CONNECTED, async _ => {
144
187
  resolve(this.provider);
145
188
  });
146
189
  this.once(CONNECTOR_EVENTS.ERRORED, err => {
@@ -192,6 +235,7 @@ class Web3AuthNoModal extends SafeEventEmitter {
192
235
  if (!existingChain) chainMap.set(chain.chainId, chain);else chainMap.set(chain.chainId, _objectSpread(_objectSpread({}, existingChain), chain));
193
236
  }
194
237
  this.coreOptions.chains = Array.from(chainMap.values());
238
+
195
239
  // validate chains and namespaces
196
240
  if (this.coreOptions.chains.length === 0) {
197
241
  log.error("chain info not found. Please configure chains on dashboard at https://dashboard.web3auth.io");
@@ -217,9 +261,14 @@ class Web3AuthNoModal extends SafeEventEmitter {
217
261
  }
218
262
  }
219
263
  }
264
+
220
265
  // if AA is enabled, filter out chains that are not AA-supported
221
266
  if (this.coreOptions.accountAbstractionConfig) {
222
267
  // write a for loop over accountAbstractionConfig.chains and check if the chainId is valid
268
+ if (this.coreOptions.accountAbstractionConfig.chains.length === 0) {
269
+ log.error("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
270
+ throw WalletInitializationError.invalidParams("Please configure chains for smart accounts on dashboard at https://dashboard.web3auth.io");
271
+ }
223
272
  for (const chain of this.coreOptions.accountAbstractionConfig.chains) {
224
273
  if (!isHexStrict(chain.chainId)) {
225
274
  log.error(`Please provide a valid chainId in accountAbstractionConfig.chains for chain ${chain.chainId}`);
@@ -252,33 +301,47 @@ class Web3AuthNoModal extends SafeEventEmitter {
252
301
  }
253
302
  }
254
303
  initAccountAbstractionConfig(projectConfig) {
304
+ var _this$coreOptions$acc2;
255
305
  const isAAEnabled = Boolean(this.coreOptions.accountAbstractionConfig || (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts));
256
306
  if (!isAAEnabled) return;
257
- // merge project config with core options, code config take precedence over project config
307
+
308
+ // merge smart account config from project config with core options, core options will take precedence over project config
258
309
  const _ref = (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts) || {},
259
310
  {
260
311
  walletScope
261
312
  } = _ref,
262
313
  configWithoutWalletScope = _objectWithoutProperties(_ref, _excluded);
263
- this.coreOptions.accountAbstractionConfig = deepmerge(configWithoutWalletScope || {}, this.coreOptions.accountAbstractionConfig || {});
314
+ const aaChainMap = new Map();
315
+ 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) || [])];
316
+ for (const chain of allAaChains) {
317
+ const existingChain = aaChainMap.get(chain.chainId);
318
+ if (!existingChain) aaChainMap.set(chain.chainId, chain);else aaChainMap.set(chain.chainId, _objectSpread(_objectSpread({}, existingChain), chain));
319
+ }
320
+ this.coreOptions.accountAbstractionConfig = _objectSpread(_objectSpread({}, deepmerge(configWithoutWalletScope || {}, this.coreOptions.accountAbstractionConfig || {})), {}, {
321
+ chains: Array.from(aaChainMap.values())
322
+ });
323
+
264
324
  // determine if we should use AA with external wallet
265
325
  if (this.coreOptions.useAAWithExternalWallet === undefined) {
266
326
  this.coreOptions.useAAWithExternalWallet = walletScope === SMART_ACCOUNT_WALLET_SCOPE.ALL;
267
327
  }
268
328
  }
269
329
  initCachedConnectorAndChainId() {
270
- this.cachedConnector = storageAvailable(this.storage) ? window[this.storage].getItem(CONNECTOR_CACHE_KEY) : null;
271
330
  // init chainId using cached chainId if it exists and is valid, otherwise use the defaultChainId or the first chain
272
- const cachedChainId = storageAvailable(this.storage) ? window[this.storage].getItem(CURRENT_CHAIN_CACHE_KEY) : null;
331
+ const cachedChainId = this.state.currentChainId;
273
332
  const isCachedChainIdValid = cachedChainId && this.coreOptions.chains.some(chain => chain.chainId === cachedChainId);
274
333
  if (this.coreOptions.defaultChainId && !isHexStrict(this.coreOptions.defaultChainId)) throw WalletInitializationError.invalidParams("Please provide a valid defaultChainId in constructor");
275
- this.currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
334
+ const currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
335
+ this.setState({
336
+ currentChainId
337
+ });
276
338
  }
277
339
  async setupCommonJRPCProvider() {
278
340
  this.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({
279
341
  chain: this.currentChain,
280
342
  chains: this.coreOptions.chains
281
343
  });
344
+
282
345
  // sync chainId
283
346
  this.commonJRPCProvider.on("chainChanged", chainId => this.setCurrentChain(chainId));
284
347
  }
@@ -295,7 +358,8 @@ class Web3AuthNoModal extends SafeEventEmitter {
295
358
  }
296
359
  }
297
360
  async loadConnectors({
298
- projectConfig
361
+ projectConfig,
362
+ modalMode
299
363
  }) {
300
364
  var _this$coreOptions$mul;
301
365
  // always add auth connector
@@ -304,11 +368,12 @@ class Web3AuthNoModal extends SafeEventEmitter {
304
368
  projectConfig,
305
369
  coreOptions: this.coreOptions
306
370
  };
371
+
307
372
  // add injected connectors
308
373
  const isExternalWalletEnabled = Boolean(projectConfig.externalWalletAuth);
309
374
  const isMipdEnabled = isExternalWalletEnabled && ((_this$coreOptions$mul = this.coreOptions.multiInjectedProviderDiscovery) !== null && _this$coreOptions$mul !== void 0 ? _this$coreOptions$mul : true);
310
375
  const chainNamespaces = new Set(this.coreOptions.chains.map(chain => chain.chainNamespace));
311
- if (isMipdEnabled) {
376
+ if (isMipdEnabled && isBrowser()) {
312
377
  // Solana chains
313
378
  if (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA)) {
314
379
  const {
@@ -339,10 +404,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
339
404
  connectorFns.push(...evmMipd.getProviders().map(injectedEvmConnector));
340
405
  }
341
406
  }
407
+
342
408
  // it's safe to add it here as if there is a MetaMask injected provider, this won't override it
343
- connectorFns.push(metaMaskConnector());
409
+ // only set headless to true if modal SDK is used, otherwise just use the modal from native Metamask SDK
410
+ if (isBrowser() && (chainNamespaces.has(CHAIN_NAMESPACES.EIP155) || chainNamespaces.has(CHAIN_NAMESPACES.SOLANA))) {
411
+ connectorFns.push(metaMaskConnector(modalMode ? {
412
+ headless: true
413
+ } : undefined));
414
+ }
415
+
344
416
  // add WalletConnectV2 connector if external wallets are enabled
345
- if (isExternalWalletEnabled && (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(CHAIN_NAMESPACES.EIP155))) {
417
+ if (isBrowser() && isExternalWalletEnabled && (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(CHAIN_NAMESPACES.EIP155))) {
346
418
  const {
347
419
  walletConnectV2Connector
348
420
  } = await import('./connectors/wallet-connect-v2-connector/index.js');
@@ -352,7 +424,15 @@ class Web3AuthNoModal extends SafeEventEmitter {
352
424
  this.setConnectors(connectors);
353
425
  }
354
426
  async initPlugins() {
355
- const pluginFns = this.coreOptions.plugins || [];
427
+ const {
428
+ chains,
429
+ plugins
430
+ } = this.coreOptions;
431
+ const pluginFns = plugins || [];
432
+ const isWsSupportedChain = chains.some(x => x.chainNamespace === CHAIN_NAMESPACES.EIP155 || x.chainNamespace === CHAIN_NAMESPACES.SOLANA);
433
+ if (isWsSupportedChain) {
434
+ pluginFns.push(walletServicesPlugin());
435
+ }
356
436
  for (const pluginFn of pluginFns) {
357
437
  const plugin = pluginFn();
358
438
  if (!this.plugins[plugin.name]) this.plugins[plugin.name] = plugin;
@@ -382,50 +462,81 @@ class Web3AuthNoModal extends SafeEventEmitter {
382
462
  const {
383
463
  provider
384
464
  } = data;
465
+
466
+ // when ssr is enabled, we need to get the idToken from the connector.
467
+ if (this.coreOptions.ssr) {
468
+ try {
469
+ const data = await connector.authenticateUser();
470
+ if (!data.idToken) throw WalletLoginError.connectionError("No idToken found");
471
+ this.setState({
472
+ idToken: data.idToken
473
+ });
474
+ } catch (error) {
475
+ log.error(error);
476
+ this.status = CONNECTOR_STATUS.ERRORED;
477
+ this.emit(CONNECTOR_EVENTS.ERRORED, error);
478
+ return;
479
+ }
480
+ }
385
481
  let finalProvider = provider.provider || provider;
386
- // setup AA provider for external wallets on EVM chains, no need for app wallet as it uses WS provider which already supports AA
482
+
483
+ // setup AA provider if AA is enabled
387
484
  const {
388
485
  accountAbstractionConfig
389
486
  } = this.coreOptions;
390
- const doesAASupportCurrentChain = ((_this$currentChain3 = this.currentChain) === null || _this$currentChain3 === void 0 ? void 0 : _this$currentChain3.chainNamespace) === CHAIN_NAMESPACES.EIP155 && (accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo = accountAbstractionConfig.chains) === null || _accountAbstractionCo === void 0 ? void 0 : _accountAbstractionCo.some(chain => {
487
+ const isAaSupportedForCurrentChain = ((_this$currentChain3 = this.currentChain) === null || _this$currentChain3 === void 0 ? void 0 : _this$currentChain3.chainNamespace) === CHAIN_NAMESPACES.EIP155 && (accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo = accountAbstractionConfig.chains) === null || _accountAbstractionCo === void 0 ? void 0 : _accountAbstractionCo.some(chain => {
391
488
  var _this$currentChain4;
392
489
  return chain.chainId === ((_this$currentChain4 = this.currentChain) === null || _this$currentChain4 === void 0 ? void 0 : _this$currentChain4.chainId);
393
490
  }));
394
- const isExternalWalletAndAAEnabled = data.connector !== WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet;
395
- if (isExternalWalletAndAAEnabled && doesAASupportCurrentChain) {
491
+ if (isAaSupportedForCurrentChain && (data.connector === WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
396
492
  var _accountAbstractionCo2;
397
- const aaChainIds = new Set((accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo2 = accountAbstractionConfig.chains) === null || _accountAbstractionCo2 === void 0 ? void 0 : _accountAbstractionCo2.map(chain => chain.chainId)) || []);
398
493
  const {
399
- accountAbstractionProvider
494
+ accountAbstractionProvider,
495
+ toEoaProvider
400
496
  } = await import('./providers/account-abstraction-provider/index.js');
497
+ // for embedded wallets, we use ws-embed provider which is AA provider, need to derive EOA provider
498
+ const eoaProvider = data.connector === WALLET_CONNECTORS.AUTH ? await toEoaProvider(provider) : provider;
499
+ const aaChainIds = new Set((accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo2 = accountAbstractionConfig.chains) === null || _accountAbstractionCo2 === void 0 ? void 0 : _accountAbstractionCo2.map(chain => chain.chainId)) || []);
401
500
  const aaProvider = await accountAbstractionProvider({
402
501
  accountAbstractionConfig,
403
- provider,
502
+ provider: eoaProvider,
404
503
  chain: this.currentChain,
405
504
  chains: this.coreOptions.chains.filter(chain => aaChainIds.has(chain.chainId))
406
505
  });
407
- finalProvider = aaProvider;
506
+ this.aaProvider = aaProvider;
507
+
508
+ // if external wallet is used and AA is enabled for external wallets, use AA provider
509
+ // for embedded wallets, we use ws-embed provider which already supports AA
510
+ if (data.connector !== WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet) {
511
+ finalProvider = this.aaProvider;
512
+ }
408
513
  }
409
514
  this.commonJRPCProvider.updateProviderEngineProxy(finalProvider);
410
- this.connectedConnectorName = data.connector;
411
- this.status = CONNECTOR_STATUS.CONNECTED;
515
+ this.setState({
516
+ connectedConnectorName: data.connector
517
+ });
412
518
  this.cacheWallet(data.connector);
519
+ this.status = CONNECTOR_STATUS.CONNECTED;
413
520
  log.debug("connected", this.status, this.connectedConnectorName);
414
521
  this.connectToPlugins(data);
415
- this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
522
+ this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread(_objectSpread({}, data), {}, {
523
+ loginMode: this.loginMode
524
+ }));
416
525
  });
417
526
  connector.on(CONNECTOR_EVENTS.DISCONNECTED, async () => {
527
+ // re-setup commonJRPCProvider
528
+ this.commonJRPCProvider.removeAllListeners();
529
+ this.setupCommonJRPCProvider();
530
+
418
531
  // get back to ready state for rehydrating.
419
532
  this.status = CONNECTOR_STATUS.READY;
420
- if (storageAvailable(this.storage)) {
421
- const cachedConnector = window[this.storage].getItem(CONNECTOR_CACHE_KEY);
422
- if (this.connectedConnectorName === cachedConnector) {
423
- this.clearCache();
424
- }
533
+ const cachedConnector = this.state.cachedConnector;
534
+ if (this.connectedConnectorName === cachedConnector) {
535
+ this.clearCache();
425
536
  }
426
537
  log.debug("disconnected", this.status, this.connectedConnectorName);
427
538
  await Promise.all(Object.values(this.plugins).map(async plugin => {
428
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
539
+ if (!plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
429
540
  if (plugin.status !== PLUGIN_STATUS.CONNECTED) return;
430
541
  return plugin.disconnect().catch(error => {
431
542
  // swallow error if connector doesn't supports this plugin.
@@ -436,7 +547,9 @@ class Web3AuthNoModal extends SafeEventEmitter {
436
547
  log.error(error);
437
548
  });
438
549
  }));
439
- this.connectedConnectorName = null;
550
+ this.setState({
551
+ connectedConnectorName: null
552
+ });
440
553
  this.emit(CONNECTOR_EVENTS.DISCONNECTED);
441
554
  });
442
555
  connector.on(CONNECTOR_EVENTS.CONNECTING, data => {
@@ -450,22 +563,28 @@ class Web3AuthNoModal extends SafeEventEmitter {
450
563
  this.emit(CONNECTOR_EVENTS.ERRORED, data);
451
564
  log.debug("errored", this.status, this.connectedConnectorName);
452
565
  });
566
+ connector.on(CONNECTOR_EVENTS.REHYDRATION_ERROR, error => {
567
+ this.status = CONNECTOR_STATUS.READY;
568
+ this.clearCache();
569
+ this.emit(CONNECTOR_EVENTS.REHYDRATION_ERROR, error);
570
+ });
453
571
  connector.on(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data => {
454
572
  log.debug("connector data updated", data);
455
573
  this.emit(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data);
456
574
  });
457
575
  connector.on(CONNECTOR_EVENTS.CACHE_CLEAR, data => {
458
576
  log.debug("connector cache clear", data);
459
- if (storageAvailable(this.storage)) {
460
- this.clearCache();
461
- }
577
+ this.clearCache();
578
+ });
579
+ connector.on(CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled => {
580
+ log.debug("mfa enabled", isMFAEnabled);
581
+ this.emit(CONNECTOR_EVENTS.MFA_ENABLED, isMFAEnabled);
462
582
  });
463
583
  }
464
584
  checkInitRequirements() {
465
- if (this.status === CONNECTOR_STATUS.CONNECTING) throw WalletInitializationError.notReady("Already pending connection");
466
- if (this.status === CONNECTOR_STATUS.CONNECTED) throw WalletInitializationError.notReady("Already connected");
467
585
  if (this.status === CONNECTOR_STATUS.READY) throw WalletInitializationError.notReady("Connector is already initialized");
468
586
  }
587
+
469
588
  /**
470
589
  * Gets the initial chain configuration for a connector
471
590
  * @throws WalletInitializationError If no chain is found for the connector's namespace
@@ -480,28 +599,24 @@ class Web3AuthNoModal extends SafeEventEmitter {
480
599
  return initialChain;
481
600
  }
482
601
  cacheWallet(walletName) {
483
- if (!storageAvailable(this.storage)) return;
484
- // TODO: use the key from user + this
485
- window[this.storage].setItem(CONNECTOR_CACHE_KEY, walletName);
486
- this.cachedConnector = walletName;
602
+ this.setState({
603
+ cachedConnector: walletName
604
+ });
487
605
  }
488
606
  setCurrentChain(chainId) {
489
607
  if (chainId === this.currentChainId) return;
490
608
  const newChain = this.coreOptions.chains.find(chain => chain.chainId === chainId);
491
609
  if (!newChain) throw WalletInitializationError.invalidParams(`Invalid chainId: ${chainId}`);
492
- this.currentChainId = chainId;
493
- this.cacheCurrentChain(chainId);
494
- }
495
- cacheCurrentChain(chainId) {
496
- if (!storageAvailable(this.storage)) return;
497
- window[this.storage].setItem(CURRENT_CHAIN_CACHE_KEY, chainId);
610
+ this.setState({
611
+ currentChainId: chainId
612
+ });
498
613
  }
499
614
  connectToPlugins(data) {
500
615
  Object.values(this.plugins).map(async plugin => {
501
616
  try {
502
617
  var _this$currentChain5;
503
618
  // skip if it's not compatible with the connector
504
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
619
+ if (!plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
505
620
  // skip if it's not compatible with the current chain
506
621
  if (plugin.pluginNamespace !== PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== ((_this$currentChain5 = this.currentChain) === null || _this$currentChain5 === void 0 ? void 0 : _this$currentChain5.chainNamespace)) return;
507
622
  // skip if it's already connected
@@ -517,6 +632,28 @@ class Web3AuthNoModal extends SafeEventEmitter {
517
632
  }
518
633
  });
519
634
  }
635
+ setState(newState) {
636
+ this.state = _objectSpread(_objectSpread({}, this.state), newState);
637
+ this.storage.setItem(WEB3AUTH_STATE_STORAGE_KEY, JSON.stringify(this.state));
638
+ }
639
+ loadState(initialState) {
640
+ if (initialState) {
641
+ this.state = initialState;
642
+ return;
643
+ }
644
+ const state = this.storage.getItem(WEB3AUTH_STATE_STORAGE_KEY);
645
+ if (!state) return;
646
+ this.state = deserialize(state);
647
+ }
648
+ getStorageMethod() {
649
+ if (this.coreOptions.ssr || this.coreOptions.storageType === "cookies") return cookieStorage({
650
+ expiry: this.coreOptions.sessionTime
651
+ });
652
+ if (this.coreOptions.storageType === "session" && storageAvailable("sessionStorage")) return window.sessionStorage;
653
+ if (this.coreOptions.storageType === "local" && storageAvailable("localStorage")) return window.localStorage;
654
+ // If no storage is available, use a memory store.
655
+ return new MemoryStore();
656
+ }
520
657
  }
521
658
 
522
659
  export { Web3AuthNoModal };
@@ -2,7 +2,7 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { randomId } from '@toruslabs/base-controllers';
3
3
  import { THEME_MODES } from '@web3auth/auth';
4
4
  import loglevel from 'loglevel';
5
- import { NFT_CHECKOUT_URLS, NFT_CHECKOUT_BUILD_ENV, NFT_CHECKOUT_EMBED_MESSAGE_TYPES } from './enums.js';
5
+ import { NFT_CHECKOUT_BUILD_ENV, NFT_CHECKOUT_URLS, NFT_CHECKOUT_EMBED_MESSAGE_TYPES } from './enums.js';
6
6
  import { getTheme, htmlToElement } from './utils.js';
7
7
 
8
8
  // preload for iframe doesn't work https://bugs.chromium.org/p/chromium/issues/detail?id=593267
@@ -47,11 +47,13 @@ class NFTCheckoutEmbed {
47
47
  whiteLabel
48
48
  } = params || {};
49
49
  this.buildEnv = buildEnv;
50
+
50
51
  // construct nft checkout url
51
52
  const nftCheckoutIframeUrl = new URL(NFT_CHECKOUT_URLS[this.buildEnv]);
52
53
  const hashParams = new URLSearchParams();
53
54
  hashParams.append("origin", window.location.origin);
54
55
  nftCheckoutIframeUrl.hash = hashParams.toString();
56
+
55
57
  // create iframe
56
58
  const colorScheme = getTheme((whiteLabel === null || whiteLabel === void 0 ? void 0 : whiteLabel.mode) || THEME_MODES.light);
57
59
  const nftCheckoutIframe = htmlToElement(`<iframe
@@ -95,6 +97,7 @@ class NFTCheckoutEmbed {
95
97
  if (!this.isInitialized) throw new Error("Call init() first");
96
98
  const nftCheckoutIframe = this.getIframe();
97
99
  if (!nftCheckoutIframe) throw new Error("Iframe is not initialized");
100
+
98
101
  // send message to iframe
99
102
  const nftCheckoutOrigin = new URL(NFT_CHECKOUT_URLS[this.buildEnv]).origin;
100
103
  nftCheckoutIframe.contentWindow.postMessage({
@@ -1,23 +1,17 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { SafeEventEmitter } from '@web3auth/auth';
3
- import '@toruslabs/base-controllers';
4
- import '../../base/errors/index.js';
5
- import '../../base/wallet/index.js';
6
- import { CONNECTOR_STATUS } from '../../base/connector/constants.js';
7
- import 'jwt-decode';
8
- import '../../base/loglevel.js';
3
+ import { NFTCheckoutEmbed } from './embed.js';
9
4
  import { NFTCheckoutPluginError } from '../../base/plugin/errors.js';
10
5
  import { EVM_PLUGINS, PLUGIN_STATUS, PLUGIN_NAMESPACES, PLUGIN_EVENTS } from '../../base/plugin/IPlugin.js';
11
- import '@toruslabs/constants';
12
- import '@toruslabs/http-helpers';
13
- import { NFTCheckoutEmbed } from './embed.js';
6
+ import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
7
+ import { CONNECTOR_STATUS } from '../../base/connector/constants.js';
14
8
 
15
9
  class NFTCheckoutPlugin extends SafeEventEmitter {
16
10
  constructor(params) {
17
11
  super();
18
12
  _defineProperty(this, "name", EVM_PLUGINS.NFT_CHECKOUT);
19
13
  _defineProperty(this, "status", PLUGIN_STATUS.DISCONNECTED);
20
- _defineProperty(this, "SUPPORTED_CONNECTORS", ["all"]);
14
+ _defineProperty(this, "SUPPORTED_CONNECTORS", Object.values(WALLET_CONNECTORS));
21
15
  _defineProperty(this, "pluginNamespace", PLUGIN_NAMESPACES.EIP155);
22
16
  _defineProperty(this, "web3auth", null);
23
17
  _defineProperty(this, "nftCheckoutEmbedInstance", null);
@@ -1,16 +1,12 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { SafeEventEmitter } from '@web3auth/auth';
3
- import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
4
- import '../../base/errors/index.js';
3
+ export { BUTTON_POSITION, CONFIRMATION_STRATEGY } from '@web3auth/ws-embed';
4
+ import { EVM_PLUGINS, PLUGIN_STATUS, PLUGIN_NAMESPACES, PLUGIN_EVENTS } from '../../base/plugin/IPlugin.js';
5
+ import { WalletServicesPluginError } from '../../base/plugin/errors.js';
5
6
  import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
7
+ import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
6
8
  import { CONNECTOR_STATUS } from '../../base/connector/constants.js';
7
- import 'jwt-decode';
8
9
  import { log } from '../../base/loglevel.js';
9
- import { WalletServicesPluginError } from '../../base/plugin/errors.js';
10
- import { EVM_PLUGINS, PLUGIN_STATUS, PLUGIN_NAMESPACES, PLUGIN_EVENTS } from '../../base/plugin/IPlugin.js';
11
- import '@toruslabs/constants';
12
- import '@toruslabs/http-helpers';
13
- export { BUTTON_POSITION, CONFIRMATION_STRATEGY } from '@web3auth/ws-embed';
14
10
 
15
11
  // TODO: support project config items here. incl. key export flag, multiple chains
16
12
  class WalletServicesPlugin extends SafeEventEmitter {
@@ -18,7 +14,7 @@ class WalletServicesPlugin extends SafeEventEmitter {
18
14
  super(...args);
19
15
  _defineProperty(this, "name", EVM_PLUGINS.WALLET_SERVICES);
20
16
  _defineProperty(this, "status", PLUGIN_STATUS.DISCONNECTED);
21
- _defineProperty(this, "SUPPORTED_CONNECTORS", [WALLET_CONNECTORS.AUTH, WALLET_CONNECTORS.SFA]);
17
+ _defineProperty(this, "SUPPORTED_CONNECTORS", [WALLET_CONNECTORS.AUTH]);
22
18
  _defineProperty(this, "pluginNamespace", PLUGIN_NAMESPACES.MULTICHAIN);
23
19
  _defineProperty(this, "wsEmbedInstance", void 0);
24
20
  _defineProperty(this, "provider", null);
@@ -35,11 +31,13 @@ class WalletServicesPlugin extends SafeEventEmitter {
35
31
  if (web3auth.provider && !this.SUPPORTED_CONNECTORS.includes(web3auth.connectedConnectorName)) throw WalletServicesPluginError.notInitialized();
36
32
  const currentChainConfig = web3auth.currentChain;
37
33
  if (![CHAIN_NAMESPACES.EIP155, CHAIN_NAMESPACES.SOLANA].includes(currentChainConfig === null || currentChainConfig === void 0 ? void 0 : currentChainConfig.chainNamespace)) throw WalletServicesPluginError.unsupportedChainNamespace();
34
+
38
35
  // Not connected yet to auth
39
36
  if (web3auth.provider) {
40
37
  this.provider = web3auth.provider;
41
38
  }
42
39
  this.web3auth = web3auth;
40
+
43
41
  // Auth connector uses WS embed
44
42
  const authInstance = web3auth.getConnector(WALLET_CONNECTORS.AUTH);
45
43
  if (!authInstance || !authInstance.wsEmbed) throw WalletServicesPluginError.web3AuthNotConnected();
@@ -1,2 +1,2 @@
1
- export { accountAbstractionProvider } from './providers/AccountAbstractionProvider.js';
2
- export { BiconomySmartAccount, KernelSmartAccount, NexusSmartAccount, SMART_ACCOUNT, SafeSmartAccount, TrustSmartAccount } from '@toruslabs/ethereum-controllers';
1
+ export { accountAbstractionProvider, toEoaProvider } from './providers/AccountAbstractionProvider.js';
2
+ export { BiconomySmartAccount, KernelSmartAccount, MetamaskSmartAccount, NexusSmartAccount, SMART_ACCOUNT, SafeSmartAccount, TrustSmartAccount } from '@toruslabs/ethereum-controllers';