@web3auth/no-modal 10.16.0 → 11.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. package/dist/lib.cjs/account-linking/index.js +8 -0
  2. package/dist/lib.cjs/account-linking/react.js +95 -0
  3. package/dist/lib.cjs/account-linking/rest.js +54 -0
  4. package/dist/lib.cjs/account-linking/vue.js +98 -0
  5. package/dist/lib.cjs/base/analytics.js +13 -1
  6. package/dist/lib.cjs/base/connector/baseConnector.js +104 -2
  7. package/dist/lib.cjs/base/connector/connectorStatus.js +2 -0
  8. package/dist/lib.cjs/base/connector/constants.js +6 -2
  9. package/dist/lib.cjs/base/connector/utils.js +0 -21
  10. package/dist/lib.cjs/base/constants.js +4 -0
  11. package/dist/lib.cjs/base/cookie.js +6 -20
  12. package/dist/lib.cjs/base/errors/index.js +84 -12
  13. package/dist/lib.cjs/base/utils.js +22 -11
  14. package/dist/lib.cjs/base/wallet/index.js +7 -0
  15. package/dist/lib.cjs/base/wallet/solana.js +83 -0
  16. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +566 -93
  17. package/dist/lib.cjs/connectors/auth-connector/authSolanaWallet.js +187 -0
  18. package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +55 -58
  19. package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
  20. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +19 -14
  21. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +18 -13
  22. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +24 -36
  23. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +350 -131
  24. package/dist/lib.cjs/connectors/utils.js +8 -2
  25. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -38
  26. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -3
  27. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +111 -73
  28. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +24 -51
  29. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +144 -0
  30. package/dist/lib.cjs/index.js +55 -83
  31. package/dist/lib.cjs/noModal.js +957 -169
  32. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +23 -39
  33. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +12 -10
  34. package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +8 -6
  35. package/dist/lib.cjs/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +47 -44
  36. package/dist/lib.cjs/providers/base-provider/CommonJRPCProvider.js +1 -3
  37. package/dist/lib.cjs/providers/base-provider/baseProvider.js +69 -35
  38. package/dist/lib.cjs/providers/base-provider/commonPrivateKeyProvider.js +8 -11
  39. package/dist/lib.cjs/providers/base-provider/index.js +0 -1
  40. package/dist/lib.cjs/providers/base-provider/jrpcClient.js +18 -19
  41. package/dist/lib.cjs/providers/base-provider/utils.js +0 -3
  42. package/dist/lib.cjs/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +22 -43
  43. package/dist/lib.cjs/providers/ethereum-provider/rpc/jrpcClient.js +18 -19
  44. package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMiddleware.js +200 -0
  45. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +9 -18
  46. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
  47. package/dist/lib.cjs/providers/xrpl-provider/rpc/JrpcClient.js +19 -26
  48. package/dist/lib.cjs/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +46 -37
  49. package/dist/lib.cjs/react/context/WalletServicesInnerContext.js +2 -69
  50. package/dist/lib.cjs/react/context/Web3AuthInnerContext.js +6 -161
  51. package/dist/lib.cjs/react/context/useWalletServicesContextValue.js +76 -0
  52. package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +216 -0
  53. package/dist/lib.cjs/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
  54. package/dist/lib.cjs/react/hooks/useCheckout.js +4 -2
  55. package/dist/lib.cjs/react/hooks/useFunding.js +4 -2
  56. package/dist/lib.cjs/react/hooks/useReceive.js +4 -2
  57. package/dist/lib.cjs/react/hooks/useSwap.js +4 -2
  58. package/dist/lib.cjs/react/hooks/useWalletConnectScanner.js +4 -2
  59. package/dist/lib.cjs/react/hooks/useWalletServicesPlugin.js +3 -10
  60. package/dist/lib.cjs/react/hooks/useWalletUI.js +4 -2
  61. package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
  62. package/dist/lib.cjs/react/hooks/useWeb3Auth.js +1 -22
  63. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
  64. package/dist/lib.cjs/react/hooks/useWeb3AuthInner.js +4 -2
  65. package/dist/lib.cjs/react/index.js +12 -2
  66. package/dist/lib.cjs/react/solana/hooks/useSignAndSendTransaction.js +22 -4
  67. package/dist/lib.cjs/react/solana/hooks/useSignMessage.js +20 -2
  68. package/dist/lib.cjs/react/solana/hooks/useSignTransaction.js +22 -3
  69. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +34 -51
  70. package/dist/lib.cjs/react/solana/index.js +2 -0
  71. package/dist/lib.cjs/react/solana/provider.js +169 -0
  72. package/dist/lib.cjs/react/wagmi/provider.js +10 -8
  73. package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
  74. package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
  75. package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
  76. package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
  77. package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
  78. package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
  79. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +26 -5
  80. package/dist/lib.cjs/types/base/connector/connectorStatus.d.ts +1 -0
  81. package/dist/lib.cjs/types/base/connector/constants.d.ts +5 -0
  82. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +72 -16
  83. package/dist/lib.cjs/types/base/connector/utils.d.ts +0 -3
  84. package/dist/lib.cjs/types/base/constants.d.ts +1 -0
  85. package/dist/lib.cjs/types/base/cookie.d.ts +0 -7
  86. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +57 -13
  87. package/dist/lib.cjs/types/base/errors/index.d.ts +15 -3
  88. package/dist/lib.cjs/types/base/hooks/index.d.ts +2 -2
  89. package/dist/lib.cjs/types/base/interfaces.d.ts +8 -2
  90. package/dist/lib.cjs/types/base/utils.d.ts +9 -2
  91. package/dist/lib.cjs/types/base/wallet/index.d.ts +3 -0
  92. package/dist/lib.cjs/types/base/wallet/solana.d.ts +19 -0
  93. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +37 -8
  94. package/dist/lib.cjs/types/connectors/auth-connector/authSolanaWallet.d.ts +35 -0
  95. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
  96. package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +8 -2
  97. package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +8 -2
  98. package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +2 -2
  99. package/dist/lib.cjs/types/connectors/injected-solana-connector/walletStandardConnector.d.ts +10 -7
  100. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +35 -3
  101. package/dist/lib.cjs/types/connectors/utils.d.ts +2 -0
  102. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.d.ts +0 -1
  103. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/walletConnectV2Utils.d.ts +1 -5
  104. package/dist/lib.cjs/types/connectors/wallet-connect-v2-connector/wcSolanaWallet.d.ts +26 -0
  105. package/dist/lib.cjs/types/index.d.ts +1 -0
  106. package/dist/lib.cjs/types/noModal.d.ts +113 -10
  107. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +1 -4
  108. package/dist/lib.cjs/types/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
  109. package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
  110. package/dist/lib.cjs/types/providers/base-provider/jrpcClient.d.ts +2 -5
  111. package/dist/lib.cjs/types/providers/base-provider/utils.d.ts +0 -1
  112. package/dist/lib.cjs/types/providers/ethereum-provider/index.d.ts +0 -1
  113. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/ethRpcMiddlewares.d.ts +4 -4
  114. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/index.d.ts +1 -1
  115. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/jrpcClient.d.ts +2 -5
  116. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMiddleware.d.ts +3 -0
  117. package/dist/lib.cjs/types/providers/index.d.ts +0 -1
  118. package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +0 -1
  119. package/dist/lib.cjs/types/providers/xrpl-provider/rpc/JrpcClient.d.ts +3 -7
  120. package/dist/lib.cjs/types/providers/xrpl-provider/rpc/xrplRpcMiddlewares.d.ts +5 -12
  121. package/dist/lib.cjs/types/react/context/index.d.ts +4 -0
  122. package/dist/lib.cjs/types/react/context/useWalletServicesContextValue.d.ts +12 -0
  123. package/dist/lib.cjs/types/react/context/useWeb3AuthInnerContextValue.d.ts +26 -0
  124. package/dist/lib.cjs/types/react/hooks/index.d.ts +2 -1
  125. package/dist/lib.cjs/types/react/hooks/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +4 -4
  126. package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
  127. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +1 -2
  128. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +2 -2
  129. package/dist/lib.cjs/types/react/index.d.ts +1 -0
  130. package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +7 -2
  131. package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +8 -3
  132. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +17 -4
  133. package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
  134. package/dist/lib.cjs/types/react/solana/provider.d.ts +26 -0
  135. package/dist/lib.cjs/types/vue/composables/index.d.ts +3 -1
  136. package/dist/lib.cjs/types/vue/composables/{useIdentityToken.d.ts → useAuthTokenInfo.d.ts} +3 -3
  137. package/dist/lib.cjs/types/vue/composables/useInjectedWeb3AuthInnerContext.d.ts +1 -0
  138. package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
  139. package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +1 -2
  140. package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +2 -2
  141. package/dist/lib.cjs/types/vue/index.d.ts +2 -0
  142. package/dist/lib.cjs/types/vue/interfaces.d.ts +2 -2
  143. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +1 -0
  144. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +7 -2
  145. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +8 -3
  146. package/dist/lib.cjs/types/vue/solana/composables/useSolanaClient.d.ts +7 -0
  147. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +17 -4
  148. package/dist/lib.cjs/types/vue/solana/constants.d.ts +3 -0
  149. package/dist/lib.cjs/types/vue/solana/index.d.ts +2 -0
  150. package/dist/lib.cjs/types/vue/solana/provider.d.ts +8 -0
  151. package/dist/lib.cjs/types/vue/useWalletServicesInnerContextValue.d.ts +13 -0
  152. package/dist/lib.cjs/types/vue/useWeb3AuthInnerContextValue.d.ts +26 -0
  153. package/dist/lib.cjs/types/x402/index.d.ts +43 -0
  154. package/dist/lib.cjs/types/x402/interfaces.d.ts +11 -0
  155. package/dist/lib.cjs/types/x402/react.d.ts +17 -0
  156. package/dist/lib.cjs/types/x402/vue.d.ts +18 -0
  157. package/dist/lib.cjs/vue/WalletServicesInnerProvider.js +9 -54
  158. package/dist/lib.cjs/vue/Web3AuthProvider.js +16 -177
  159. package/dist/lib.cjs/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +10 -8
  160. package/dist/lib.cjs/vue/composables/useCheckout.js +4 -2
  161. package/dist/lib.cjs/vue/composables/useEnableMFA.js +4 -2
  162. package/dist/lib.cjs/vue/composables/useFunding.js +4 -2
  163. package/dist/lib.cjs/vue/composables/useInjectedWeb3AuthInnerContext.js +29 -0
  164. package/dist/lib.cjs/vue/composables/useManageMFA.js +4 -2
  165. package/dist/lib.cjs/vue/composables/useReceive.js +4 -2
  166. package/dist/lib.cjs/vue/composables/useSwap.js +4 -2
  167. package/dist/lib.cjs/vue/composables/useSwitchChain.js +4 -2
  168. package/dist/lib.cjs/vue/composables/useWalletConnectScanner.js +4 -2
  169. package/dist/lib.cjs/vue/composables/useWalletUI.js +4 -2
  170. package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
  171. package/dist/lib.cjs/vue/composables/useWeb3Auth.js +1 -26
  172. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +6 -4
  173. package/dist/lib.cjs/vue/composables/useWeb3AuthDisconnect.js +4 -2
  174. package/dist/lib.cjs/vue/composables/useWeb3AuthInner.js +2 -20
  175. package/dist/lib.cjs/vue/composables/useWeb3AuthUser.js +4 -2
  176. package/dist/lib.cjs/vue/index.js +10 -2
  177. package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +6 -3
  178. package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +6 -3
  179. package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +6 -3
  180. package/dist/lib.cjs/vue/solana/composables/useSolanaClient.js +14 -0
  181. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +60 -41
  182. package/dist/lib.cjs/vue/solana/constants.js +5 -0
  183. package/dist/lib.cjs/vue/solana/index.js +6 -0
  184. package/dist/lib.cjs/vue/solana/provider.js +110 -0
  185. package/dist/lib.cjs/vue/useWalletServicesInnerContextValue.js +75 -0
  186. package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +226 -0
  187. package/dist/lib.cjs/vue/wagmi/provider.js +28 -12
  188. package/dist/lib.cjs/x402/index.js +175 -0
  189. package/dist/lib.cjs/x402/interfaces.js +5 -0
  190. package/dist/lib.cjs/x402/react.js +64 -0
  191. package/dist/lib.cjs/x402/vue.js +58 -0
  192. package/dist/lib.esm/account-linking/index.js +1 -0
  193. package/dist/lib.esm/account-linking/react.js +74 -0
  194. package/dist/lib.esm/account-linking/rest.js +51 -0
  195. package/dist/lib.esm/account-linking/vue.js +78 -0
  196. package/dist/lib.esm/base/analytics.js +13 -1
  197. package/dist/lib.esm/base/connector/baseConnector.js +104 -2
  198. package/dist/lib.esm/base/connector/connectorStatus.js +2 -1
  199. package/dist/lib.esm/base/connector/constants.js +6 -2
  200. package/dist/lib.esm/base/connector/utils.js +1 -19
  201. package/dist/lib.esm/base/constants.js +4 -1
  202. package/dist/lib.esm/base/cookie.js +7 -20
  203. package/dist/lib.esm/base/errors/index.js +84 -13
  204. package/dist/lib.esm/base/utils.js +22 -7
  205. package/dist/lib.esm/base/wallet/index.js +2 -1
  206. package/dist/lib.esm/base/wallet/solana.js +81 -0
  207. package/dist/lib.esm/connectors/auth-connector/authConnector.js +527 -57
  208. package/dist/lib.esm/connectors/auth-connector/authSolanaWallet.js +175 -0
  209. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +55 -58
  210. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +57 -66
  211. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +16 -13
  212. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +16 -13
  213. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +22 -34
  214. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +366 -132
  215. package/dist/lib.esm/connectors/utils.js +9 -4
  216. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +12 -31
  217. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +1 -1
  218. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +110 -73
  219. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +21 -49
  220. package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +130 -0
  221. package/dist/lib.esm/index.js +12 -19
  222. package/dist/lib.esm/noModal.js +975 -177
  223. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +20 -39
  224. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +9 -9
  225. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +3 -3
  226. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +48 -45
  227. package/dist/lib.esm/providers/base-provider/CommonJRPCProvider.js +2 -4
  228. package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
  229. package/dist/lib.esm/providers/base-provider/commonPrivateKeyProvider.js +9 -12
  230. package/dist/lib.esm/providers/base-provider/index.js +1 -1
  231. package/dist/lib.esm/providers/base-provider/jrpcClient.js +20 -19
  232. package/dist/lib.esm/providers/base-provider/utils.js +1 -3
  233. package/dist/lib.esm/providers/ethereum-provider/rpc/ethRpcMiddlewares.js +23 -44
  234. package/dist/lib.esm/providers/ethereum-provider/rpc/jrpcClient.js +20 -19
  235. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMiddleware.js +201 -0
  236. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +6 -17
  237. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js +2 -1
  238. package/dist/lib.esm/providers/xrpl-provider/rpc/JrpcClient.js +21 -25
  239. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +48 -38
  240. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +3 -57
  241. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +7 -152
  242. package/dist/lib.esm/react/context/useWalletServicesContextValue.js +59 -0
  243. package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +203 -0
  244. package/dist/lib.esm/react/hooks/{useIdentityToken.js → useAuthTokenInfo.js} +6 -7
  245. package/dist/lib.esm/react/hooks/useWalletServicesPlugin.js +3 -10
  246. package/dist/lib.esm/react/hooks/useWallets.js +33 -0
  247. package/dist/lib.esm/react/hooks/useWeb3Auth.js +1 -22
  248. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
  249. package/dist/lib.esm/react/index.js +6 -1
  250. package/dist/lib.esm/react/solana/hooks/useSignAndSendTransaction.js +6 -4
  251. package/dist/lib.esm/react/solana/hooks/useSignMessage.js +4 -2
  252. package/dist/lib.esm/react/solana/hooks/useSignTransaction.js +6 -3
  253. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +33 -28
  254. package/dist/lib.esm/react/solana/index.js +1 -0
  255. package/dist/lib.esm/react/solana/provider.js +153 -0
  256. package/dist/lib.esm/react/wagmi/provider.js +8 -8
  257. package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -54
  258. package/dist/lib.esm/vue/Web3AuthProvider.js +7 -179
  259. package/dist/lib.esm/vue/composables/{useIdentityToken.js → useAuthTokenInfo.js} +6 -6
  260. package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
  261. package/dist/lib.esm/vue/composables/useFunding.js +1 -1
  262. package/dist/lib.esm/vue/composables/useInjectedWeb3AuthInnerContext.js +11 -0
  263. package/dist/lib.esm/vue/composables/useReceive.js +1 -1
  264. package/dist/lib.esm/vue/composables/useSwap.js +1 -1
  265. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
  266. package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
  267. package/dist/lib.esm/vue/composables/useWallets.js +35 -0
  268. package/dist/lib.esm/vue/composables/useWeb3Auth.js +1 -26
  269. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
  270. package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +2 -6
  271. package/dist/lib.esm/vue/index.js +5 -1
  272. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +2 -1
  273. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +2 -1
  274. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +3 -2
  275. package/dist/lib.esm/vue/solana/composables/useSolanaClient.js +12 -0
  276. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +53 -35
  277. package/dist/lib.esm/vue/solana/constants.js +3 -0
  278. package/dist/lib.esm/vue/solana/index.js +3 -0
  279. package/dist/lib.esm/vue/solana/provider.js +99 -0
  280. package/dist/lib.esm/vue/useWalletServicesInnerContextValue.js +58 -0
  281. package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +213 -0
  282. package/dist/lib.esm/vue/wagmi/provider.js +26 -12
  283. package/dist/lib.esm/x402/index.js +170 -0
  284. package/dist/lib.esm/x402/interfaces.js +3 -0
  285. package/dist/lib.esm/x402/react.js +59 -0
  286. package/dist/lib.esm/x402/vue.js +54 -0
  287. package/package.json +102 -53
  288. package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +0 -7
  289. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -224
  290. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -177
  291. package/dist/lib.cjs/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -21
  292. package/dist/lib.cjs/providers/ethereum-provider/providers/converter.js +0 -88
  293. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -27
  294. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -383
  295. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
  296. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -93
  297. package/dist/lib.cjs/providers/ethereum-provider/providers/utils.js +0 -29
  298. package/dist/lib.cjs/providers/ethereum-provider/rpc/walletMidddleware.js +0 -251
  299. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -65
  300. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -45
  301. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/utils.js +0 -16
  302. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -103
  303. package/dist/lib.cjs/providers/solana-provider/rpc/JrpcClient.js +0 -47
  304. package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -97
  305. package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +0 -91
  306. package/dist/lib.cjs/types/connectors/injected-solana-connector/utils.d.ts +0 -3
  307. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +0 -1
  308. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/index.d.ts +0 -1
  309. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +0 -74
  310. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/index.d.ts +0 -1
  311. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.d.ts +0 -12
  312. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.d.ts +0 -3
  313. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/rpc/interfaces.d.ts +0 -15
  314. package/dist/lib.cjs/types/providers/ethereum-provider/providers/converter.d.ts +0 -14
  315. package/dist/lib.cjs/types/providers/ethereum-provider/providers/index.d.ts +0 -1
  316. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.d.ts +0 -16
  317. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.d.ts +0 -28
  318. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/index.d.ts +0 -4
  319. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.d.ts +0 -46
  320. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.d.ts +0 -11
  321. package/dist/lib.cjs/types/providers/ethereum-provider/providers/privateKeyProviders/index.d.ts +0 -1
  322. package/dist/lib.cjs/types/providers/ethereum-provider/providers/utils.d.ts +0 -5
  323. package/dist/lib.cjs/types/providers/ethereum-provider/rpc/walletMidddleware.d.ts +0 -3
  324. package/dist/lib.cjs/types/providers/solana-provider/index.d.ts +0 -4
  325. package/dist/lib.cjs/types/providers/solana-provider/interface.d.ts +0 -22
  326. package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
  327. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +0 -16
  328. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/providerHandlers.d.ts +0 -3
  329. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/index.d.ts +0 -2
  330. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/utils.d.ts +0 -3
  331. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/walletStandardProvider.d.ts +0 -9
  332. package/dist/lib.cjs/types/providers/solana-provider/rpc/JrpcClient.d.ts +0 -9
  333. package/dist/lib.cjs/types/providers/solana-provider/rpc/index.d.ts +0 -3
  334. package/dist/lib.cjs/types/providers/solana-provider/rpc/interfaces.d.ts +0 -27
  335. package/dist/lib.cjs/types/providers/solana-provider/rpc/solanaRpcMiddlewares.d.ts +0 -20
  336. package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +0 -29
  337. package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +0 -1
  338. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +0 -206
  339. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +0 -163
  340. package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +0 -20
  341. package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +0 -85
  342. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/constants.js +0 -21
  343. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +0 -378
  344. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +0 -8
  345. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +0 -88
  346. package/dist/lib.esm/providers/ethereum-provider/providers/utils.js +0 -24
  347. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +0 -258
  348. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +0 -47
  349. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/providerHandlers.js +0 -43
  350. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/utils.js +0 -14
  351. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +0 -91
  352. package/dist/lib.esm/providers/solana-provider/rpc/JrpcClient.js +0 -42
  353. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +0 -89
  354. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +0 -92
  355. package/dist/noModal.umd.min.js +0 -2
  356. package/dist/noModal.umd.min.js.LICENSE.txt +0 -46
