@web3auth/no-modal 11.0.0-beta.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 (100) 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 +17 -2
  6. package/dist/lib.cjs/base/connector/constants.js +2 -0
  7. package/dist/lib.cjs/base/errors/index.js +48 -0
  8. package/dist/lib.cjs/base/utils.js +15 -3
  9. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +427 -50
  10. package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +42 -23
  11. package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +41 -24
  12. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +76 -45
  13. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +41 -13
  14. package/dist/lib.cjs/index.js +20 -13
  15. package/dist/lib.cjs/noModal.js +811 -110
  16. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +1 -1
  17. package/dist/lib.cjs/providers/base-provider/baseProvider.js +65 -33
  18. package/dist/lib.cjs/react/context/useWeb3AuthInnerContextValue.js +34 -20
  19. package/dist/lib.cjs/react/hooks/useWallets.js +51 -0
  20. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +2 -2
  21. package/dist/lib.cjs/react/index.js +2 -0
  22. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +2 -2
  23. package/dist/lib.cjs/react/solana/provider.js +2 -0
  24. package/dist/lib.cjs/types/account-linking/index.d.ts +2 -0
  25. package/dist/lib.cjs/types/account-linking/interfaces.d.ts +90 -0
  26. package/dist/lib.cjs/types/account-linking/react.d.ts +19 -0
  27. package/dist/lib.cjs/types/account-linking/rest.d.ts +9 -0
  28. package/dist/lib.cjs/types/account-linking/vue.d.ts +20 -0
  29. package/dist/lib.cjs/types/base/analytics.d.ts +9 -0
  30. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +5 -0
  31. package/dist/lib.cjs/types/base/connector/constants.d.ts +2 -0
  32. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +51 -6
  33. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +39 -2
  34. package/dist/lib.cjs/types/base/errors/index.d.ts +13 -0
  35. package/dist/lib.cjs/types/base/interfaces.d.ts +3 -1
  36. package/dist/lib.cjs/types/base/utils.d.ts +7 -1
  37. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +27 -3
  38. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +77 -2
  39. package/dist/lib.cjs/types/connectors/base-evm-connector/baseEvmConnector.d.ts +6 -0
  40. package/dist/lib.cjs/types/connectors/base-solana-connector/baseSolanaConnector.d.ts +6 -0
  41. package/dist/lib.cjs/types/index.d.ts +1 -0
  42. package/dist/lib.cjs/types/noModal.d.ts +104 -5
  43. package/dist/lib.cjs/types/providers/base-provider/baseProvider.d.ts +7 -0
  44. package/dist/lib.cjs/types/react/hooks/index.d.ts +1 -0
  45. package/dist/lib.cjs/types/react/hooks/useWallets.d.ts +8 -0
  46. package/dist/lib.cjs/types/vue/composables/index.d.ts +1 -0
  47. package/dist/lib.cjs/types/vue/composables/useWallets.d.ts +9 -0
  48. package/dist/lib.cjs/vue/composables/useWallets.js +52 -0
  49. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +2 -2
  50. package/dist/lib.cjs/vue/index.js +2 -0
  51. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +2 -2
  52. package/dist/lib.cjs/vue/solana/provider.js +3 -0
  53. package/dist/lib.cjs/vue/useWeb3AuthInnerContextValue.js +13 -4
  54. package/dist/lib.cjs/vue/wagmi/provider.js +19 -7
  55. package/dist/lib.esm/account-linking/index.js +1 -0
  56. package/dist/lib.esm/account-linking/react.js +74 -0
  57. package/dist/lib.esm/account-linking/rest.js +51 -0
  58. package/dist/lib.esm/account-linking/vue.js +78 -0
  59. package/dist/lib.esm/base/analytics.js +17 -2
  60. package/dist/lib.esm/base/connector/constants.js +2 -0
  61. package/dist/lib.esm/base/errors/index.js +48 -1
  62. package/dist/lib.esm/base/utils.js +16 -4
  63. package/dist/lib.esm/connectors/auth-connector/authConnector.js +386 -9
  64. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +43 -24
  65. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +43 -26
  66. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +2 -2
  67. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +2 -2
  68. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +3 -3
  69. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +80 -49
  70. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +2 -2
  71. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +43 -15
  72. package/dist/lib.esm/connectors/wallet-connect-v2-connector/wcSolanaWallet.js +1 -1
  73. package/dist/lib.esm/index.js +4 -3
  74. package/dist/lib.esm/noModal.js +828 -119
  75. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +3 -3
  76. package/dist/lib.esm/providers/base-provider/baseProvider.js +68 -38
  77. package/dist/lib.esm/react/context/useWeb3AuthInnerContextValue.js +36 -21
  78. package/dist/lib.esm/react/hooks/useWallets.js +33 -0
  79. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +2 -2
  80. package/dist/lib.esm/react/index.js +1 -0
  81. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +2 -2
  82. package/dist/lib.esm/react/solana/provider.js +4 -1
  83. package/dist/lib.esm/react/wagmi/provider.js +1 -1
  84. package/dist/lib.esm/vue/composables/useCheckout.js +1 -1
  85. package/dist/lib.esm/vue/composables/useFunding.js +1 -1
  86. package/dist/lib.esm/vue/composables/useReceive.js +1 -1
  87. package/dist/lib.esm/vue/composables/useSwap.js +1 -1
  88. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -1
  89. package/dist/lib.esm/vue/composables/useWalletUI.js +1 -1
  90. package/dist/lib.esm/vue/composables/useWallets.js +35 -0
  91. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +2 -2
  92. package/dist/lib.esm/vue/index.js +1 -0
  93. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +1 -1
  94. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +1 -1
  95. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +1 -1
  96. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +2 -2
  97. package/dist/lib.esm/vue/solana/provider.js +4 -0
  98. package/dist/lib.esm/vue/useWeb3AuthInnerContextValue.js +12 -3
  99. package/dist/lib.esm/vue/wagmi/provider.js +20 -8
  100. package/package.json +43 -19
