@web3auth/no-modal 10.0.0-beta.0 → 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 (325) hide show
  1. package/dist/lib.cjs/base/connector/baseConnector.js +3 -1
  2. package/dist/lib.cjs/base/connector/constants.js +3 -6
  3. package/dist/lib.cjs/base/constants.js +26 -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/loglevel.js +3 -0
  8. package/dist/lib.cjs/base/utils.js +50 -7
  9. package/dist/lib.cjs/base/wallet/index.js +4 -5
  10. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +64 -21
  11. package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +1 -1
  12. package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +1 -1
  13. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +14 -6
  14. package/dist/lib.cjs/connectors/coinbase-connector/index.js +7 -0
  15. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +10 -4
  16. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +9 -5
  17. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +44 -16
  18. package/dist/lib.cjs/connectors/utils.js +10 -0
  19. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +1 -1
  20. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +7 -2
  21. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +7 -3
  22. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -1
  23. package/dist/lib.cjs/index.js +44 -32
  24. package/dist/lib.cjs/noModal.js +200 -72
  25. package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +3 -3
  26. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +2 -2
  27. package/dist/lib.cjs/providers/account-abstraction-provider/index.js +5 -0
  28. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +30 -3
  29. package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +1 -1
  30. package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +25 -3
  31. package/dist/lib.cjs/providers/base-provider/baseProvider.js +2 -0
  32. package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +7 -0
  33. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +1 -1
  34. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +1 -1
  35. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +1 -1
  36. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +1 -1
  37. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +1 -1
  38. package/dist/lib.cjs/providers/xrpl-provider/index.js +9 -0
  39. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +1 -1
  40. package/dist/lib.cjs/react/Web3AuthProvider.js +19 -0
  41. package/dist/lib.cjs/react/{wallet-services-plugin/WalletServicesContext.js → context/WalletServicesInnerContext.js} +19 -34
  42. package/dist/lib.cjs/react/{no-modal → context}/Web3AuthInnerContext.js +38 -96
  43. package/dist/lib.cjs/react/hooks/useCheckout.js +45 -0
  44. package/dist/lib.cjs/react/hooks/useEnableMFA.js +30 -0
  45. package/dist/lib.cjs/react/hooks/useIdentityToken.js +42 -0
  46. package/dist/lib.cjs/react/hooks/useManageMFA.js +30 -0
  47. package/dist/lib.cjs/react/hooks/useSwap.js +45 -0
  48. package/dist/lib.cjs/react/hooks/useSwitchChain.js +32 -0
  49. package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +45 -0
  50. package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +19 -0
  51. package/dist/lib.cjs/react/hooks/useWalletUI.js +45 -0
  52. package/dist/lib.cjs/react/hooks/useWeb3Auth.js +28 -0
  53. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +48 -0
  54. package/dist/lib.cjs/react/hooks/useWeb3AuthDisconnect.js +30 -0
  55. package/dist/lib.cjs/react/{no-modal/hooks/useWeb3Auth.js → hooks/useWeb3AuthInner.js} +9 -9
  56. package/dist/lib.cjs/react/hooks/useWeb3AuthUser.js +50 -0
  57. package/dist/lib.cjs/react/index.js +26 -9
  58. package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +35 -0
  59. package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +36 -0
  60. package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +34 -0
  61. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +62 -0
  62. package/dist/lib.cjs/react/solana/index.js +13 -0
  63. package/dist/lib.cjs/react/wagmi/constants.js +16 -0
  64. package/dist/lib.cjs/react/wagmi/index.js +7 -0
  65. package/dist/lib.cjs/react/wagmi/provider.js +189 -0
  66. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +5 -5
  67. package/dist/lib.cjs/types/base/connector/constants.d.ts +2 -4
  68. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +34 -17
  69. package/dist/lib.cjs/types/base/constants.d.ts +18 -0
  70. package/dist/lib.cjs/types/base/cookie.d.ts +10 -0
  71. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +40 -12
  72. package/dist/lib.cjs/types/base/deserialize.d.ts +3 -0
  73. package/dist/lib.cjs/types/base/errors/index.d.ts +1 -2
  74. package/dist/lib.cjs/types/base/hooks/index.d.ts +3 -23
  75. package/dist/lib.cjs/types/base/index.d.ts +2 -1
  76. package/dist/lib.cjs/types/base/interfaces.d.ts +13 -6
  77. package/dist/lib.cjs/types/base/loglevel.d.ts +2 -1
  78. package/dist/lib.cjs/types/base/plugin/IPlugin.d.ts +1 -1
  79. package/dist/lib.cjs/types/base/utils.d.ts +14 -2
  80. package/dist/lib.cjs/types/base/wallet/index.d.ts +18 -17
  81. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +5 -6
  82. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +4 -3
  83. package/dist/lib.cjs/types/connectors/coinbase-connector/coinbaseConnector.d.ts +1 -1
  84. package/dist/lib.cjs/types/connectors/index.d.ts +1 -1
  85. package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +1 -0
  86. package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -1
  87. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +2 -2
  88. package/dist/lib.cjs/types/connectors/utils.d.ts +8 -0
  89. package/dist/lib.cjs/types/noModal.d.ts +20 -9
  90. package/dist/lib.cjs/types/plugins/nft-checkout-plugin/plugin.d.ts +2 -2
  91. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +2 -2
  92. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +3 -2
  93. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/smartAccounts/index.d.ts +1 -1
  94. package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -1
  95. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +1 -1
  96. package/dist/lib.cjs/types/providers/index.d.ts +0 -2
  97. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +1 -1
  98. package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +1 -1
  99. package/dist/lib.cjs/types/react/context/WalletServicesInnerContext.d.ts +6 -0
  100. package/dist/lib.cjs/types/react/{no-modal → context}/Web3AuthInnerContext.d.ts +1 -1
  101. package/dist/lib.cjs/types/react/hooks/index.d.ts +13 -0
  102. package/dist/lib.cjs/types/react/hooks/useCheckout.d.ts +8 -0
  103. package/dist/lib.cjs/types/react/hooks/useEnableMFA.d.ts +7 -0
  104. package/dist/lib.cjs/types/react/hooks/useIdentityToken.d.ts +13 -0
  105. package/dist/lib.cjs/types/react/hooks/useManageMFA.d.ts +7 -0
  106. package/dist/lib.cjs/types/react/hooks/useSwap.d.ts +8 -0
  107. package/dist/lib.cjs/types/react/hooks/useSwitchChain.d.ts +7 -0
  108. package/dist/lib.cjs/types/react/hooks/useWalletConnectScanner.d.ts +8 -0
  109. package/dist/lib.cjs/types/react/hooks/useWalletUI.d.ts +8 -0
  110. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +3 -0
  111. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +9 -0
  112. package/dist/lib.cjs/types/react/hooks/useWeb3AuthDisconnect.d.ts +9 -0
  113. package/dist/lib.cjs/types/react/hooks/useWeb3AuthInner.d.ts +2 -0
  114. package/dist/lib.cjs/types/react/hooks/useWeb3AuthUser.d.ts +9 -0
  115. package/dist/lib.cjs/types/react/index.d.ts +3 -2
  116. package/dist/lib.cjs/types/react/interfaces.d.ts +21 -0
  117. package/dist/lib.cjs/types/react/solana/hooks/index.d.ts +4 -0
  118. package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +9 -0
  119. package/dist/lib.cjs/types/react/solana/hooks/useSignMessage.d.ts +8 -0
  120. package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +14 -0
  121. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +8 -0
  122. package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
  123. package/dist/lib.cjs/types/react/wagmi/constants.d.ts +43 -0
  124. package/dist/lib.cjs/types/react/wagmi/index.d.ts +1 -0
  125. package/dist/lib.cjs/types/react/wagmi/interface.d.ts +4 -0
  126. package/dist/lib.cjs/types/react/wagmi/provider.d.ts +3 -0
  127. package/dist/lib.cjs/types/vue/WalletServicesInnerProvider.d.ts +1 -0
  128. package/dist/lib.cjs/types/vue/composables/index.d.ts +13 -0
  129. package/dist/lib.cjs/types/vue/composables/useCheckout.d.ts +9 -0
  130. package/dist/lib.cjs/types/vue/composables/useEnableMFA.d.ts +8 -0
  131. package/dist/lib.cjs/types/vue/composables/useIdentityToken.d.ts +9 -0
  132. package/dist/lib.cjs/types/vue/composables/useManageMFA.d.ts +8 -0
  133. package/dist/lib.cjs/types/vue/composables/useSwap.d.ts +9 -0
  134. package/dist/lib.cjs/types/vue/composables/useSwitchChain.d.ts +10 -0
  135. package/dist/lib.cjs/types/vue/composables/useWalletConnectScanner.d.ts +9 -0
  136. package/dist/lib.cjs/types/vue/composables/useWalletServicesPlugin.d.ts +2 -0
  137. package/dist/lib.cjs/types/vue/composables/useWalletUI.d.ts +9 -0
  138. package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +3 -0
  139. package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +10 -0
  140. package/dist/lib.cjs/types/vue/composables/useWeb3AuthDisconnect.d.ts +10 -0
  141. package/dist/lib.cjs/types/vue/composables/useWeb3AuthInner.d.ts +2 -0
  142. package/dist/lib.cjs/types/vue/composables/useWeb3AuthUser.d.ts +10 -0
  143. package/dist/lib.cjs/types/vue/{wallet-services-plugin/context.d.ts → context/WalletServicesContext.d.ts} +2 -2
  144. package/dist/lib.cjs/types/vue/context/index.d.ts +1 -0
  145. package/dist/lib.cjs/types/vue/index.d.ts +4 -2
  146. package/dist/lib.cjs/types/vue/interfaces.d.ts +30 -0
  147. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +4 -0
  148. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +10 -0
  149. package/dist/lib.cjs/types/vue/solana/composables/useSignMessage.d.ts +9 -0
  150. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +10 -0
  151. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +9 -0
  152. package/dist/lib.cjs/types/vue/solana/index.d.ts +1 -0
  153. package/dist/lib.cjs/types/vue/wagmi/constants.d.ts +43 -0
  154. package/dist/lib.cjs/types/vue/wagmi/index.d.ts +2 -0
  155. package/dist/lib.cjs/types/vue/wagmi/interface.d.ts +4 -0
  156. package/dist/lib.cjs/types/vue/wagmi/provider.d.ts +17 -0
  157. package/dist/lib.cjs/vue/{wallet-services-plugin/WalletServicesProvider.js → WalletServicesInnerProvider.js} +26 -43
  158. package/dist/lib.cjs/vue/{no-modal/Web3AuthProvider.js → Web3AuthProvider.js} +45 -86
  159. package/dist/lib.cjs/vue/composables/useCheckout.js +45 -0
  160. package/dist/lib.cjs/vue/composables/useEnableMFA.js +43 -0
  161. package/dist/lib.cjs/vue/composables/useIdentityToken.js +55 -0
  162. package/dist/lib.cjs/vue/composables/useManageMFA.js +43 -0
  163. package/dist/lib.cjs/vue/composables/useSwap.js +45 -0
  164. package/dist/lib.cjs/vue/composables/useSwitchChain.js +43 -0
  165. package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +45 -0
  166. package/dist/lib.cjs/vue/composables/useWalletServicesPlugin.js +12 -0
  167. package/dist/lib.cjs/vue/composables/useWalletUI.js +45 -0
  168. package/dist/lib.cjs/vue/composables/useWeb3Auth.js +28 -0
  169. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +61 -0
  170. package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +43 -0
  171. package/dist/lib.cjs/vue/{no-modal/composables/useWeb3Auth.js → composables/useWeb3AuthInner.js} +9 -9
  172. package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +64 -0
  173. package/dist/lib.cjs/vue/index.js +28 -8
  174. package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +36 -0
  175. package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +38 -0
  176. package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +36 -0
  177. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +64 -0
  178. package/dist/lib.cjs/vue/solana/index.js +13 -0
  179. package/dist/lib.cjs/vue/wagmi/constants.js +16 -0
  180. package/dist/lib.cjs/vue/wagmi/index.js +7 -0
  181. package/dist/lib.cjs/vue/wagmi/provider.js +244 -0
  182. package/dist/lib.esm/base/connector/baseConnector.js +7 -1
  183. package/dist/lib.esm/base/connector/constants.js +4 -6
  184. package/dist/lib.esm/base/constants.js +20 -0
  185. package/dist/lib.esm/base/cookie.js +34 -0
  186. package/dist/lib.esm/base/deserialize.js +11 -0
  187. package/dist/lib.esm/base/errors/index.js +14 -22
  188. package/dist/lib.esm/base/loglevel.js +3 -0
  189. package/dist/lib.esm/base/plugin/errors.js +2 -0
  190. package/dist/lib.esm/base/utils.js +53 -13
  191. package/dist/lib.esm/base/wallet/index.js +4 -5
  192. package/dist/lib.esm/connectors/auth-connector/authConnector.js +84 -31
  193. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +2 -9
  194. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +1 -8
  195. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -15
  196. package/dist/lib.esm/connectors/coinbase-connector/index.js +1 -0
  197. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +13 -12
  198. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +14 -17
  199. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +52 -27
  200. package/dist/lib.esm/connectors/utils.js +14 -1
  201. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +8 -25
  202. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +20 -25
  203. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +15 -15
  204. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -11
  205. package/dist/lib.esm/index.js +14 -16
  206. package/dist/lib.esm/noModal.js +223 -79
  207. package/dist/lib.esm/plugins/nft-checkout-plugin/embed.js +4 -1
  208. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +4 -10
  209. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +7 -9
  210. package/dist/lib.esm/providers/account-abstraction-provider/index.js +2 -2
  211. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +38 -21
  212. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +0 -10
  213. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +26 -3
  214. package/dist/lib.esm/providers/base-provider/baseProvider.js +7 -9
  215. package/dist/lib.esm/providers/base-provider/utils.js +3 -3
  216. package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +1 -0
  217. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +5 -18
  218. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +3 -13
  219. package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +1 -0
  220. package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +1 -0
  221. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +10 -11
  222. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +3 -3
  223. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +1 -0
  224. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +8 -0
  225. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +2 -15
  226. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +5 -12
  227. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
  228. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +3 -0
  229. package/dist/lib.esm/providers/xrpl-provider/index.js +2 -0
  230. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +3 -14
  231. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -0
  232. package/dist/lib.esm/react/Web3AuthProvider.js +17 -0
  233. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +70 -0
  234. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +129 -0
  235. package/dist/lib.esm/react/hooks/useCheckout.js +32 -0
  236. package/dist/lib.esm/react/hooks/useEnableMFA.js +28 -0
  237. package/dist/lib.esm/react/hooks/useIdentityToken.js +40 -0
  238. package/dist/lib.esm/react/hooks/useManageMFA.js +28 -0
  239. package/dist/lib.esm/react/hooks/useSwap.js +32 -0
  240. package/dist/lib.esm/react/hooks/useSwitchChain.js +30 -0
  241. package/dist/lib.esm/react/hooks/useWalletConnectScanner.js +32 -0
  242. package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +17 -0
  243. package/dist/lib.esm/react/hooks/useWalletUI.js +32 -0
  244. package/dist/lib.esm/react/hooks/useWeb3Auth.js +26 -0
  245. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +46 -0
  246. package/dist/lib.esm/react/hooks/useWeb3AuthDisconnect.js +28 -0
  247. package/dist/lib.esm/react/hooks/useWeb3AuthInner.js +13 -0
  248. package/dist/lib.esm/react/hooks/useWeb3AuthUser.js +48 -0
  249. package/dist/lib.esm/react/index.js +14 -5
  250. package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +33 -0
  251. package/dist/lib.esm/react/solana/hooks/useSignMessage.js +34 -0
  252. package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +32 -0
  253. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +42 -0
  254. package/dist/lib.esm/react/solana/index.js +4 -0
  255. package/dist/lib.esm/react/wagmi/constants.js +14 -0
  256. package/dist/lib.esm/react/wagmi/index.js +1 -0
  257. package/dist/lib.esm/react/wagmi/provider.js +179 -0
  258. package/dist/lib.esm/vue/WalletServicesInnerProvider.js +71 -0
  259. package/dist/lib.esm/vue/Web3AuthProvider.js +154 -0
  260. package/dist/lib.esm/vue/composables/useCheckout.js +32 -0
  261. package/dist/lib.esm/vue/composables/useEnableMFA.js +30 -0
  262. package/dist/lib.esm/vue/composables/useIdentityToken.js +42 -0
  263. package/dist/lib.esm/vue/composables/useManageMFA.js +30 -0
  264. package/dist/lib.esm/vue/composables/useSwap.js +32 -0
  265. package/dist/lib.esm/vue/composables/useSwitchChain.js +30 -0
  266. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +32 -0
  267. package/dist/lib.esm/vue/composables/useWalletServicesPlugin.js +10 -0
  268. package/dist/lib.esm/vue/composables/useWalletUI.js +32 -0
  269. package/dist/lib.esm/vue/composables/useWeb3Auth.js +26 -0
  270. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +48 -0
  271. package/dist/lib.esm/vue/composables/useWeb3AuthDisconnect.js +30 -0
  272. package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +11 -0
  273. package/dist/lib.esm/vue/composables/useWeb3AuthUser.js +51 -0
  274. package/dist/lib.esm/vue/index.js +15 -5
  275. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +34 -0
  276. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +36 -0
  277. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +34 -0
  278. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +51 -0
  279. package/dist/lib.esm/vue/solana/index.js +4 -0
  280. package/dist/lib.esm/vue/wagmi/constants.js +14 -0
  281. package/dist/lib.esm/vue/wagmi/index.js +1 -0
  282. package/dist/lib.esm/vue/wagmi/provider.js +237 -0
  283. package/dist/noModal.umd.min.js +1 -1
  284. package/dist/noModal.umd.min.js.LICENSE.txt +0 -26
  285. package/package.json +81 -20
  286. package/dist/lib.cjs/base/chain/config.js +0 -323
  287. package/dist/lib.cjs/react/no-modal/Web3AuthProvider.js +0 -15
  288. package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesProvider.js +0 -16
  289. package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -26
  290. package/dist/lib.cjs/types/base/chain/config.d.ts +0 -5
  291. package/dist/lib.cjs/types/react/no-modal/hooks/index.d.ts +0 -1
  292. package/dist/lib.cjs/types/react/no-modal/hooks/useWeb3Auth.d.ts +0 -2
  293. package/dist/lib.cjs/types/react/no-modal/index.d.ts +0 -3
  294. package/dist/lib.cjs/types/react/no-modal/interfaces.d.ts +0 -15
  295. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesContext.d.ts +0 -7
  296. package/dist/lib.cjs/types/react/wallet-services-plugin/WalletServicesProvider.d.ts +0 -7
  297. package/dist/lib.cjs/types/react/wallet-services-plugin/hooks/index.d.ts +0 -1
  298. package/dist/lib.cjs/types/react/wallet-services-plugin/index.d.ts +0 -4
  299. package/dist/lib.cjs/types/react/wallet-services-plugin/interfaces.d.ts +0 -5
  300. package/dist/lib.cjs/types/vue/no-modal/composables/index.d.ts +0 -1
  301. package/dist/lib.cjs/types/vue/no-modal/composables/useWeb3Auth.d.ts +0 -2
  302. package/dist/lib.cjs/types/vue/no-modal/index.d.ts +0 -3
  303. package/dist/lib.cjs/types/vue/no-modal/interfaces.d.ts +0 -39
  304. package/dist/lib.cjs/types/vue/wallet-services-plugin/WalletServicesProvider.d.ts +0 -1
  305. package/dist/lib.cjs/types/vue/wallet-services-plugin/composables/index.d.ts +0 -1
  306. package/dist/lib.cjs/types/vue/wallet-services-plugin/composables/useWalletServicesPlugin.d.ts +0 -2
  307. package/dist/lib.cjs/types/vue/wallet-services-plugin/index.d.ts +0 -4
  308. package/dist/lib.cjs/types/vue/wallet-services-plugin/interfaces.d.ts +0 -13
  309. package/dist/lib.cjs/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +0 -24
  310. package/dist/lib.esm/base/chain/config.js +0 -318
  311. package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +0 -197
  312. package/dist/lib.esm/react/no-modal/Web3AuthProvider.js +0 -13
  313. package/dist/lib.esm/react/no-modal/hooks/useWeb3Auth.js +0 -24
  314. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +0 -95
  315. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesProvider.js +0 -14
  316. package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +0 -24
  317. package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +0 -203
  318. package/dist/lib.esm/vue/no-modal/composables/useWeb3Auth.js +0 -22
  319. package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +0 -96
  320. package/dist/lib.esm/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +0 -22
  321. /package/dist/lib.cjs/types/react/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
  322. /package/dist/lib.cjs/types/react/{wallet-services-plugin/hooks → hooks}/useWalletServicesPlugin.d.ts +0 -0
  323. /package/dist/lib.cjs/types/vue/{no-modal/Web3AuthProvider.d.ts → Web3AuthProvider.d.ts} +0 -0
  324. /package/dist/lib.cjs/vue/{wallet-services-plugin/context.js → context/WalletServicesContext.js} +0 -0
  325. /package/dist/lib.esm/vue/{wallet-services-plugin/context.js → context/WalletServicesContext.js} +0 -0
