@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
@@ -1,12 +1,12 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { StandardConnect, StandardDisconnect } from '@wallet-standard/features';
3
- import { BaseSolanaConnector } from '../base-solana-connector/baseSolanaConnector.js';
4
3
  import { normalizeWalletName } from '../../base/utils.js';
4
+ import { BaseSolanaConnector } from '../base-solana-connector/baseSolanaConnector.js';
5
5
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
6
- import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
7
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
8
6
  import { log } from '../../base/loglevel.js';
9
7
  import { WalletLoginError } from '../../base/errors/index.js';
8
+ import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
9
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
10
10
  import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
11
11
 
12
12
  class WalletStandardConnector extends BaseSolanaConnector {
@@ -9,14 +9,14 @@ import { StandardConnect } from '@wallet-standard/features';
9
9
  import { EVM_METHOD_TYPES } from '@web3auth/ws-embed';
10
10
  import { generateSiweNonce } from 'viem/siwe';
11
11
  import { getSiteName } from '../utils.js';
12
- import { ANALYTICS_EVENTS } from '../../base/analytics.js';
13
- import { BaseConnector } from '../../base/connector/baseConnector.js';
14
12
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
15
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
16
13
  import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
17
14
  import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
18
- import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
19
15
  import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
16
+ import { ANALYTICS_EVENTS } from '../../base/analytics.js';
17
+ import { BaseConnector } from '../../base/connector/baseConnector.js';
18
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
19
+ import { getSolanaChainByChainConfig, walletSignMessage } from '../../base/wallet/solana.js';
20
20
 
21
21
  /**
22
22
  * Configuration options for the MetaMask connector using \@metamask/connect-evm
@@ -175,14 +175,16 @@ class MetaMaskConnector extends BaseConnector {
175
175
  if (coreStatus === "connected") {
176
176
  this.status = CONNECTOR_STATUS.CONNECTED;
177
177
  this.rehydrated = true;
178
- this.emit(CONNECTOR_EVENTS.CONNECTED, {
179
- connectorName: WALLET_CONNECTORS.METAMASK,
180
- reconnected: this.rehydrated,
181
- ethereumProvider: this.evmProvider,
182
- solanaWallet: this.solanaProvider
183
- });
184
- if (options.getAuthTokenInfo) {
185
- await this.getAuthTokenInfo();
178
+ if (options.autoConnect) {
179
+ this.emit(CONNECTOR_EVENTS.CONNECTED, {
180
+ connectorName: WALLET_CONNECTORS.METAMASK,
181
+ reconnected: this.rehydrated,
182
+ ethereumProvider: this.evmProvider,
183
+ solanaWallet: this.solanaProvider
184
+ });
185
+ if (options.getAuthTokenInfo) {
186
+ await this.getAuthTokenInfo();
187
+ }
186
188
  }
187
189
  } else if (coreStatus === "loaded" || coreStatus === "disconnected") {
188
190
  this.status = CONNECTOR_STATUS.READY;
@@ -204,13 +206,15 @@ class MetaMaskConnector extends BaseConnector {
204
206
  }
205
207
  async connect({
206
208
  chainId,
207
- getAuthTokenInfo
209
+ getAuthTokenInfo,
210
+ caipAccountIds: caipAccountIdsFromParams
208
211
  }) {
209
212
  super.checkConnectionRequirements();
210
213
  await this.ensureInitialized();
211
214
  const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
212
215
  if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
213
216
  const scopes = this.coreOptions.chains.map(c => getCaipChainId(c));
217
+ const caipAccountIds = caipAccountIdsFromParams || [];
214
218
 
215
219
  // Skip tracking for rehydration since only new connections are tracked
216
220
  const shouldTrack = !this.rehydrated;
@@ -238,7 +242,7 @@ class MetaMaskConnector extends BaseConnector {
238
242
  });
239
243
 
240
244
  // Connect using the multichain client
241
- await this.multichainClient.connect(scopes, [], {
245
+ await this.multichainClient.connect(scopes, caipAccountIds, {
242
246
  solana_accountChanged_notifications: true
243
247
  });
244
248
 
@@ -330,7 +334,9 @@ class MetaMaskConnector extends BaseConnector {
330
334
  this.status = CONNECTOR_STATUS.READY;
331
335
  }
332
336
  this.rehydrated = false;
333
- this.emit(CONNECTOR_EVENTS.DISCONNECTED);
337
+ this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
338
+ connector: WALLET_CONNECTORS.METAMASK
339
+ });
334
340
  }
335
341
  async getAuthTokenInfo() {
336
342
  var _this$evmProvider2, _this$coreOptions$cha;
@@ -341,10 +347,6 @@ class MetaMaskConnector extends BaseConnector {
341
347
  const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
342
348
  const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
343
349
  if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
344
- this.status = CONNECTOR_STATUS.AUTHORIZING;
345
- this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
346
- connector: WALLET_CONNECTORS.METAMASK
347
- });
348
350
  const {
349
351
  chainNamespace
350
352
  } = activeChainConfig;
@@ -354,37 +356,22 @@ class MetaMaskConnector extends BaseConnector {
354
356
  if (accounts && accounts.length > 0) {
355
357
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
356
358
  if (cached) return cached;
357
- const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
358
- const payload = {
359
- domain: window.location.origin,
360
- uri: window.location.href,
361
- address: accounts[0],
362
- chainId: parseInt(activeChainConfig.chainId, 16),
363
- version: "1",
364
- nonce: generateSiweNonce(),
365
- issuedAt: new Date().toISOString()
366
- };
367
- const challenge = await signChallenge(payload, chainNamespace, authServer);
368
- let signedMessage;
369
- if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
370
- signedMessage = await walletSignMessage(this.solanaProvider, challenge, accounts[0]);
371
- } else if (this.evmProvider) {
372
- const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
373
- signedMessage = await this.evmProvider.request({
374
- method: EVM_METHOD_TYPES.PERSONAL_SIGN,
375
- params: [hexChallenge, accounts[0]]
376
- });
377
- } else {
378
- throw WalletLoginError.notConnectedError("No provider available for signing");
379
- }
380
- return this.verifyAndAuthorize({
381
- chainNamespace,
382
- signedMessage,
383
- challenge,
384
- authServer
385
- });
386
359
  }
387
- throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
360
+ this.status = CONNECTOR_STATUS.AUTHORIZING;
361
+ this.emit(CONNECTOR_EVENTS.AUTHORIZING, {
362
+ connector: WALLET_CONNECTORS.METAMASK
363
+ });
364
+ const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
365
+ const {
366
+ challenge,
367
+ signature
368
+ } = await this.generateChallengeAndSign(authServer, accounts);
369
+ return this.verifyAndAuthorize({
370
+ chainNamespace,
371
+ signedMessage: signature,
372
+ challenge,
373
+ authServer
374
+ });
388
375
  }
389
376
  async getUserInfo() {
390
377
  if (!this.canAuthorize) throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
@@ -419,6 +406,50 @@ class MetaMaskConnector extends BaseConnector {
419
406
  chainConfiguration
420
407
  });
421
408
  }
409
+ async generateChallengeAndSign(authServerUrl, accounts) {
410
+ var _this$evmProvider3, _this$coreOptions$cha2;
411
+ 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 === CHAIN_NAMESPACES.EIP155)) === null || _this$coreOptions$cha2 === void 0 ? void 0 : _this$coreOptions$cha2.chainId);
412
+ const isSolanaOnly = !this.evmProvider && !!this.solanaProvider;
413
+ const activeChainConfig = isSolanaOnly ? this.coreOptions.chains.find(x => x.chainNamespace === CHAIN_NAMESPACES.SOLANA) : this.evmProvider ? this.coreOptions.chains.find(x => x.chainId === evmChainId) : undefined;
414
+ if (!activeChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
415
+ const {
416
+ chainNamespace
417
+ } = activeChainConfig;
418
+ const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider ? this.solanaProvider.accounts.map(a => a.address) : this.evmProvider ? await this.evmProvider.request({
419
+ method: EVM_METHOD_TYPES.GET_ACCOUNTS
420
+ }) : []);
421
+ if (!accountsToUse || accountsToUse.length === 0) {
422
+ throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
423
+ }
424
+ const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
425
+ const payload = {
426
+ domain: window.location.origin,
427
+ uri: window.location.href,
428
+ address: accountsToUse[0],
429
+ chainId: parseInt(activeChainConfig.chainId, 16),
430
+ version: "1",
431
+ nonce: generateSiweNonce(),
432
+ issuedAt: new Date().toISOString()
433
+ };
434
+ const challenge = await signChallenge(payload, chainNamespace, authServer);
435
+ let signedMessage;
436
+ if (chainNamespace === CHAIN_NAMESPACES.SOLANA && this.solanaProvider) {
437
+ signedMessage = await walletSignMessage(this.solanaProvider, challenge, accountsToUse[0]);
438
+ } else if (this.evmProvider) {
439
+ const hexChallenge = bytesToHexPrefixedString(utf8ToBytes(challenge));
440
+ signedMessage = await this.evmProvider.request({
441
+ method: EVM_METHOD_TYPES.PERSONAL_SIGN,
442
+ params: [hexChallenge, accountsToUse[0]]
443
+ });
444
+ } else {
445
+ throw WalletLoginError.notConnectedError("No provider available for signing");
446
+ }
447
+ return {
448
+ challenge,
449
+ signature: signedMessage,
450
+ chainNamespace
451
+ };
452
+ }
422
453
  async enableMFA() {
423
454
  throw new Error("Method Not implemented");
424
455
  }
@@ -5,10 +5,10 @@ import { providerErrors, JRPCEngineV2, providerFromEngineV2 } from '@web3auth/au
5
5
  import { formatChainId } from './utils.js';
6
6
  import { switchChain, addChain, getAccounts, getEthProviderHandlers } from './walletConnectV2Utils.js';
7
7
  import { BaseProvider } from '../../providers/base-provider/baseProvider.js';
8
- import { createEthMiddleware, createEthChainSwitchMiddleware } from '../../providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
9
- import { createEthJsonRpcClient } from '../../providers/ethereum-provider/rpc/jrpcClient.js';
10
8
  import { WalletLoginError } from '../../base/errors/index.js';
11
9
  import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
10
+ import { createEthMiddleware, createEthChainSwitchMiddleware } from '../../providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
11
+ import { createEthJsonRpcClient } from '../../providers/ethereum-provider/rpc/jrpcClient.js';
12
12
  import { log } from '../../base/loglevel.js';
13
13
 
14
14
  var _WalletConnectV2Provider;
@@ -9,15 +9,15 @@ import { generateSiweNonce } from 'viem/siwe';
9
9
  import { getWalletConnectV2Settings } from './config.js';
10
10
  import { WalletConnectV2Provider } from './WalletConnectV2Provider.js';
11
11
  import { WCSolanaWallet } from './wcSolanaWallet.js';
12
- import { BaseConnector } from '../../base/connector/baseConnector.js';
13
12
  import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
14
13
  import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
15
- import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
16
14
  import { WalletInitializationError, WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
17
15
  import { log } from '../../base/loglevel.js';
18
16
  import { getCaipChainId, citadelServerUrl } from '../../base/utils.js';
19
17
  import { ANALYTICS_EVENTS } from '../../base/analytics.js';
20
18
  import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
19
+ import { BaseConnector } from '../../base/connector/baseConnector.js';
20
+ import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
21
21
  import { walletSignMessage } from '../../base/wallet/solana.js';
22
22
 
23
23
  class WalletConnectV2Connector extends BaseConnector {
@@ -254,7 +254,9 @@ class WalletConnectV2Connector extends BaseConnector {
254
254
  this.status = CONNECTOR_STATUS.READY;
255
255
  }
256
256
  this.activeSession = null;
257
- this.emit(CONNECTOR_EVENTS.DISCONNECTED);
257
+ this.emit(CONNECTOR_EVENTS.DISCONNECTED, {
258
+ connector: WALLET_CONNECTORS.WALLET_CONNECT_V2
259
+ });
258
260
  }
259
261
  async getAuthTokenInfo() {
260
262
  if (!this.provider || !this.canAuthorize) throw WalletLoginError.notConnectedError();
@@ -276,27 +278,53 @@ class WalletConnectV2Connector extends BaseConnector {
276
278
  if (accounts && accounts.length > 0) {
277
279
  const cached = await this.getCachedOrNullAuthTokenInfo(accounts[0]);
278
280
  if (cached) return cached;
279
- const payload = {
280
- domain: window.location.origin,
281
- uri: window.location.href,
282
- address: accounts[0],
283
- chainId: parseInt(chainId, 16),
284
- version: "1",
285
- nonce: generateSiweNonce(),
286
- issuedAt: new Date().toISOString()
287
- };
288
281
  const authServer = citadelServerUrl(this.coreOptions.authBuildEnv);
289
- const challenge = await signChallenge(payload, chainNamespace, authServer);
290
- const signedMessage = await this._getSignedMessage(challenge, accounts, chainNamespace);
282
+ const {
283
+ challenge,
284
+ signature
285
+ } = await this.generateChallengeAndSign(authServer, accounts);
291
286
  return this.verifyAndAuthorize({
292
287
  chainNamespace,
293
- signedMessage: signedMessage,
288
+ signedMessage: signature,
294
289
  challenge,
295
290
  authServer
296
291
  });
297
292
  }
298
293
  throw WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
299
294
  }
295
+ async generateChallengeAndSign(authServerUrl, accounts) {
296
+ const {
297
+ chainId
298
+ } = this.provider;
299
+ const currentChainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
300
+ if (!currentChainConfig) throw WalletLoginError.connectionError("Chain config is not available");
301
+ const {
302
+ chainNamespace
303
+ } = currentChainConfig;
304
+ const accountsToUse = accounts || (chainNamespace === CHAIN_NAMESPACES.SOLANA && this._solanaWallet ? this._solanaWallet.accounts.map(a => a.address) : await this.provider.request({
305
+ method: EVM_METHOD_TYPES.GET_ACCOUNTS
306
+ }));
307
+ if (!accountsToUse || accountsToUse.length === 0) {
308
+ throw WalletLoginError.notConnectedError("No accounts found in the connected wallet");
309
+ }
310
+ const payload = {
311
+ domain: window.location.origin,
312
+ uri: window.location.href,
313
+ address: accountsToUse[0],
314
+ chainId: parseInt(chainId, 16),
315
+ version: "1",
316
+ nonce: generateSiweNonce(),
317
+ issuedAt: new Date().toISOString()
318
+ };
319
+ const authServer = authServerUrl || citadelServerUrl(this.coreOptions.authBuildEnv);
320
+ const challenge = await signChallenge(payload, chainNamespace, authServer);
321
+ const signature = await this._getSignedMessage(challenge, accountsToUse, chainNamespace);
322
+ return {
323
+ challenge,
324
+ signature,
325
+ chainNamespace
326
+ };
327
+ }
300
328
  async enableMFA() {
301
329
  throw new Error("Method Not implemented");
302
330
  }
@@ -6,8 +6,8 @@ import { StandardEvents, StandardDisconnect, StandardConnect } from '@wallet-sta
6
6
  import { SOLANA_METHOD_TYPES } from '@web3auth/ws-embed';
7
7
  import { sendJrpcRequest, getSolanaAccounts } from './walletConnectV2Utils.js';
8
8
  import { WEB3AUTH_ICON } from '../../base/wallet/index.js';
9
- import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
10
9
  import { SOLANA_CAIP_CHAIN_MAP } from '../../base/constants.js';
10
+ import { getSolanaChainByChainConfig } from '../../base/wallet/solana.js';
11
11
 
12
12
  const base58Encoder = getBase58Encoder();
13
13
  const base58Decoder = getBase58Decoder();
@@ -1,6 +1,7 @@
1
1
  export { Web3AuthNoModal } from './noModal.js';
2
2
  export { ANALYTICS_EVENTS, ANALYTICS_INTEGRATION_TYPE, ANALYTICS_SDK_TYPE, Analytics } from './base/analytics.js';
3
3
  export { AUTH_CONNECTION, MFA_FACTOR, MFA_LEVELS, UX_MODE, WEB3AUTH_NETWORK, getED25519Key } from '@web3auth/auth';
4
+ export { AccountLinkingError, WalletInitializationError, WalletLoginError, WalletOperationsError, WalletProviderError, Web3AuthError } from './base/errors/index.js';
4
5
  export { BUTTON_POSITION, CONFIRMATION_STRATEGY } from '@web3auth/ws-embed';
5
6
  export { BaseConnector } from './base/connector/baseConnector.js';
6
7
  export { BaseEvmConnector } from './connectors/base-evm-connector/baseEvmConnector.js';
@@ -20,13 +21,12 @@ export { EIP_7702_SUPPORTED_SMART_ACCOUNTS, LOGIN_MODE, MODAL_SIGN_IN_METHODS, S
20
21
  export { EVM_PLUGINS, PLUGIN_EVENTS, PLUGIN_NAMESPACES, PLUGIN_STATUS, SOLANA_PLUGINS, WALLET_PLUGINS } from './base/plugin/IPlugin.js';
21
22
  export { PROVIDER_EVENTS } from './base/provider/IProvider.js';
22
23
  export { WalletConnectV2Provider } from './connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js';
23
- export { WalletInitializationError, WalletLoginError, WalletOperationsError, WalletProviderError, Web3AuthError } from './base/errors/index.js';
24
24
  export { WalletServicesPluginError } from './base/plugin/errors.js';
25
25
  export { Web3AuthContextKey } from './base/composables/index.js';
26
26
  export { accountAbstractionProvider, toEoaProvider } from './providers/account-abstraction-provider/providers/AccountAbstractionProvider.js';
27
- export { authConnector } from './connectors/auth-connector/authConnector.js';
27
+ export { assertAuthConnector, authConnector, isAuthConnector } from './connectors/auth-connector/authConnector.js';
28
28
  export { checkIfTokenIsExpired, storageAvailable } from './base/connector/utils.js';
29
- export { citadelServerUrl, dashboardPublicApiUrl, fetchProjectConfig, fetchWalletRegistry, fromViemChain, fromWagmiChain, getAaAnalyticsProperties, getCaipChainId, getErrorAnalyticsProperties, getHostname, getWalletServicesAnalyticsProperties, getWhitelabelAnalyticsProperties, isBrowser, isHexStrict, normalizeWalletName, sdkVersion, withAbort } from './base/utils.js';
29
+ export { citadelServerUrl, dashboardPublicApiUrl, fetchProjectConfig, fetchWalletRegistry, fromViemChain, fromWagmiChain, getAaAnalyticsProperties, getCaipChainId, getErrorAnalyticsProperties, getHostname, getWalletServicesAnalyticsProperties, getWhitelabelAnalyticsProperties, isBrowser, isHexStrict, normalizeWalletName, parseChainNamespaceFromCitadelResponse, sdkVersion, withAbort } from './base/utils.js';
30
30
  export { cookieToWeb3AuthState } from './base/cookie.js';
31
31
  export { createEthChainSwitchMiddleware, createEthMiddleware } from './providers/ethereum-provider/rpc/ethRpcMiddlewares.js';
32
32
  export { createEthJsonRpcClient } from './providers/ethereum-provider/rpc/jrpcClient.js';
@@ -37,6 +37,7 @@ export { getSolanaChainByChainConfig, walletSignAndSendTransaction, walletSignMe
37
37
  export { hasSolanaWalletStandardFeatures } from './connectors/injected-solana-connector/index.js';
38
38
  export { injectedEvmConnector } from './connectors/injected-evm-connector/injectedEvmConnector.js';
39
39
  export { log } from './base/loglevel.js';
40
+ export { makeAccountLinkingRequest, makeAccountUnlinkingRequest } from './account-linking/rest.js';
40
41
  export { metaMaskConnector } from './connectors/metamask-connector/metamaskConnector.js';
41
42
  export { walletConnectV2Connector } from './connectors/wallet-connect-v2-connector/walletConnectV2Connector.js';
42
43
  export { walletServicesPlugin } from './plugins/wallet-services-plugin/plugin.js';