@@ -35,39 +35,58 @@ class BaseEvmConnector extends baseConnector.BaseConnector {
35
35
  if (accounts && accounts.length > 0) {
36
36
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
37
37
  if (cached) return cached;
38
- const chainId = await this.provider.request({
39
- method: "eth_chainId"
40
- });
41
- const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
42
- if (!currentChainConfig) throw index.WalletInitializationError.invalidParams("chainConfig is required before authentication");
38
+ const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
43
39
  const {
40
+ challenge,
41
+ signature,
44
42
  chainNamespace
45
- } = currentChainConfig;
46
- const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
47
- const payload = {
48
- domain: window.location.origin,
49
- uri: window.location.href,
50
- address: accounts[0],
51
- chainId: parseInt(chainId, 16),
52
- version: "1",
53
- nonce: siwe.generateSiweNonce(),
54
- issuedAt: new Date().toISOString()
55
- };
56
- const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
57
- const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
58
- const signedMessage = await this.provider.request({
59
- method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
60
- params: [hexChallenge, accounts[0]]
61
- });
43
+ } = await this.generateChallengeAndSign(authServer, accounts);
62
44
  return this.verifyAndAuthorize({
63
45
  chainNamespace,
64
- signedMessage,
46
+ signedMessage: signature,
65
47
  challenge,
66
48
  authServer
67
49
  });
68
50
  }
69
51
  throw index.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
70
52
  }