@@ -1,44 +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';
12
+ import { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
13
+ import { walletServicesPlugin } from './plugins/wallet-services-plugin/plugin.js';
14
+ import { storageAvailable } from './base/connector/utils.js';
15
+ import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from './base/connector/constants.js';
7
16
  import { WalletInitializationError, WalletLoginError } from './base/errors/index.js';
17
+ import { log } from './base/loglevel.js';
8
18
  import { CONNECTOR_NAMESPACES } from './base/chain/IChainInterface.js';
9
19
  import { WALLET_CONNECTORS } from './base/wallet/index.js';
10
- import { CONNECTOR_STATUS, CONNECTOR_EVENTS, SMART_ACCOUNT_WALLET_SCOPE } from './base/connector/constants.js';
11
- import { storageAvailable } from './base/connector/utils.js';
12
- import { log } from './base/loglevel.js';
13
- import './base/plugin/errors.js';
14
- import { PLUGIN_STATUS, PLUGIN_NAMESPACES } from './base/plugin/IPlugin.js';
15
- import { fetchProjectConfig, isHexStrict } from './base/utils.js';
16
20
  import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
17
- import './providers/base-provider/utils.js';
18
- import { CommonJRPCProvider } from './providers/base-provider/CommonJRPCProvider.js';
19
- import './providers/base-provider/commonPrivateKeyProvider.js';
20
- import { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
21
+ import { PLUGIN_STATUS, PLUGIN_NAMESPACES } from './base/plugin/IPlugin.js';
21
22
 
22
23
  const _excluded = ["walletScope"];
23
- const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
24
- const CURRENT_CHAIN_CACHE_KEY = "Web3Auth-currentChain";
25
24
  class Web3AuthNoModal extends SafeEventEmitter {
26
- constructor(options) {
25
+ constructor(options, initialState) {
27
26
  super();
28
27
  _defineProperty(this, "coreOptions", void 0);
29
- _defineProperty(this, "connectedConnectorName", null);
30
28
  _defineProperty(this, "status", CONNECTOR_STATUS.NOT_READY);
31
- _defineProperty(this, "cachedConnector", null);
32
- _defineProperty(this, "currentChainId", void 0);
29
+ _defineProperty(this, "aaProvider", null);
33
30
  _defineProperty(this, "connectors", []);
34
31
  _defineProperty(this, "commonJRPCProvider", null);
35
32
  _defineProperty(this, "plugins", {});
36
- _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);
37
41
  if (!options.clientId) throw WalletInitializationError.invalidParams("Please provide a valid clientId in constructor");
38
42
  if (options.enableLogging) log.enableAll();else log.setLevel("error");
39
- if (options.storageType === "session") this.storage = "sessionStorage";
43
+ if (!options.storageType) options.storageType = "local";
40
44
  this.coreOptions = options;
41
- 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
+ }
42
50
  }
43
51
  get currentChain() {
44
52
  var _this$coreOptions$cha;
@@ -53,45 +61,77 @@ class Web3AuthNoModal extends SafeEventEmitter {
53
61
  }
54
62
  return null;
55
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
+ }
56
73
  get connectedConnector() {
57
74
  var _this$currentChain;
58
75
  return this.getConnector(this.connectedConnectorName, (_this$currentChain = this.currentChain) === null || _this$currentChain === void 0 ? void 0 : _this$currentChain.chainNamespace);
59
76
  }
77
+ get accountAbstractionProvider() {
78
+ return this.aaProvider;
79
+ }
60
80
  set provider(_) {
61
81
  throw new Error("Not implemented");
62
82
  }
63
- async init() {
83
+ async init(options) {
84
+ const {
85
+ signal
86
+ } = options || {};
64
87
  // get project config
65
88
  let projectConfig;
66
89
  try {
67
90
  var _this$coreOptions$acc;
68
- projectConfig = await fetchProjectConfig(this.coreOptions.clientId, this.coreOptions.web3AuthNetwork, (_this$coreOptions$acc = this.coreOptions.accountAbstractionConfig) === null || _this$coreOptions$acc === void 0 ? void 0 : _this$coreOptions$acc.smartAccountType);
91
+ projectConfig = await fetchProjectConfig({
92
+ clientId: this.coreOptions.clientId,
93
+ web3AuthNetwork: this.coreOptions.web3AuthNetwork,
94
+ aaProvider: (_this$coreOptions$acc = this.coreOptions.accountAbstractionConfig) === null || _this$coreOptions$acc === void 0 ? void 0 : _this$coreOptions$acc.smartAccountType,
95
+ authBuildEnv: this.coreOptions.authBuildEnv
96
+ });
69
97
  } catch (e) {
70
- log.error("Failed to fetch project configurations", e);
71
- 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);
72
101
  }
102
+
73
103
  // init config
74
104
  this.initAccountAbstractionConfig(projectConfig);
75
105
  this.initChainsConfig(projectConfig);
76
106
  this.initCachedConnectorAndChainId();
107
+
77
108
  // setup common JRPC provider
78
- await this.setupCommonJRPCProvider();
109
+ await withAbort(() => this.setupCommonJRPCProvider(), signal);
110
+
79
111
  // initialize connectors
80
112
  this.on(CONNECTOR_EVENTS.CONNECTORS_UPDATED, async ({
81
113
  connectors: newConnectors
82
114
  }) => {
83
- 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
+
84
123
  // emit connector ready event
85
124
  if (this.status === CONNECTOR_STATUS.NOT_READY) {
86
125
  this.status = CONNECTOR_STATUS.READY;
87
126
  this.emit(CONNECTOR_EVENTS.READY);
88
127
  }
89
128
  });
90
- await this.loadConnectors({
129
+ await withAbort(() => this.loadConnectors({
91
130
  projectConfig
92
- });
93
- await this.initPlugins();
131
+ }), signal);
132
+ await withAbort(() => this.initPlugins(), signal);
94
133
  }
134
+
95
135
  // we need to take into account the chainNamespace as for external connectors, same connector name can be used for multiple chain namespaces
96
136
  getConnector(connectorName, chainNamespace) {
97
137
  return this.connectors.find(connector => {
@@ -104,10 +144,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
104
144
  }) || null;
105
145
  }
106
146
  clearCache() {
107
- if (!storageAvailable(this.storage)) return;
108
- window[this.storage].removeItem(CONNECTOR_CACHE_KEY);
109
- window[this.storage].removeItem(CURRENT_CHAIN_CACHE_KEY);
110
- 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
+ }
111
158
  }
112
159
  async switchChain(params) {
113
160
  var _this$currentChain2;
@@ -126,15 +173,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
126
173
  }
127
174
  throw WalletInitializationError.notReady(`No wallet is ready`);
128
175
  }