@@ -0,0 +1,175 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
+ import { getBase64EncodedWireTransaction, getBase64Decoder, getBase58Encoder, getTransactionDecoder, getBase64Encoder } from '@solana/kit';
4
+ import { SolanaSignTransaction, SolanaSignMessage, SolanaSignAndSendTransaction } from '@solana/wallet-standard-features';
5
+ import { StandardEvents, StandardDisconnect, StandardConnect } from '@wallet-standard/features';
6
+ import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
7
+ import { WEB3AUTH_ICON } from '../../base/wallet/index.js';
8
+ import { WalletLoginError } from '../../base/errors/index.js';
9
+ import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
10
+ import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
11
+
12
+ const base58Encoder = getBase58Encoder();
13
+ const base64Decoder = getBase64Decoder();
14
+ const base64Encoder = getBase64Encoder();
15
+ const transactionDecoder = getTransactionDecoder();
16
+ const ACCOUNT_FEATURES = [SolanaSignAndSendTransaction, SolanaSignMessage, SolanaSignTransaction];
17
+ function solanaWalletChainsFromConfigs(solanaChainConfigs) {
18
+ const ids = solanaChainConfigs.map(getSolanaChainByChainConfig).filter(id => id != null);
19
+ const unique = [...new Set(ids)];
20
+ return unique;
21
+ }
22
+ const SOLANA_PROVIDER_HEX_CHAIN_IDS = new Set(Object.keys(SOLANA_CAIP_CHAIN_MAP).map(id => id.toLowerCase()));
23
+
24
+ /**
25
+ * AuthSolanaWallet implements the Wallet Standard interface, wrapping a JRPC provider.
26
+ * Used by AuthConnector so consumers get a standards-compliant Wallet from `connection.solanaWallet`.
27
+ *
28
+ * {@link Wallet.accounts} is synchronous in the Wallet Standard; it returns `[]` until accounts have been loaded
29
+ * (`null` internally). The first async operation ({@link StandardConnect}, sign, etc.) calls `ensureAccountsLoaded`, which
30
+ * requires {@link IProvider.chainId} to be a configured Solana network (see {@link SOLANA_CAIP_CHAIN_MAP}) before {@link SOLANA_METHOD_TYPES.GET_ACCOUNTS}.
31
+ */
32
+ class AuthSolanaWallet {
33
+ /**
34
+ * @param solanaChainConfigs - All configured Solana {@link CustomChainConfig} entries (same namespace).
35
+ */
36
+ constructor(_provider, solanaChainConfigs) {
37
+ this._provider = _provider;
38
+ _defineProperty(this, "version", "1.0.0");
39
+ _defineProperty(this, "name", "Web3Auth");
40
+ _defineProperty(this, "icon", WEB3AUTH_ICON);
41
+ _defineProperty(this, "chains", void 0);
42
+ _defineProperty(this, "features", void 0);
43
+ _defineProperty(this, "_accounts", null);
44
+ _defineProperty(this, "_listeners", {});
45
+ this.chains = solanaWalletChainsFromConfigs(solanaChainConfigs);
46
+ this.features = {
47
+ [StandardConnect]: {
48
+ version: "1.0.0",
49
+ connect: async () => {
50
+ await this.ensureAccountsLoaded();
51
+ return {
52
+ accounts: this.accounts
53
+ };
54
+ }
55
+ },
56
+ [StandardDisconnect]: {
57
+ version: "1.0.0",
58
+ disconnect: async () => {}
59
+ },
60
+ [StandardEvents]: {
61
+ version: "1.0.0",
62
+ on: (event, listener) => {
63
+ var _this$_listeners, _this$_listeners$even;
64
+ ((_this$_listeners$even = (_this$_listeners = this._listeners)[event]) !== null && _this$_listeners$even !== void 0 ? _this$_listeners$even : _this$_listeners[event] = new Set()).add(listener);
65
+ return () => this._listeners[event].delete(listener);
66
+ }
67
+ },
68
+ [SolanaSignAndSendTransaction]: {
69
+ version: "1.0.0",
70
+ supportedTransactionVersions: ["legacy", 0],
71
+ signAndSendTransaction: async (...inputs) => {
72
+ await this.ensureAccountsLoaded();
73
+ return Promise.all(inputs.map(async input => {
74
+ const base64Tx = base64Decoder.decode(input.transaction);
75
+ const signature = await this._provider.request({
76
+ method: SOLANA_METHOD_TYPES.SEND_TRANSACTION,
77
+ params: {
78
+ message: base64Tx
79
+ }
80
+ });
81
+ return {
82
+ signature: new Uint8Array(base58Encoder.encode(signature))
83
+ };
84
+ }));
85
+ }
86
+ },
87
+ [SolanaSignMessage]: {
88
+ version: "1.0.0",
89
+ signMessage: async (...inputs) => {
90
+ await this.ensureAccountsLoaded();
91
+ return Promise.all(inputs.map(async input => {
92
+ const message = new TextDecoder().decode(input.message);
93
+ const signature = await this._provider.request({
94
+ method: SOLANA_METHOD_TYPES.SIGN_MESSAGE,
95
+ params: {
96
+ data: message,
97
+ from: input.account.address
98
+ }
99
+ });
100
+ return {
101
+ signedMessage: new Uint8Array(input.message),
102
+ signature: new Uint8Array(base58Encoder.encode(signature))
103
+ };
104
+ }));
105
+ }
106
+ },
107
+ [SolanaSignTransaction]: {
108
+ version: "1.0.0",
109
+ supportedTransactionVersions: ["legacy", 0],
110
+ signTransaction: async (...inputs) => {
111
+ await this.ensureAccountsLoaded();
112
+ return Promise.all(inputs.map(async input => {
113
+ const base64Tx = base64Decoder.decode(input.transaction);
114
+ const signatureBase58 = await this._provider.request({
115
+ method: SOLANA_METHOD_TYPES.SIGN_TRANSACTION,
116
+ params: {
117
+ message: base64Tx
118
+ }
119
+ });
120
+ const sigBytes = new Uint8Array(base58Encoder.encode(signatureBase58));
121
+ const decodedTx = transactionDecoder.decode(input.transaction);
122
+ const signedTx = _objectSpread(_objectSpread({}, decodedTx), {}, {
123
+ signatures: _objectSpread(_objectSpread({}, decodedTx.signatures), {}, {
124
+ [input.account.address]: sigBytes
125
+ })
126
+ });
127
+ const signedBase64 = getBase64EncodedWireTransaction(signedTx);
128
+ return {
129
+ signedTransaction: new Uint8Array(base64Encoder.encode(signedBase64))
130
+ };
131
+ }));
132
+ }
133
+ }
134
+ };
135
+ }
136
+
137
+ /**
138
+ * Wallet Standard requires a synchronous getter; RPC runs on first async wallet operation instead.
139
+ */
140
+ get accounts() {
141
+ var _this$_accounts;
142
+ return (_this$_accounts = this._accounts) !== null && _this$_accounts !== void 0 ? _this$_accounts : [];
143
+ }
144
+
145
+ /** Throws if the embed is not on Solana; otherwise loads accounts once via {@link SOLANA_METHOD_TYPES.GET_ACCOUNTS}. */
146
+ async ensureAccountsLoaded() {
147
+ var _await$this$_provider;
148
+ // assert solana chain
149
+ const chainId = this._provider.chainId;
150
+ if (!SOLANA_PROVIDER_HEX_CHAIN_IDS.has(chainId.toLowerCase())) throw WalletLoginError.unsupportedOperation(`Solana wallet operations require the embedded provider to be on a Solana network (current chainId: ${chainId}). Switch chain first.`);
151
+ if (this._accounts !== null) return;
152
+ const addresses = (_await$this$_provider = await this._provider.request({
153
+ method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
154
+ })) !== null && _await$this$_provider !== void 0 ? _await$this$_provider : [];
155
+ const accountChains = this.chains;
156
+ this._accounts = addresses.map(address => ({
157
+ address,
158
+ publicKey: new Uint8Array(base58Encoder.encode(address)),
159
+ chains: accountChains.length ? accountChains : [],
160
+ features: ACCOUNT_FEATURES
161
+ }));
162
+ this.emitChange({
163
+ accounts: this.accounts
164
+ });
165
+ }
166
+ emitChange(properties) {
167
+ const listeners = this._listeners.change;
168
+ if (!listeners) return;
169
+ listeners.forEach(listener => {
170
+ listener(properties);
171
+ });
172
+ }
173
+ }
174
+
175
+ export { AuthSolanaWallet };
@@ -1,13 +1,15 @@
1
- import { signChallenge, verifySignedChallenge } from '@toruslabs/base-controllers';
1
+ import { signChallenge } from '@toruslabs/base-controllers';
2
+ import { bytesToHexPrefixedString, utf8ToBytes } from '@toruslabs/metadata-helpers';
2
3
  import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