53
+ async generateChallengeAndSign(authServerUrl, accounts) {
54
+ const accountsToUse = accounts || (await this.provider.request({
55
+ method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
56
+ }));
57
+ if (!accountsToUse || accountsToUse.length === 0) {
58
+ throw index.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
59
+ }
60
+ const chainId = await this.provider.request({
61
+ method: "eth_chainId"
62
+ });
63
+ const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
64
+ if (!currentChainConfig) throw index.WalletInitializationError.invalidParams("chainConfig is required before authentication");
65
+ const {
66
+ chainNamespace
67
+ } = currentChainConfig;
68
+ const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
69
+ const payload = {
70
+ domain: window.location.origin,
71
+ uri: window.location.href,
72
+ address: accountsToUse[0],
73
+ chainId: parseInt(chainId, 16),
74
+ version: "1",
75
+ nonce: siwe.generateSiweNonce(),
76
+ issuedAt: new Date().toISOString()
77
+ };
78
+ const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
79
+ const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
80
+ const signature = await this.provider.request({
81
+ method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
82
+ params: [hexChallenge, accountsToUse[0]]
83
+ });
84
+ return {
85
+ challenge,
86
+ signature,
87
+ chainNamespace
88
+ };
89
+ }
71
90
  async disconnectSession() {
72
91
  super.checkDisconnectionRequirements();
73
92
  await this.clearWalletSession();
@@ -32,40 +32,57 @@ class BaseSolanaConnector extends baseConnector.BaseConnector {
32
32
  if (accounts.length > 0) {
33
33
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
34
34
  if (cached) return cached;
35
- const walletChains = new Set(this.solanaWallet.chains);
36
- const currentChainConfig = this.coreOptions.chains.find(c => {
37
- if (c.chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return false;
38
- const id = solana.getSolanaChainByChainConfig(c);
39
- return id != null && walletChains.has(id);
40
- });
41
- if (!currentChainConfig) {
42
- throw index.WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
43
- }
35
+ const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
44
36
  const {
45
- chainId,
37
+ challenge,
38
+ signature,
46
39
  chainNamespace
47
- } = currentChainConfig;
48
- const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
49
- const payload = {
50
- domain: window.location.origin,
51
- uri: window.location.href,
52
- address: accounts[0],
53
- chainId: parseInt(chainId, 16),
54
- version: "1",
55
- nonce: siwe.generateSiweNonce(),
56
- issuedAt: new Date().toISOString()
57
- };
58
- const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
59
- const signedMessage = await solana.walletSignMessage(this.solanaWallet, challenge, accounts[0]);
40
+ } = await this.generateChallengeAndSign(authServer);
60
41
  return this.verifyAndAuthorize({
61
42
  chainNamespace,
62
- signedMessage,
43
+ signedMessage: signature,
63
44
  challenge,
64
45
  authServer
65
46
  });
66
47
  }
67
48
  throw index.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
68
49
  }
50
+ async generateChallengeAndSign(authServerUrl, accounts) {
51
+ const accountsToUse = accounts || this.solanaWallet.accounts.map(a => a.address);
52
+ if (!accountsToUse || accountsToUse.length === 0) {
53
+ throw index.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
54
+ }
55
+ const walletChains = new Set(this.solanaWallet.chains);
56
+ const currentChainConfig = this.coreOptions.chains.find(c => {
57
+ if (c.chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) return false;
58
+ const id = solana.getSolanaChainByChainConfig(c);
59
+ return id != null && walletChains.has(id);
60
+ });
61
+ if (!currentChainConfig) {
62
+ throw index.WalletInitializationError.invalidParams("No Solana chain in common between the connected wallet and Web3Auth chain configuration");
63
+ }
64
+ const {
65
+ chainId,
66
+ chainNamespace
67
+ } = currentChainConfig;
68
+ const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
69
+ const payload = {
70
+ domain: window.location.origin,
71
+ uri: window.location.href,
72
+ address: accountsToUse[0],
73
+ chainId: parseInt(chainId, 16),
74
+ version: "1",
75
+ nonce: siwe.generateSiweNonce(),
76
+ issuedAt: new Date().toISOString()
77
+ };
78
+ const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
79
+ const signedMessage = await solana.walletSignMessage(this.solanaWallet, challenge, accountsToUse[0]);
80
+ return {
81
+ challenge,
82
+ signature: signedMessage,
83
+ chainNamespace
84
+ };
85
+ }
69
86
  async disconnectSession() {
70
87
  super.checkDisconnectionRequirements();
71
88
  await this.clearWalletSession();
@@ -173,14 +173,16 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
173
173
  if (coreStatus === "connected") {
174
174
  this.status = constants.CONNECTOR_STATUS.CONNECTED;
175
175
  this.rehydrated = true;
176
- this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
177
- connectorName: index.WALLET_CONNECTORS.METAMASK,
178
- reconnected: this.rehydrated,
179
- ethereumProvider: this.evmProvider,
180
- solanaWallet: this.solanaProvider
181
- });
182
- if (options.getAuthTokenInfo) {
183
- await this.getAuthTokenInfo();
176
+ if (options.autoConnect) {
177
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
178
+ connectorName: index.WALLET_CONNECTORS.METAMASK,
179
+ reconnected: this.rehydrated,
180
+ ethereumProvider: this.evmProvider,
181
+ solanaWallet: this.solanaProvider
182
+ });
183
+ if (options.getAuthTokenInfo) {
184
+ await this.getAuthTokenInfo();
185
+ }
184
186
  }