176
+
129
177
  /**
130
178
  * Connect to a specific wallet connector
131
179
  * @param connectorName - Key of the wallet connector to use.
132
180
  */
133
- async connectTo(connectorName, loginParams) {
181
+ async connectTo(connectorName, loginParams, loginMode) {
182
+ this.loginMode = loginMode || "no-modal";
134
183
  const connector = this.getConnector(connectorName, loginParams === null || loginParams === void 0 ? void 0 : loginParams.chainNamespace);
135
184
  if (!connector || !this.commonJRPCProvider) throw WalletInitializationError.notFound(`Please add wallet connector for ${connectorName} wallet, before connecting`);
136
185
  return new Promise((resolve, reject) => {
137
- this.once(CONNECTOR_EVENTS.CONNECTED, _ => {
186
+ this.once(CONNECTOR_EVENTS.CONNECTED, async _ => {
138
187
  resolve(this.provider);
139
188
  });
140
189
  this.once(CONNECTOR_EVENTS.ERRORED, err => {
@@ -186,6 +235,7 @@ class Web3AuthNoModal extends SafeEventEmitter {
186
235
  if (!existingChain) chainMap.set(chain.chainId, chain);else chainMap.set(chain.chainId, _objectSpread(_objectSpread({}, existingChain), chain));
187
236
  }
188
237
  this.coreOptions.chains = Array.from(chainMap.values());
238
+
189
239
  // validate chains and namespaces
190
240
  if (this.coreOptions.chains.length === 0) {
191
241
  log.error("chain info not found. Please configure chains on dashboard at https://dashboard.web3auth.io");
@@ -211,9 +261,14 @@ class Web3AuthNoModal extends SafeEventEmitter {
211
261
  }
212
262
  }
213
263
  }
264
+
214
265
  // if AA is enabled, filter out chains that are not AA-supported
215
266
  if (this.coreOptions.accountAbstractionConfig) {
216
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
+ }
217
272
  for (const chain of this.coreOptions.accountAbstractionConfig.chains) {
218
273
  if (!isHexStrict(chain.chainId)) {
219
274
  log.error(`Please provide a valid chainId in accountAbstractionConfig.chains for chain ${chain.chainId}`);
@@ -246,32 +301,47 @@ class Web3AuthNoModal extends SafeEventEmitter {
246
301
  }
247
302
  }
248
303
  initAccountAbstractionConfig(projectConfig) {
304
+ var _this$coreOptions$acc2;
249
305
  const isAAEnabled = Boolean(this.coreOptions.accountAbstractionConfig || (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts));
250
306
  if (!isAAEnabled) return;
251
- // 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
252
309
  const _ref = (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.smartAccounts) || {},
253
310
  {
254
311
  walletScope
255
312
  } = _ref,
256
313
  configWithoutWalletScope = _objectWithoutProperties(_ref, _excluded);
257
- 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
+
258
324
  // determine if we should use AA with external wallet
259
325
  if (this.coreOptions.useAAWithExternalWallet === undefined) {
260
326
  this.coreOptions.useAAWithExternalWallet = walletScope === SMART_ACCOUNT_WALLET_SCOPE.ALL;
261
327
  }
262
328
  }
263
329
  initCachedConnectorAndChainId() {
264
- this.cachedConnector = storageAvailable(this.storage) ? window[this.storage].getItem(CONNECTOR_CACHE_KEY) : null;
265
330
  // init chainId using cached chainId if it exists and is valid, otherwise use the defaultChainId or the first chain
266
- const cachedChainId = storageAvailable(this.storage) ? window[this.storage].getItem(CURRENT_CHAIN_CACHE_KEY) : null;
331
+ const cachedChainId = this.state.currentChainId;
267
332
  const isCachedChainIdValid = cachedChainId && this.coreOptions.chains.some(chain => chain.chainId === cachedChainId);
268
- this.currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
333
+ if (this.coreOptions.defaultChainId && !isHexStrict(this.coreOptions.defaultChainId)) throw WalletInitializationError.invalidParams("Please provide a valid defaultChainId in constructor");
334
+ const currentChainId = isCachedChainIdValid ? cachedChainId : this.coreOptions.defaultChainId || this.coreOptions.chains[0].chainId;
335
+ this.setState({
336
+ currentChainId
337
+ });
269
338
  }
270
339
  async setupCommonJRPCProvider() {
271
340
  this.commonJRPCProvider = await CommonJRPCProvider.getProviderInstance({
272
341
  chain: this.currentChain,
273
342
  chains: this.coreOptions.chains
274
343
  });
344
+
275
345
  // sync chainId
276
346
  this.commonJRPCProvider.on("chainChanged", chainId => this.setCurrentChain(chainId));
277
347
  }
@@ -288,7 +358,8 @@ class Web3AuthNoModal extends SafeEventEmitter {
288
358
  }
289
359
  }
290
360
  async loadConnectors({
291
- projectConfig
361
+ projectConfig,
362
+ modalMode
292
363
  }) {
293
364
  var _this$coreOptions$mul;
294
365
  // always add auth connector
@@ -297,11 +368,12 @@ class Web3AuthNoModal extends SafeEventEmitter {
297
368
  projectConfig,
298
369
  coreOptions: this.coreOptions
299
370
  };
371
+
300
372
  // add injected connectors
301
373
  const isExternalWalletEnabled = Boolean(projectConfig.externalWalletAuth);
302
374
  const isMipdEnabled = isExternalWalletEnabled && ((_this$coreOptions$mul = this.coreOptions.multiInjectedProviderDiscovery) !== null && _this$coreOptions$mul !== void 0 ? _this$coreOptions$mul : true);
303
375
  const chainNamespaces = new Set(this.coreOptions.chains.map(chain => chain.chainNamespace));
304
- if (isMipdEnabled) {
376
+ if (isMipdEnabled && isBrowser()) {
305
377
  // Solana chains
306
378
  if (chainNamespaces.has(CHAIN_NAMESPACES.SOLANA)) {
307
379
  const {
@@ -332,10 +404,17 @@ class Web3AuthNoModal extends SafeEventEmitter {
332
404
  connectorFns.push(...evmMipd.getProviders().map(injectedEvmConnector));
333
405
  }
334
406
  }
407
+
335
408
  // it's safe to add it here as if there is a MetaMask injected provider, this won't override it
336
- 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
+
337
416
  // add WalletConnectV2 connector if external wallets are enabled
338
- 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))) {
339
418
  const {
340
419
  walletConnectV2Connector
341
420
  } = await import('./connectors/wallet-connect-v2-connector/index.js');
@@ -345,7 +424,15 @@ class Web3AuthNoModal extends SafeEventEmitter {
345
424
  this.setConnectors(connectors);
346
425
  }
347
426
  async initPlugins() {
348
- 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
+ }
349
436
  for (const pluginFn of pluginFns) {
350
437
  const plugin = pluginFn();
351
438
  if (!this.plugins[plugin.name]) this.plugins[plugin.name] = plugin;
@@ -375,50 +462,81 @@ class Web3AuthNoModal extends SafeEventEmitter {
375
462
  const {
376
463
  provider
377
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
+ }
378
481
  let finalProvider = provider.provider || provider;
379
- // 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
380
484
  const {
381
485
  accountAbstractionConfig
382
486
  } = this.coreOptions;
383
- 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 => {
384
488
  var _this$currentChain4;
385
489
  return chain.chainId === ((_this$currentChain4 = this.currentChain) === null || _this$currentChain4 === void 0 ? void 0 : _this$currentChain4.chainId);
386
490
  }));
387
- const isExternalWalletAndAAEnabled = data.connector !== WALLET_CONNECTORS.AUTH && this.coreOptions.useAAWithExternalWallet;
388
- if (isExternalWalletAndAAEnabled && doesAASupportCurrentChain) {
491
+ if (isAaSupportedForCurrentChain && (data.connector === WALLET_CONNECTORS.AUTH || this.coreOptions.useAAWithExternalWallet)) {
389
492
  var _accountAbstractionCo2;
390
- const aaChainIds = new Set((accountAbstractionConfig === null || accountAbstractionConfig === void 0 || (_accountAbstractionCo2 = accountAbstractionConfig.chains) === null || _accountAbstractionCo2 === void 0 ? void 0 : _accountAbstractionCo2.map(chain => chain.chainId)) || []);
391
493
  const {
392
- accountAbstractionProvider
494
+ accountAbstractionProvider,
495
+ toEoaProvider
393
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)) || []);
394
500
  const aaProvider = await accountAbstractionProvider({
395
501
  accountAbstractionConfig,
396
- provider,
502
+ provider: eoaProvider,
397
503
  chain: this.currentChain,
398
504
  chains: this.coreOptions.chains.filter(chain => aaChainIds.has(chain.chainId))
399
505
  });
400
- 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
+ }
401
513
  }
402
514
  this.commonJRPCProvider.updateProviderEngineProxy(finalProvider);
403
- this.connectedConnectorName = data.connector;
404
- this.status = CONNECTOR_STATUS.CONNECTED;
515
+ this.setState({
516
+ connectedConnectorName: data.connector
517
+ });
405
518
  this.cacheWallet(data.connector);
519
+ this.status = CONNECTOR_STATUS.CONNECTED;
406
520
  log.debug("connected", this.status, this.connectedConnectorName);
407
521
  this.connectToPlugins(data);
408
- this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread({}, data));
522
+ this.emit(CONNECTOR_EVENTS.CONNECTED, _objectSpread(_objectSpread({}, data), {}, {
523
+ loginMode: this.loginMode
524
+ }));
409
525
  });
410
526
  connector.on(CONNECTOR_EVENTS.DISCONNECTED, async () => {
527
+ // re-setup commonJRPCProvider
528
+ this.commonJRPCProvider.removeAllListeners();
529
+ this.setupCommonJRPCProvider();
530
+
411
531
  // get back to ready state for rehydrating.
412
532
  this.status = CONNECTOR_STATUS.READY;
413
- if (storageAvailable(this.storage)) {
414
- const cachedConnector = window[this.storage].getItem(CONNECTOR_CACHE_KEY);
415
- if (this.connectedConnectorName === cachedConnector) {
416
- this.clearCache();
417
- }
533
+ const cachedConnector = this.state.cachedConnector;
534
+ if (this.connectedConnectorName === cachedConnector) {
535
+ this.clearCache();
418
536
  }
419
537
  log.debug("disconnected", this.status, this.connectedConnectorName);
420
538
  await Promise.all(Object.values(this.plugins).map(async plugin => {
421
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
539
+ if (!plugin.SUPPORTED_CONNECTORS.includes(connector.name)) return;
422
540
  if (plugin.status !== PLUGIN_STATUS.CONNECTED) return;
423
541
  return plugin.disconnect().catch(error => {
424
542
  // swallow error if connector doesn't supports this plugin.
@@ -429,7 +547,9 @@ class Web3AuthNoModal extends SafeEventEmitter {
429
547
  log.error(error);
430
548
  });
431
549
  }));
432
- this.connectedConnectorName = null;
550
+ this.setState({
551
+ connectedConnectorName: null
552
+ });
433
553
  this.emit(CONNECTOR_EVENTS.DISCONNECTED);
434
554
  });
435
555
  connector.on(CONNECTOR_EVENTS.CONNECTING, data => {
@@ -443,22 +563,28 @@ class Web3AuthNoModal extends SafeEventEmitter {
443
563
  this.emit(CONNECTOR_EVENTS.ERRORED, data);
444
564
  log.debug("errored", this.status, this.connectedConnectorName);
445
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
+ });
446
571
  connector.on(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data => {
447
572
  log.debug("connector data updated", data);
448
573
  this.emit(CONNECTOR_EVENTS.CONNECTOR_DATA_UPDATED, data);
449
574
  });
450
575
  connector.on(CONNECTOR_EVENTS.CACHE_CLEAR, data => {
451
576
  log.debug("connector cache clear", data);
452
- if (storageAvailable(this.storage)) {
453
- this.clearCache();
454
- }
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);
455
582
  });
456
583
  }
457
584
  checkInitRequirements() {
458
- if (this.status === CONNECTOR_STATUS.CONNECTING) throw WalletInitializationError.notReady("Already pending connection");
459
- if (this.status === CONNECTOR_STATUS.CONNECTED) throw WalletInitializationError.notReady("Already connected");
460
585
  if (this.status === CONNECTOR_STATUS.READY) throw WalletInitializationError.notReady("Connector is already initialized");
461
586
  }
587
+
462
588
  /**
463
589
  * Gets the initial chain configuration for a connector
464
590
  * @throws WalletInitializationError If no chain is found for the connector's namespace
@@ -473,28 +599,24 @@ class Web3AuthNoModal extends SafeEventEmitter {
473
599
  return initialChain;
474
600
  }
475
601
  cacheWallet(walletName) {
476
- if (!storageAvailable(this.storage)) return;
477
- // TODO: use the key from user + this
478
- window[this.storage].setItem(CONNECTOR_CACHE_KEY, walletName);
479
- this.cachedConnector = walletName;
602
+ this.setState({
603
+ cachedConnector: walletName
604
+ });
480
605
  }
481
606
  setCurrentChain(chainId) {
482
607
  if (chainId === this.currentChainId) return;
483
608
  const newChain = this.coreOptions.chains.find(chain => chain.chainId === chainId);
484
609
  if (!newChain) throw WalletInitializationError.invalidParams(`Invalid chainId: ${chainId}`);
485
- this.currentChainId = chainId;
486
- this.cacheCurrentChain(chainId);
487
- }
488
- cacheCurrentChain(chainId) {
489
- if (!storageAvailable(this.storage)) return;
490
- window[this.storage].setItem(CURRENT_CHAIN_CACHE_KEY, chainId);
610
+ this.setState({
611
+ currentChainId: chainId
612
+ });
491
613
  }
492
614
  connectToPlugins(data) {
493
615
  Object.values(this.plugins).map(async plugin => {
494
616
  try {
495
617
  var _this$currentChain5;
496
618
  // skip if it's not compatible with the connector
497
- if (!plugin.SUPPORTED_CONNECTORS.includes("all") && !plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
619
+ if (!plugin.SUPPORTED_CONNECTORS.includes(data.connector)) return;
498
620
  // skip if it's not compatible with the current chain
499
621
  if (plugin.pluginNamespace !== PLUGIN_NAMESPACES.MULTICHAIN && plugin.pluginNamespace !== ((_this$currentChain5 = this.currentChain) === null || _this$currentChain5 === void 0 ? void 0 : _this$currentChain5.chainNamespace)) return;
500
622
  // skip if it's already connected
@@ -510,6 +632,28 @@ class Web3AuthNoModal extends SafeEventEmitter {
510
632
  }
511
633
  });
512
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
+ }
513
657
  }
514
658
 
515
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 '../../base/errors/index.js';
4
- import '@toruslabs/base-controllers';
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 '../../base/errors/index.js';
4
- import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
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';