3
- import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/connector/utils.js';
4
- import { BaseConnector } from '../../base/connector/baseConnector.js';
4
+ import { generateSiweNonce } from 'viem/siwe';
5
5
  import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
6
+ import { citadelServerUrl } from '../../base/utils.js';
7
+ import { BaseConnector } from '../../base/connector/baseConnector.js';
6
8
  import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
7
9
 
8
10
  class BaseEvmConnector extends BaseConnector {
9
11
  async init(_) {}
10
- async getIdentityToken() {
12
+ async getAuthTokenInfo() {
11
13
  if (!this.provider || !this.canAuthorize) throw WalletLoginError.notConnectedError();
12
14
  if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with valid options");
13
15
  this.status = CONNECTOR_STATUS.AUTHORIZING;
@@ -18,68 +20,63 @@ class BaseEvmConnector extends BaseConnector {
18
20
  method: EVM_METHOD_TYPES.GET_ACCOUNTS
19
21
  });
20
22
  if (accounts && accounts.length > 0) {
21
- const existingToken = getSavedToken(accounts[0], this.name);
22
- if (existingToken) {
23
- const isExpired = checkIfTokenIsExpired(existingToken);
24
- if (!isExpired) {
25
- this.status = CONNECTOR_STATUS.AUTHORIZED;
26
- this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
27
- connector: this.name,
28
- identityTokenInfo: {
29
- idToken: existingToken
30
- }
31
- });
32
- return {
33
- idToken: existingToken
34
- };
35
- }
36
- }
37
- const chainId = await this.provider.request({
38
- method: "eth_chainId"
39
- });
40
- const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
41
- if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
23
+ const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
24
+ if (cached) return cached;
25
+ const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
42
26
  const {
27
+ challenge,
28
+ signature,
43
29
  chainNamespace
44
- } = currentChainConfig;
45
- const payload = {
46
- domain: window.location.origin,
47
- uri: window.location.href,
48
- address: accounts[0],
49
- chainId: parseInt(chainId, 16),
50
- version: "1",
51
- nonce: Math.random().toString(36).slice(2),
52
- issuedAt: new Date().toISOString()
53
- };
54
- const challenge = await signChallenge(payload, chainNamespace);
55
- const hexChallenge = `0x${Buffer.from(challenge, "utf8").toString("hex")}`;
56
- const signedMessage = await this.provider.request({
57
- method: EVM_METHOD_TYPES.PERSONAL_SIGN,
58
- params: [hexChallenge, accounts[0]]
59
- });
60
- const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
61
- saveToken(accounts[0], this.name, idToken);
62
- this.status = CONNECTOR_STATUS.AUTHORIZED;
63
- this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
64
- connector: this.name,
65
- identityTokenInfo: {
66
- idToken
67
- }
30
+ } = await this.generateChallengeAndSign(authServer, accounts);
31
+ return this.verifyAndAuthorize({
32
+ chainNamespace,
33
+ signedMessage: signature,
34
+ challenge,
35
+ authServer
68
36
  });