185
187
  } else if (coreStatus === "loaded" || coreStatus === "disconnected") {
186
188
  this.status = constants.CONNECTOR_STATUS.READY;
@@ -202,13 +204,15 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
202
204
  }
203
205
  async connect({
204
206
  chainId,
205
- getAuthTokenInfo
207
+ getAuthTokenInfo,
208
+ caipAccountIds: caipAccountIdsFromParams
206
209
  }) {
207
210
  super.checkConnectionRequirements();
208
211
  await this.ensureInitialized();
209
212
  const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
210
213
  if (!chainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
211
214
  const scopes = this.coreOptions.chains.map(c => utils.getCaipChainId(c));
215
+ const caipAccountIds = caipAccountIdsFromParams || [];
212
216
  // Skip tracking for rehydration since only new connections are tracked
213
217
  const shouldTrack = !this.rehydrated;
214
218
  const startTime = Date.now();
@@ -234,7 +238,7 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
234
238
  });
235
239
  });
236
240
  // Connect using the multichain client
237
- await this.multichainClient.connect(scopes, [], {
241
+ await this.multichainClient.connect(scopes, caipAccountIds, {
238
242
  solana_accountChanged_notifications: true
239
243
  });
240
244
  // Solana wallet-standard: `standard:events` change is not emitted from multichain
@@ -319,7 +323,9 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
319
323
  this.status = constants.CONNECTOR_STATUS.READY;
320
324
  }
321
325
  this.rehydrated = false;
322
- this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED);
326
+ this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED, {
327
+ connector: index.WALLET_CONNECTORS.METAMASK
328
+ });
323
329
  }
324
330
  async getAuthTokenInfo() {
325
331
  var _this$evmProvider2, _this$coreOptions$cha;
@@ -329,10 +335,6 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
329
335
  const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
330
336
  const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
331
337
  if (!activeChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
332
- this.status = constants.CONNECTOR_STATUS.AUTHORIZING;
333
- this.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
334
- connector: index.WALLET_CONNECTORS.METAMASK
335
- });
336
338
  const {
337
339
  chainNamespace
338
340
  } = activeChainConfig;
@@ -342,37 +344,22 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
342
344
  if (accounts && accounts.length > 0) {
343
345
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
344
346
  if (cached) return cached;
345
- const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
346
- const payload = {
347
- domain: window.location.origin,
348
- uri: window.location.href,
349
- address: accounts[0],
350
- chainId: parseInt(activeChainConfig.chainId, 16),
351
- version: "1",
352
- nonce: siwe.generateSiweNonce(),
353
- issuedAt: new Date().toISOString()
354
- };
355
- const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
356
- let signedMessage;
357
- if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
358
- signedMessage = await solana.walletSignMessage(this.solanaProvider, challenge, accounts[0]);
359
- } else if (this.evmProvider) {
360
- const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
361
- signedMessage = await this.evmProvider.request({
362
- method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
363
- params: [hexChallenge, accounts[0]]
364
- });
365
- } else {
366
- throw index$1.WalletLoginError.notConnectedError("No provider available for signing");
367
- }
368
- return this.verifyAndAuthorize({
369
- chainNamespace,
370
- signedMessage,
371
- challenge,
372
- authServer
373
- });
374
347
  }
375
- throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
348
+ this.status = constants.CONNECTOR_STATUS.AUTHORIZING;
349
+ this.emit(constants.CONNECTOR_EVENTS.AUTHORIZING, {
350
+ connector: index.WALLET_CONNECTORS.METAMASK
351
+ });
352
+ const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
353
+ const {
354
+ challenge,
355
+ signature
356
+ } = await this.generateChallengeAndSign(authServer, accounts);
357
+ return this.verifyAndAuthorize({
358
+ chainNamespace,
359
+ signedMessage: signature,
360
+ challenge,
361
+ authServer
362
+ });
376
363
  }
377
364
  async getUserInfo() {
378
365
  if (!this.canAuthorize) throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
@@ -407,6 +394,50 @@ class MetaMaskConnector extends baseConnector.BaseConnector {
407
394
  chainConfiguration
408
395
  });
409
396
  }
397
+ async generateChallengeAndSign(authServerUrl, accounts) {
398
+ var _this$evmProvider3, _this$coreOptions$cha2;
399
+ const evmChainId = ((_this$evmProvider3 = this.evmProvider) === null || _this$evmProvider3 === void 0 ? void 0 : _this$evmProvider3.chainId) || ((_this$coreOptions$cha2 = this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
400
+ const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
401
+ const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
402
+ if (!activeChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
403
+ const {
404
+ chainNamespace
405
+ } = activeChainConfig;
406
+ const accountsToUse = accounts || (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
407
+ method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
408
+ }) : []);
409
+ if (!accountsToUse || accountsToUse.length === 0) {
410
+ throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
411
+ }
412
+ const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
413
+ const payload = {
414
+ domain: window.location.origin,
415
+ uri: window.location.href,
416
+ address: accountsToUse[0],
417
+ chainId: parseInt(activeChainConfig.chainId, 16),
418
+ version: "1",
419
+ nonce: siwe.generateSiweNonce(),
420
+ issuedAt: new Date().toISOString()
421
+ };
422
+ const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
423
+ let signedMessage;
424
+ if (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
425
+ signedMessage = await solana.walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
426
+ } else if (this.evmProvider) {
427
+ const hexChallenge = metadataHelpers.bytesToHexPrefixedString(metadataHelpers.utf8ToBytes(challenge));
428
+ signedMessage = await this.evmProvider.request({
429
+ method: wsEmbed.EVM_METHOD_TYPES.PERSONAL_SIGN,
430
+ params: [hexChallenge, accountsToUse[0]]
431
+ });
432
+ } else {
433
+ throw index$1.WalletLoginError.notConnectedError("No provider available for signing");
434
+ }
435
+ return {
436
+ challenge,
437
+ signature: signedMessage,
438
+ chainNamespace
439
+ };
440
+ }
410
441
  async enableMFA() {
411
442
  throw new Error("Method Not implemented");
412
443
  }
@@ -258,7 +258,9 @@ class WalletConnectV2Connector extends baseConnector.BaseConnector {
258
258
  this.status = constants.CONNECTOR_STATUS.READY;
259
259
  }
260
260
  this.activeSession = null;
261
- this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED);
261
+ this.emit(constants.CONNECTOR_EVENTS.DISCONNECTED, {
262
+ connector: index.WALLET_CONNECTORS.WALLET_CONNECT_V2
263
+ });
262
264
  }