69
- return {
70
- idToken
71
- };
72
37
  }
73
38
  throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
74
39
  }
40
+ async generateChallengeAndSign(authServerUrl, accounts) {
41
+ const accountsToUse = accounts || (await this.provider.request({
42
+ method: EVM_METHOD_TYPES.GET_ACCOUNTS
43
+ }));
44
+ if (!accountsToUse || accountsToUse.length === 0) {
45
+ throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
46
+ }
47
+ const chainId = await this.provider.request({
48
+ method: "eth_chainId"
49
+ });
50
+ const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
51
+ if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
52
+ const {
53
+ chainNamespace
54
+ } = currentChainConfig;
55
+ const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
56
+ const payload = {
57
+ domain: window.location.origin,
58
+ uri: window.location.href,
59
+ address: accountsToUse[0],
60
+ chainId: parseInt(chainId, 16),
61
+ version: "1",
62
+ nonce: generateSiweNonce(),
63
+ issuedAt: new Date().toISOString()
64
+ };
65
+ const challenge = await signChallenge(payload, chainNamespace, authServer);
66
+ const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
67
+ const signature = await this.provider.request({
68
+ method: EVM_METHOD_TYPES.PERSONAL_SIGN,
69
+ params: [hexChallenge, accountsToUse[0]]
70
+ });
71
+ return {
72
+ challenge,
73
+ signature,
74
+ chainNamespace
75
+ };
76
+ }
75
77
  async disconnectSession() {
76
78
  super.checkDisconnectionRequirements();
77
- const accounts = await this.provider.request({
78
- method: "eth_accounts"
79
- });
80
- if (accounts && accounts.length > 0) {
81
- clearToken(accounts[0], this.name);
82
- }
79
+ await this.clearWalletSession();
83
80
  }