263
265
  async getAuthTokenInfo() {
264
266
  if (!this.provider || !this.canAuthorize) throw index$1.WalletLoginError.notConnectedError();
@@ -280,27 +282,53 @@ class WalletConnectV2Connector extends baseConnector.BaseConnector {
280
282
  if (accounts && accounts.length > 0) {
281
283
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
282
284
  if (cached) return cached;
283
- const payload = {
284
- domain: window.location.origin,
285
- uri: window.location.href,
286
- address: accounts[0],
287
- chainId: parseInt(chainId, 16),
288
- version: "1",
289
- nonce: siwe.generateSiweNonce(),
290
- issuedAt: new Date().toISOString()
291
- };
292
285
  const authServer = utils.citadelServerUrl(this.coreOptions.authBuildEnv);
293
- const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
294
- const signedMessage = await this._getSignedMessage(challenge, accounts, chainNamespace);
286
+ const {
287
+ challenge,
288
+ signature
289
+ } = await this.generateChallengeAndSign(authServer, accounts);
295
290
  return this.verifyAndAuthorize({
296
291
  chainNamespace,
297
- signedMessage: signedMessage,
292
+ signedMessage: signature,
298
293
  challenge,
299
294
  authServer
300
295
  });
301
296
  }
302
297
  throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
303
298
  }
299
+ async generateChallengeAndSign(authServerUrl, accounts) {
300
+ const {
301
+ chainId
302
+ } = this.provider;
303
+ const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
304
+ if (!currentChainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
305
+ const {
306
+ chainNamespace
307
+ } = currentChainConfig;
308
+ const accountsToUse = accounts || (chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA && this._solanaWallet ? this._solanaWallet.accounts.map(a => a.address) : await this.provider.request({
309
+ method: wsEmbed.EVM_METHOD_TYPES.GET_ACCOUNTS
310
+ }));
311
+ if (!accountsToUse || accountsToUse.length === 0) {
312
+ throw index$1.WalletLoginError.notConnectedError("No accounts found in the connected wallet");
313
+ }
314
+ const payload = {
315
+ domain: window.location.origin,
316
+ uri: window.location.href,
317
+ address: accountsToUse[0],
318
+ chainId: parseInt(chainId, 16),
319
+ version: "1",
320
+ nonce: siwe.generateSiweNonce(),
321
+ issuedAt: new Date().toISOString()
322
+ };
323
+ const authServer = authServerUrl || utils.citadelServerUrl(this.coreOptions.authBuildEnv);
324
+ const challenge = await baseControllers.signChallenge(payload, chainNamespace, authServer);
325
+ const signature = await this._getSignedMessage(challenge, accountsToUse, chainNamespace);
326
+ return {
327
+ challenge,
328
+ signature,
329
+ chainNamespace
330
+ };
331
+ }
304
332
  async enableMFA() {
305
333
  throw new Error("Method Not implemented");
306
334
  }
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var rest = require('./account-linking/rest.js');
3
4
  var analytics = require('./base/analytics.js');
4
5
  var IChainInterface = require('./base/chain/IChainInterface.js');
5
6
  var index$2 = require('./base/composables/index.js');
@@ -10,13 +11,13 @@ var auth = require('@web3auth/auth');
10
11
  var utils$1 = require('./base/connector/utils.js');
11
12
  var constants$1 = require('./base/constants.js');
12
13
  var cookie = require('./base/cookie.js');
13
- var index$1 = require('./base/errors/index.js');
14
+ var index = require('./base/errors/index.js');
14
15
  var loglevel = require('./base/loglevel.js');
15
16
  var errors = require('./base/plugin/errors.js');
16
17
  var IPlugin = require('./base/plugin/IPlugin.js');
17
18
  var IProvider = require('./base/provider/IProvider.js');
18
19
  var utils$2 = require('./base/utils.js');
19
- var index = require('./base/wallet/index.js');
20
+ var index$1 = require('./base/wallet/index.js');
20
21
  var authConnector = require('./connectors/auth-connector/authConnector.js');
21
22
  var baseEvmConnector = require('./connectors/base-evm-connector/baseEvmConnector.js');
22
23
  var baseSolanaConnector = require('./connectors/base-solana-connector/baseSolanaConnector.js');
@@ -46,6 +47,8 @@ var walletStandardConnector = require('./connectors/injected-solana-connector/wa
46
47
 
47
48
 
48
49
 
50
+ exports.makeAccountLinkingRequest = rest.makeAccountLinkingRequest;
51
+ exports.makeAccountUnlinkingRequest = rest.makeAccountUnlinkingRequest;
49
52
  exports.ANALYTICS_EVENTS = analytics.ANALYTICS_EVENTS;
50
53
  exports.ANALYTICS_INTEGRATION_TYPE = analytics.ANALYTICS_INTEGRATION_TYPE;
51
54
  exports.ANALYTICS_SDK_TYPE = analytics.ANALYTICS_SDK_TYPE;
@@ -95,11 +98,12 @@ exports.WALLET_REGISTRY_URL = constants$1.WALLET_REGISTRY_URL;
95
98
  exports.WEB3AUTH_STATE_STORAGE_KEY = constants$1.WEB3AUTH_STATE_STORAGE_KEY;
96
99
  exports.WIDGET_TYPE = constants$1.WIDGET_TYPE;
97
100
  exports.cookieToWeb3AuthState = cookie.cookieToWeb3AuthState;
98
- exports.WalletInitializationError = index$1.WalletInitializationError;
99
- exports.WalletLoginError = index$1.WalletLoginError;
100
- exports.WalletOperationsError = index$1.WalletOperationsError;
101
- exports.WalletProviderError = index$1.WalletProviderError;
102
- exports.Web3AuthError = index$1.Web3AuthError;
101
+ exports.AccountLinkingError = index.AccountLinkingError;
102
+ exports.WalletInitializationError = index.WalletInitializationError;
103
+ exports.WalletLoginError = index.WalletLoginError;
104
+ exports.WalletOperationsError = index.WalletOperationsError;
105
+ exports.WalletProviderError = index.WalletProviderError;
106
+ exports.Web3AuthError = index.Web3AuthError;
103
107
  exports.log = loglevel.log;
104
108
  exports.WalletServicesPluginError = errors.WalletServicesPluginError;
105
109
  exports.EVM_PLUGINS = IPlugin.EVM_PLUGINS;
@@ -124,15 +128,18 @@ exports.getWhitelabelAnalyticsProperties = utils$2.getWhitelabelAnalyticsPropert
124
128
  exports.isBrowser = utils$2.isBrowser;
125
129
  exports.isHexStrict = utils$2.isHexStrict;
126
130
  exports.normalizeWalletName = utils$2.normalizeWalletName;
131
+ exports.parseChainNamespaceFromCitadelResponse = utils$2.parseChainNamespaceFromCitadelResponse;
127
132
  exports.sdkVersion = utils$2.sdkVersion;
128
133
  exports.withAbort = utils$2.withAbort;
129
- exports.CONNECTOR_NAMES = index.CONNECTOR_NAMES;
130
- exports.EVM_CONNECTORS = index.EVM_CONNECTORS;
131
- exports.MULTI_CHAIN_CONNECTORS = index.MULTI_CHAIN_CONNECTORS;
132
- exports.SOLANA_CONNECTORS = index.SOLANA_CONNECTORS;
133
- exports.WALLET_CONNECTORS = index.WALLET_CONNECTORS;
134
- exports.WEB3AUTH_ICON = index.WEB3AUTH_ICON;
134
+ exports.CONNECTOR_NAMES = index$1.CONNECTOR_NAMES;
135
+ exports.EVM_CONNECTORS = index$1.EVM_CONNECTORS;
136
+ exports.MULTI_CHAIN_CONNECTORS = index$1.MULTI_CHAIN_CONNECTORS;
137
+ exports.SOLANA_CONNECTORS = index$1.SOLANA_CONNECTORS;
138
+ exports.WALLET_CONNECTORS = index$1.WALLET_CONNECTORS;
139
+ exports.WEB3AUTH_ICON = index$1.WEB3AUTH_ICON;
140
+ exports.assertAuthConnector = authConnector.assertAuthConnector;
135
141
  exports.authConnector = authConnector.authConnector;
142
+ exports.isAuthConnector = authConnector.isAuthConnector;
136
143
  exports.BaseEvmConnector = baseEvmConnector.BaseEvmConnector;
137
144
  exports.BaseSolanaConnector = baseSolanaConnector.BaseSolanaConnector;
138
145
  exports.injectedEvmConnector = injectedEvmConnector.injectedEvmConnector;