84
81
  async disconnect() {
85
82
  this.rehydrated = false;
@@ -1,87 +1,78 @@
1
- import { signChallenge, verifySignedChallenge } from '@toruslabs/base-controllers';
2
- import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
3
- import { BaseConnector } from '../../base/connector/baseConnector.js';
1
+ import { CHAIN_NAMESPACES, signChallenge } from '@toruslabs/base-controllers';
2
+ import { generateSiweNonce } from 'viem/siwe';
4
3
  import { WalletLoginError, WalletInitializationError } from '../../base/errors/index.js';
4
+ import { citadelServerUrl } from '../../base/utils.js';
5
+ import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
6
+ import { BaseConnector } from '../../base/connector/baseConnector.js';
5
7
  import { CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
6
- import { getSavedToken, checkIfTokenIsExpired, saveToken, clearToken } from '../../base/connector/utils.js';
7
8
 
8
9
  class BaseSolanaConnector extends BaseConnector {
9
10
  async init(_) {}
10
- async getIdentityToken() {
11
- if (!this.provider || !this.canAuthorize) throw WalletLoginError.notConnectedError();
11
+ async getAuthTokenInfo() {
12
+ if (!this.solanaWallet || !this.canAuthorize) throw WalletLoginError.notConnectedError();
12
13
  if (!this.coreOptions) throw WalletInitializationError.invalidParams("Please initialize Web3Auth with a valid options");
13
14
  this.status = CONNECTOR_STATUS.AUTHORIZING;
14
15
  this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
15
16
  connector: this.name
16
17
  });
17
- const accounts = await this.provider.request({
18
- method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
19
- });
20
- if (accounts && accounts.length > 0) {
21
- const existingToken = getSavedToken(accounts[0], this.name);
22
- if (existingToken) {
23
- const isExpired = checkIfTokenIsExpired(existingToken);
24
- if (!isExpired) {
25
- this.status = CONNECTOR_STATUS.AUTHORIZED;
26
- this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
27
- connector: this.name,
28
- identityTokenInfo: {
29
- idToken: existingToken
30
- }
31
- });
32
- return {
33
- idToken: existingToken
34
- };
35
- }
36
- }
37
- const chainId = await this.provider.request({
38
- method: "solana_chainId"
39
- });
40
- const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
41
- if (!currentChainConfig) throw WalletInitializationError.invalidParams("chainConfig is required before authentication");
18
+ const accounts = this.solanaWallet.accounts.map(a => a.address);
19
+ if (accounts.length > 0) {
20
+ const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
21
+ if (cached) return cached;
22
+ const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
42
23
  const {
24
+ challenge,
25
+ signature,
43
26
  chainNamespace
44
- } = currentChainConfig;
45
- const payload = {
46
- domain: window.location.origin,
47
- uri: window.location.href,
48
- address: accounts[0],
49
- chainId: parseInt(chainId, 16),
50
- version: "1",
51
- nonce: Math.random().toString(36).slice(2),
52
- issuedAt: new Date().toISOString()
53
- };
54
- const challenge = await signChallenge(payload, chainNamespace);
55
- const signedMessage = await this.provider.request({
56
- method: SOLANA_METHOD_TYPES.SIGN_MESSAGE,
57
- params: {
58
- data: challenge,
59
- display: "utf8"
60
- }
61
- });
62
- const idToken = await verifySignedChallenge(chainNamespace, signedMessage, challenge, this.name, this.coreOptions.sessionTime, this.coreOptions.clientId, this.coreOptions.web3AuthNetwork);
63
- saveToken(accounts[0], this.name, idToken);
64
- this.status = CONNECTOR_STATUS.AUTHORIZED;
65
- this.emit(CONNECTOR_EVENTS.AUTHORIZED, {
66
- connector: this.name,
67
- identityTokenInfo: {
68
- idToken
69
- }
27
+ } = await this.generateChallengeAndSign(authServer);
28
+ return this.verifyAndAuthorize({
29
+ chainNamespace,
30
+ signedMessage: signature,
31
+ challenge,
32
+ authServer
70
33
  });
71
- return {
72
- idToken
73
- };
74
34
  }
75
35
  throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
76
36
  }
77
- async disconnectSession() {
78
- super.checkDisconnectionRequirements();
79
- const accounts = await this.provider.request({
80
- method: SOLANA_METHOD_TYPES.GET_ACCOUNTS
37
+ async generateChallengeAndSign(authServerUrl, accounts) {
38
+ const accountsToUse = accounts || this.solanaWallet.accounts.map(a => a.address);
39
+ if (!accountsToUse || accountsToUse.length === 0) {
40
+ throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
41
+ }
42
+ const walletChains = new Set(this.solanaWallet.chains);
43
+ const currentChainConfig = this.coreOptions.chains.find(c => {
44
+ if (c.chainNamespace !== CHAIN_NAMESPACES.SOLANA) return false;
45
+ const id = getSolanaChainByChainConfig(c);
46
+ return id != null && walletChains.has(id);
81
47
  });
82
- if (accounts && accounts.length > 0) {
83
- clearToken(accounts[0], this.name);
48
+ if (!currentChainConfig) {
49
+ throw WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
84
50
  }
51
+ const {
52
+ chainId,
53
+ chainNamespace
54
+ } = currentChainConfig;
55
+ const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
56
+ const payload = {
57
+ domain: window.location.origin,
58
+ uri: window.location.href,
59
+ address: accountsToUse[0],
60
+ chainId: parseInt(chainId, 16),
61
+ version: "1",
62
+ nonce: generateSiweNonce(),
63
+ issuedAt: new Date().toISOString()
64
+ };
65
+ const challenge = await signChallenge(payload, chainNamespace, authServer);
66
+ const signedMessage = await walletSignMessage(this.solanaWallet, challenge, accountsToUse[0]);
67
+ return {
68
+ challenge,
69
+ signature: signedMessage,
70
+ chainNamespace
71
+ };
72
+ }
73
+ async disconnectSession() {
74
+ super.checkDisconnectionRequirements();
75
+ await this.clearWalletSession();
85
76
  }
86
77
  async disconnect() {
87
78
  this.rehydrated = false;
@@ -2,10 +2,10 @@ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
2
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
3
3
  import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
4
4
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
5
- import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
6
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
7
5
  import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
8
6
  import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
7
+ import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
8
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
9
9
 
10
10
  class CoinbaseConnector extends BaseEvmConnector {
11
11
  constructor(connectorOptions) {
@@ -53,12 +53,12 @@ class CoinbaseConnector extends BaseEvmConnector {
53
53
  try {
54
54
  if (options.autoConnect) {
55
55
  this.rehydrated = true;
56
- const provider = await this.connect({
56
+ const connection = await this.connect({
57
57
  chainId: options.chainId,
58
- getIdentityToken: options.getIdentityToken
58
+ getAuthTokenInfo: options.getAuthTokenInfo
59
59
  });
60
60
  // the connect function could fail silently as well.
61
- if (!provider) {
61
+ if (!connection) {
62
62
  this.rehydrated = false;
63
63
  throw WalletLoginError.connectionError("Failed to rehydrate.");
64
64
  }
@@ -69,7 +69,7 @@ class CoinbaseConnector extends BaseEvmConnector {
69
69
  }
70
70
  async connect({
71
71
  chainId,
72
- getIdentityToken
72
+ getAuthTokenInfo
73
73
  }) {
74
74
  super.checkConnectionRequirements();
75
75
  if (!this.coinbaseProvider) throw WalletLoginError.notConnectedError("Connector is not initialized");
@@ -95,17 +95,20 @@ class CoinbaseConnector extends BaseEvmConnector {
95
95
  // ready to be connected again
96
96
  this.disconnect();
97
97
  });
98
- let identityTokenInfo;
99
98
  this.emit(CONNECTOR_EVENTS.CONNECTED, {
100
- connector: WALLET_CONNECTORS.COINBASE,
99
+ connectorName: WALLET_CONNECTORS.COINBASE,
101
100
  reconnected: this.rehydrated,
102
- provider: this.provider,
103
- identityTokenInfo
101
+ ethereumProvider: this.provider,
102
+ solanaWallet: null
104
103
  });
105
- if (getIdentityToken) {
106
- identityTokenInfo = await this.getIdentityToken();
104
+ if (getAuthTokenInfo) {
105
+ await this.getAuthTokenInfo();
107
106
  }
108
- return this.provider;
107
+ return {
108
+ ethereumProvider: this.provider,
109
+ solanaWallet: null,
110
+ connectorName: this.name
111
+ };
109
112
  } catch (error) {
110
113
  // ready again to be connected
111
114
  this.status = CONNECTOR_STATUS.READY;
@@ -2,10 +2,10 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { normalizeWalletName } from '../../base/utils.js';
3
3
  import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
4
4
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
5
- import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
6
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
7
5
  import { log } from '../../base/loglevel.js';
8
6
  import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
7
+ import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
8
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
9
9
 
10
10
  class InjectedEvmConnector extends BaseEvmConnector {
11
11
  constructor(options) {
@@ -42,11 +42,11 @@ class InjectedEvmConnector extends BaseEvmConnector {
42
42
  log.debug(`initializing ${this.name} injected connector`);
43
43
  if (options.autoConnect) {
44
44
  this.rehydrated = true;
45
- const provider = await this.connect({
45
+ const connection = await this.connect({
46
46
  chainId: options.chainId,
47
- getIdentityToken: options.getIdentityToken
47
+ getAuthTokenInfo: options.getAuthTokenInfo
48
48
  });
49
- if (!provider) {
49
+ if (!connection) {
50
50
  this.rehydrated = false;
51
51
  throw WalletLoginError.connectionError("Failed to rehydrate.");
52
52
  }
@@ -57,7 +57,7 @@ class InjectedEvmConnector extends BaseEvmConnector {
57
57
  }
58
58
  async connect({
59
59
  chainId,
60
- getIdentityToken
60
+ getAuthTokenInfo
61
61
  }) {
62
62
  super.checkConnectionRequirements();
63
63
  if (!this.injectedProvider) throw WalletLoginError.connectionError("Injected provider is not available");
@@ -89,17 +89,20 @@ class InjectedEvmConnector extends BaseEvmConnector {
89
89
  }
90
90
  };
91
91
  this.injectedProvider.on("accountsChanged", accountDisconnectHandler);
92
- let identityTokenInfo;
93
92
  this.emit(CONNECTOR_EVENTS.CONNECTED, {
94
- connector: this.name,
93
+ connectorName: this.name,
95
94
  reconnected: this.rehydrated,
96
- provider: this.injectedProvider,
97
- identityTokenInfo
95
+ ethereumProvider: this.injectedProvider,
96
+ solanaWallet: null
98
97
  });
99
- if (getIdentityToken) {
100
- identityTokenInfo = await this.getIdentityToken();
98
+ if (getAuthTokenInfo) {
99
+ await this.getAuthTokenInfo();
101
100
  }
102
- return this.injectedProvider;
101
+ return {
102
+ ethereumProvider: this.injectedProvider,
103
+ solanaWallet: null,
104
+ connectorName: this.name
105
+ };
103
106
  } catch (error) {
104
107
  // ready again to be connected
105
108
  this.status = CONNECTOR_STATUS.READY;