@web3auth/no-modal 10.0.0-beta.6 → 10.0.0-beta.7

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 (123) hide show
  1. package/dist/lib.cjs/base/connector/baseConnector.js +2 -1
  2. package/dist/lib.cjs/base/errors/index.js +1 -20
  3. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +25 -4
  4. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +23 -6
  5. package/dist/lib.cjs/connectors/utils.js +10 -0
  6. package/dist/lib.cjs/index.js +0 -5
  7. package/dist/lib.cjs/noModal.js +12 -7
  8. package/dist/lib.cjs/providers/ethereum-mpc-provider/index.js +7 -0
  9. package/dist/lib.cjs/providers/xrpl-provider/index.js +9 -0
  10. package/dist/lib.cjs/react/hooks/useWeb3AuthConnect.js +5 -1
  11. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +11 -5
  12. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +3 -0
  13. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +7 -4
  14. package/dist/lib.cjs/types/base/errors/index.d.ts +0 -1
  15. package/dist/lib.cjs/types/base/plugin/IPlugin.d.ts +1 -1
  16. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +2 -5
  17. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +2 -2
  18. package/dist/lib.cjs/types/connectors/utils.d.ts +8 -0
  19. package/dist/lib.cjs/types/noModal.d.ts +2 -1
  20. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +1 -1
  21. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.d.ts +1 -1
  22. package/dist/lib.cjs/types/providers/index.d.ts +0 -1
  23. package/dist/lib.cjs/types/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.d.ts +1 -1
  24. package/dist/lib.cjs/types/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.d.ts +1 -1
  25. package/dist/lib.cjs/types/react/interfaces.d.ts +1 -1
  26. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +2 -0
  27. package/dist/lib.cjs/types/react/wagmi/interface.d.ts +1 -1
  28. package/dist/lib.cjs/types/vue/interfaces.d.ts +1 -1
  29. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +4 -0
  30. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +10 -0
  31. package/dist/lib.cjs/types/vue/solana/composables/useSignMessage.d.ts +9 -0
  32. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +10 -0
  33. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +9 -0
  34. package/dist/lib.cjs/types/vue/solana/index.d.ts +1 -0
  35. package/dist/lib.cjs/types/vue/wagmi/index.d.ts +2 -0
  36. package/dist/lib.cjs/types/vue/wagmi/interface.d.ts +4 -0
  37. package/dist/lib.cjs/types/vue/wagmi/provider.d.ts +16 -0
  38. package/dist/lib.cjs/vue/composables/useWeb3AuthConnect.js +4 -0
  39. package/dist/lib.cjs/vue/solana/composables/useSignAndSendTransaction.js +36 -0
  40. package/dist/lib.cjs/vue/solana/composables/useSignMessage.js +38 -0
  41. package/dist/lib.cjs/vue/solana/composables/useSignTransaction.js +36 -0
  42. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +56 -0
  43. package/dist/lib.cjs/vue/solana/index.js +13 -0
  44. package/dist/lib.cjs/vue/wagmi/index.js +7 -0
  45. package/dist/lib.cjs/vue/wagmi/provider.js +227 -0
  46. package/dist/lib.esm/base/connector/baseConnector.js +6 -1
  47. package/dist/lib.esm/base/errors/index.js +12 -20
  48. package/dist/lib.esm/base/plugin/errors.js +2 -0
  49. package/dist/lib.esm/base/utils.js +5 -5
  50. package/dist/lib.esm/connectors/auth-connector/authConnector.js +45 -14
  51. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +1 -8
  52. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +1 -8
  53. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +4 -11
  54. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +4 -9
  55. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +6 -13
  56. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +32 -18
  57. package/dist/lib.esm/connectors/utils.js +14 -1
  58. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +8 -25
  59. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +14 -24
  60. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +9 -13
  61. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -11
  62. package/dist/lib.esm/index.js +6 -8
  63. package/dist/lib.esm/noModal.js +36 -17
  64. package/dist/lib.esm/plugins/nft-checkout-plugin/embed.js +4 -1
  65. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +3 -9
  66. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +6 -8
  67. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +6 -15
  68. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +0 -10
  69. package/dist/lib.esm/providers/account-abstraction-provider/rpc/ethRpcMiddlewares.js +2 -0
  70. package/dist/lib.esm/providers/base-provider/baseProvider.js +5 -9
  71. package/dist/lib.esm/providers/base-provider/utils.js +3 -3
  72. package/dist/lib.esm/providers/ethereum-mpc-provider/index.js +1 -0
  73. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +4 -17
  74. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +3 -13
  75. package/dist/lib.esm/providers/ethereum-mpc-provider/rpc/ethRpcMiddlewares.js +1 -0
  76. package/dist/lib.esm/providers/ethereum-provider/providers/converter.js +1 -0
  77. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +10 -11
  78. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/interfaces.js +3 -3
  79. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/utils.js +1 -0
  80. package/dist/lib.esm/providers/ethereum-provider/rpc/walletMidddleware.js +8 -0
  81. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +2 -15
  82. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +5 -12
  83. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
  84. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +3 -0
  85. package/dist/lib.esm/providers/xrpl-provider/index.js +2 -0
  86. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +3 -14
  87. package/dist/lib.esm/providers/xrpl-provider/rpc/xrplRpcMiddlewares.js +1 -0
  88. package/dist/lib.esm/react/context/WalletServicesInnerContext.js +1 -11
  89. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +1 -11
  90. package/dist/lib.esm/react/hooks/useCheckout.js +1 -12
  91. package/dist/lib.esm/react/hooks/useSwap.js +1 -12
  92. package/dist/lib.esm/react/hooks/useWalletConnectScanner.js +1 -12
  93. package/dist/lib.esm/react/hooks/useWalletUI.js +1 -12
  94. package/dist/lib.esm/react/hooks/useWeb3AuthConnect.js +5 -1
  95. package/dist/lib.esm/react/hooks/useWeb3AuthInner.js +1 -12
  96. package/dist/lib.esm/react/index.js +1 -1
  97. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +12 -25
  98. package/dist/lib.esm/react/wagmi/provider.js +5 -14
  99. package/dist/lib.esm/vue/WalletServicesInnerProvider.js +4 -12
  100. package/dist/lib.esm/vue/Web3AuthProvider.js +5 -13
  101. package/dist/lib.esm/vue/composables/useCheckout.js +1 -12
  102. package/dist/lib.esm/vue/composables/useEnableMFA.js +1 -12
  103. package/dist/lib.esm/vue/composables/useIdentityToken.js +1 -12
  104. package/dist/lib.esm/vue/composables/useManageMFA.js +1 -12
  105. package/dist/lib.esm/vue/composables/useSwap.js +1 -12
  106. package/dist/lib.esm/vue/composables/useSwitchChain.js +1 -12
  107. package/dist/lib.esm/vue/composables/useWalletConnectScanner.js +1 -12
  108. package/dist/lib.esm/vue/composables/useWalletUI.js +1 -12
  109. package/dist/lib.esm/vue/composables/useWeb3AuthConnect.js +5 -12
  110. package/dist/lib.esm/vue/composables/useWeb3AuthDisconnect.js +1 -12
  111. package/dist/lib.esm/vue/composables/useWeb3AuthInner.js +0 -11
  112. package/dist/lib.esm/vue/composables/useWeb3AuthUser.js +1 -12
  113. package/dist/lib.esm/vue/index.js +1 -1
  114. package/dist/lib.esm/vue/solana/composables/useSignAndSendTransaction.js +34 -0
  115. package/dist/lib.esm/vue/solana/composables/useSignMessage.js +36 -0
  116. package/dist/lib.esm/vue/solana/composables/useSignTransaction.js +34 -0
  117. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +42 -0
  118. package/dist/lib.esm/vue/solana/index.js +4 -0
  119. package/dist/lib.esm/vue/wagmi/index.js +1 -0
  120. package/dist/lib.esm/vue/wagmi/provider.js +217 -0
  121. package/dist/noModal.umd.min.js +1 -1
  122. package/dist/noModal.umd.min.js.LICENSE.txt +0 -24
  123. package/package.json +43 -4
@@ -22,8 +22,9 @@ class BaseConnector extends auth.SafeEventEmitter {
22
22
  return this.status === constants.CONNECTOR_STATUS.CONNECTED;
23
23
  }
24
24
  checkConnectionRequirements() {
25
- // we reconnect without killing existing wallet connect session on calling connect again.
25
+ // we reconnect without killing existing Wallet Connect or Metamask Connect session on calling connect again.
26
26
  if (this.name === index.WALLET_CONNECTORS.WALLET_CONNECT_V2 && this.status === constants.CONNECTOR_STATUS.CONNECTING) return;
27
+ if (this.name === index.WALLET_CONNECTORS.METAMASK && !this.isInjected && this.status === constants.CONNECTOR_STATUS.CONNECTING) return;
27
28
  if (this.status === constants.CONNECTOR_STATUS.CONNECTING) throw index$1.WalletInitializationError.notReady("Already connecting");
28
29
  if (this.status === constants.CONNECTOR_STATUS.CONNECTED) throw index$1.WalletLoginError.connectionError("Already connected");
29
30
  if (this.status !== constants.CONNECTOR_STATUS.READY) throw index$1.WalletLoginError.connectionError("Wallet connector is not ready yet, Please wait for init function to resolve before calling connect/connectTo function");
@@ -3,24 +3,6 @@
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var tsCustomError = require('ts-custom-error');
5
5
 
6
- function serializeError(args) {
7
- // Find first Error or create an "unknown" Error to keep stack trace.
8
- const index = args.findIndex(arg => arg instanceof Error);
9
- const msgIndex = args.findIndex(arg => typeof arg === "string");
10
- const apiErrorIdx = args.findIndex(arg => arg && typeof arg === "object" && "status" in arg && "type" in arg);
11
- let err;
12
- if (apiErrorIdx !== -1) {
13
- const apiError = args[apiErrorIdx];
14
- err = new Error(`${apiError.status} ${apiError.type.toString()} ${apiError.statusText}`);
15
- } else if (index !== -1) {
16
- err = args.splice(index, 1)[0];
17
- } else if (msgIndex !== -1) {
18
- err = new Error(args.splice(msgIndex, 1)[0]);
19
- } else {
20
- err = new Error("Unknown error");
21
- }
22
- return [err, args];
23
- }
24
6
  class Web3AuthError extends tsCustomError.CustomError {
25
7
  constructor(code, message, cause) {
26
8
  // takes care of stack and proto
@@ -41,7 +23,7 @@ class Web3AuthError extends tsCustomError.CustomError {
41
23
  name: this.name,
42
24
  code: this.code,
43
25
  message: this.message,
44
- cause: serializeError([this.cause])
26
+ cause: this.cause
45
27
  };
46
28
  }
47
29
  toString() {
@@ -231,4 +213,3 @@ exports.WalletLoginError = WalletLoginError;
231
213
  exports.WalletOperationsError = WalletOperationsError;
232
214
  exports.WalletProviderError = WalletProviderError;
233
215
  exports.Web3AuthError = Web3AuthError;
234
- exports.serializeError = serializeError;
@@ -17,6 +17,7 @@ require('../../base/plugin/IPlugin.js');
17
17
  require('@toruslabs/constants');
18
18
  require('@toruslabs/http-helpers');
19
19
  var index = require('../../base/wallet/index.js');
20
+ var utils = require('../utils.js');
20
21
 
21
22
  class AuthConnector extends baseConnector.BaseConnector {
22
23
  constructor(params) {
@@ -309,6 +310,9 @@ class AuthConnector extends baseConnector.BaseConnector {
309
310
  } = chainConfig;
310
311
  // if not logged in then login
311
312
  const keyAvailable = chainNamespace === baseControllers.CHAIN_NAMESPACES.EIP155 || chainNamespace === baseControllers.CHAIN_NAMESPACES.SOLANA ? (_this$authInstance = this.authInstance) === null || _this$authInstance === void 0 ? void 0 : _this$authInstance.sessionId : this._getFinalPrivKey();
313
+ if (params.id_token) params.extraLoginOptions = _objectSpread(_objectSpread({}, params.extraLoginOptions), {}, {
314
+ id_token: params.id_token
315
+ });
312
316
  if (!keyAvailable || (_params$extraLoginOpt = params.extraLoginOptions) !== null && _params$extraLoginOpt !== void 0 && _params$extraLoginOpt.id_token) {
313
317
  var _params$extraLoginOpt2;
314
318
  // always use "other" curve to return token with all keys encoded so wallet service can switch between evm and solana namespace
@@ -384,7 +388,7 @@ class AuthConnector extends baseConnector.BaseConnector {
384
388
  const popupParams = {
385
389
  authConnection: params.authConnection,
386
390
  authConnectionId: providerConfig.authConnectionId,
387
- clientId: providerConfig.clientId,
391
+ clientId: providerConfig.clientId || jwtParams.client_id,
388
392
  groupedAuthConnectionId: providerConfig.groupedAuthConnectionId,
389
393
  redirect_uri: `${this.authInstance.baseUrl}/auth`,
390
394
  jwtParams,
@@ -444,7 +448,7 @@ class AuthConnector extends baseConnector.BaseConnector {
444
448
  });
445
449
  }
446
450
  connectWithJwtLogin(params) {
447
- var _params$extraLoginOpt5;
451
+ var _params$extraLoginOpt5, _params$extraLoginOpt7;
448
452
  const loginConfig = this.getOAuthProviderConfig({
449
453
  authConnection: params.authConnection,
450
454
  authConnectionId: params.authConnectionId,
@@ -461,8 +465,25 @@ class AuthConnector extends baseConnector.BaseConnector {
461
465
  });
462
466
  }
463
467
  const loginParams = baseControllers.cloneDeep(params);
464
- loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, loginParams.extraLoginOptions || {}), {}, {
465
- login_hint: params.login_hint || ((_params$extraLoginOpt5 = params.extraLoginOptions) === null || _params$extraLoginOpt5 === void 0 ? void 0 : _params$extraLoginOpt5.login_hint)
468
+ const finalExtraLoginOptions = _objectSpread(_objectSpread({}, (loginConfig === null || loginConfig === void 0 ? void 0 : loginConfig.jwtParameters) || {}), params.extraLoginOptions || {});
469
+ let finalUserId;
470
+ if (params.login_hint || (_params$extraLoginOpt5 = params.extraLoginOptions) !== null && _params$extraLoginOpt5 !== void 0 && _params$extraLoginOpt5.login_hint) {
471
+ var _params$extraLoginOpt6;
472
+ finalUserId = params.login_hint || ((_params$extraLoginOpt6 = params.extraLoginOptions) === null || _params$extraLoginOpt6 === void 0 ? void 0 : _params$extraLoginOpt6.login_hint);
473
+ } else if ((_params$extraLoginOpt7 = params.extraLoginOptions) !== null && _params$extraLoginOpt7 !== void 0 && _params$extraLoginOpt7.id_token) {
474
+ if (typeof finalExtraLoginOptions.isUserIdCaseSensitive === "undefined") {
475
+ throw index$1.WalletInitializationError.invalidParams(`isUserIdCaseSensitive is required for this connection: ${finalExtraLoginOptions.authConnection}`);
476
+ }
477
+ const {
478
+ payload
479
+ } = utils.parseToken(params.extraLoginOptions.id_token);
480
+ finalUserId = auth.getUserId(payload, loginParams.authConnection, finalExtraLoginOptions.userIdField, finalExtraLoginOptions.isUserIdCaseSensitive);
481
+ } else {
482
+ throw index$1.WalletLoginError.connectionError("Invalid login hint or id_token");
483
+ }
484
+ // Adds the login_hint to the extraLoginOptions.
485
+ loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, finalExtraLoginOptions), {}, {
486
+ login_hint: finalUserId
466
487
  });
467
488
  delete loginParams.chainId;
468
489
  return this.authInstance.postLoginInitiatedMessage(loginParams);
@@ -53,11 +53,18 @@ class MetaMaskConnector extends baseEvmConnector.BaseEvmConnector {
53
53
  url: window.location.origin,
54
54
  iconUrl
55
55
  };
56
- // Initialize the MetaMask SDK
56
+ // initialize the MetaMask SDK
57
57
  const metamaskOptions = deepmerge(this.metamaskOptions || {}, {
58
58
  dappMetadata: appMetadata
59
59
  });
60
60
  this.metamaskSDK = new sdk.MetaMaskSDK(metamaskOptions);
61
+ // Work around: in case there is an existing SDK instance in memory (window.mmsdk exists), it won't initialize the new SDK instance again
62
+ // and return the existing instance instead of undefined (this is an assumption, not sure if it's a bug or feature of the MetaMask SDK)
63
+ const initResult = await this.metamaskSDK.init();
64
+ if (initResult) {
65
+ this.metamaskSDK = initResult;
66
+ }
67
+ this.isInjected = this.metamaskSDK.isExtensionActive();
61
68
  this.status = constants.CONNECTOR_STATUS.READY;
62
69
  this.emit(constants.CONNECTOR_EVENTS.READY, index.WALLET_CONNECTORS.METAMASK);
63
70
  try {
@@ -78,12 +85,22 @@ class MetaMaskConnector extends baseEvmConnector.BaseEvmConnector {
78
85
  if (!this.metamaskSDK) throw index$1.WalletLoginError.notConnectedError("Connector is not initialized");
79
86
  const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
80
87
  if (!chainConfig) throw index$1.WalletLoginError.connectionError("Chain config is not available");
81
- this.status = constants.CONNECTOR_STATUS.CONNECTING;
82
- this.emit(constants.CONNECTOR_EVENTS.CONNECTING, {
83
- connector: index.WALLET_CONNECTORS.METAMASK
84
- });
85
88
  try {
86
- await this.metamaskSDK.connect();
89
+ if (this.status !== constants.CONNECTOR_STATUS.CONNECTING) {
90
+ this.status = constants.CONNECTOR_STATUS.CONNECTING;
91
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTING, {
92
+ connector: index.WALLET_CONNECTORS.METAMASK
93
+ });
94
+ if (!this.metamaskSDK.isExtensionActive() && this.metamaskOptions.headless) {
95
+ // when metamask is not injected and headless is true, broadcast the uri to the login modal
96
+ this.metamaskSDK.getProvider().on("display_uri", uri => {
97
+ this.updateConnectorData({
98
+ uri
99
+ });
100
+ });
101
+ }
102
+ await this.metamaskSDK.connect();
103
+ }
87
104
  this.metamaskProvider = this.metamaskSDK.getProvider();
88
105
  if (!this.metamaskProvider) throw index$1.WalletLoginError.notConnectedError("Failed to connect with provider");
89
106
  // switch chain if not connected to the right chain
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var auth = require('@web3auth/auth');
4
+
3
5
  /**
4
6
  * Extracts a name for the site from the DOM
5
7
  */
@@ -56,6 +58,14 @@ async function getSiteIcon(window) {
56
58
  }
57
59
  return null;
58
60
  }
61
+ function parseToken(token) {
62
+ const [header, payload] = token.split(".");
63
+ return {
64
+ header: JSON.parse(auth.safeatob(header)),
65
+ payload: JSON.parse(auth.safeatob(payload))
66
+ };
67
+ }
59
68
 
60
69
  exports.getSiteIcon = getSiteIcon;
61
70
  exports.getSiteName = getSiteName;
71
+ exports.parseToken = parseToken;
@@ -47,8 +47,6 @@ var walletStandardProvider = require('./providers/solana-provider/providers/inje
47
47
  var JrpcClient = require('./providers/solana-provider/rpc/JrpcClient.js');
48
48
  var solanaRpcMiddlewares = require('./providers/solana-provider/rpc/solanaRpcMiddlewares.js');
49
49
  var solanaWallet = require('./providers/solana-provider/solanaWallet.js');
50
- var xrplPrivateKeyProvider = require('./providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js');
51
- var xrplWalletUtils = require('./providers/xrpl-provider/providers/privateKeyProviders/xrplWalletUtils.js');
52
50
  var baseControllers = require('@toruslabs/base-controllers');
53
51
  var app = require('@wallet-standard/app');
54
52
  var walletStandardConnector = require('./connectors/injected-solana-connector/walletStandardConnector.js');
@@ -99,7 +97,6 @@ exports.WalletLoginError = index$1.WalletLoginError;
99
97
  exports.WalletOperationsError = index$1.WalletOperationsError;
100
98
  exports.WalletProviderError = index$1.WalletProviderError;
101
99
  exports.Web3AuthError = index$1.Web3AuthError;
102
- exports.serializeError = index$1.serializeError;
103
100
  exports.log = loglevel.log;
104
101
  exports.NFTCheckoutPluginError = errors.NFTCheckoutPluginError;
105
102
  exports.WalletServicesPluginError = errors.WalletServicesPluginError;
@@ -234,8 +231,6 @@ exports.createSolanaAccountMiddleware = solanaRpcMiddlewares.createSolanaAccount
234
231
  exports.createSolanaChainSwitchMiddleware = solanaRpcMiddlewares.createSolanaChainSwitchMiddleware;
235
232
  exports.createSolanaMiddleware = solanaRpcMiddlewares.createSolanaMiddleware;
236
233
  exports.SolanaWallet = solanaWallet.SolanaWallet;
237
- exports.XrplPrivateKeyProvider = xrplPrivateKeyProvider.XrplPrivateKeyProvider;
238
- exports.getProviderHandlers = xrplWalletUtils.getProviderHandlers;
239
234
  Object.defineProperty(exports, "CHAIN_NAMESPACES", {
240
235
  enumerable: true,
241
236
  get: function () { return baseControllers.CHAIN_NAMESPACES; }
@@ -5,7 +5,6 @@ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var auth = require('@web3auth/auth');
7
7
  var deepmerge = require('deepmerge');
8
- var authConnector = require('./connectors/auth-connector/authConnector.js');
9
8
  var IChainInterface = require('./base/chain/IChainInterface.js');
10
9
  var index = require('./base/errors/index.js');
11
10
  var index$1 = require('./base/wallet/index.js');
@@ -16,12 +15,13 @@ var loglevel = require('./base/loglevel.js');
16
15
  require('./base/plugin/errors.js');
17
16
  var IPlugin = require('./base/plugin/IPlugin.js');
18
17
  var utils = require('./base/utils.js');
18
+ var authConnector = require('./connectors/auth-connector/authConnector.js');
19
+ var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
20
+ var plugin = require('./plugins/wallet-services-plugin/plugin.js');
19
21
  var baseControllers = require('@toruslabs/base-controllers');
20
22
  require('./providers/base-provider/utils.js');
21
23
  var CommonJRPCProvider = require('./providers/base-provider/CommonJRPCProvider.js');
22
24
  require('./providers/base-provider/commonPrivateKeyProvider.js');
23
- var metamaskConnector = require('./connectors/metamask-connector/metamaskConnector.js');
24
- var plugin = require('./plugins/wallet-services-plugin/plugin.js');
25
25
 
26
26
  const _excluded = ["walletScope"];
27
27
  const CONNECTOR_CACHE_KEY = "Web3Auth-cachedConnector";
@@ -79,8 +79,9 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
79
79
  authBuildEnv: this.coreOptions.authBuildEnv
80
80
  });
81
81
  } catch (e) {
82
- loglevel.log.error("Failed to fetch project configurations", e);
83
- throw index.WalletInitializationError.notReady("failed to fetch project configurations", e);
82
+ const error = await auth.serializeError(e);
83
+ loglevel.log.error("Failed to fetch project configurations", error);
84
+ throw index.WalletInitializationError.notReady("failed to fetch project configurations", error);
84
85
  }
85
86
  // init config
86
87
  this.initAccountAbstractionConfig(projectConfig);
@@ -316,7 +317,8 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
316
317
  }
317
318
  }
318
319
  async loadConnectors({
319
- projectConfig
320
+ projectConfig,
321
+ modalMode
320
322
  }) {
321
323
  var _this$coreOptions$mul;
322
324
  // always add auth connector
@@ -361,7 +363,10 @@ class Web3AuthNoModal extends auth.SafeEventEmitter {
361
363
  }
362
364
  }
363
365
  // it's safe to add it here as if there is a MetaMask injected provider, this won't override it
364
- connectorFns.push(metamaskConnector.metaMaskConnector());
366
+ // only set headless to true if modal SDK is used, otherwise just use the modal from native Metamask SDK
367
+ connectorFns.push(metamaskConnector.metaMaskConnector(modalMode ? {
368
+ headless: true
369
+ } : undefined));
365
370
  // add WalletConnectV2 connector if external wallets are enabled
366
371
  if (isExternalWalletEnabled && (chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.SOLANA) || chainNamespaces.has(baseControllers.CHAIN_NAMESPACES.EIP155))) {
367
372
  const {
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var EthereumSigningProvider = require('./providers/signingProviders/EthereumSigningProvider.js');
4
+
5
+
6
+
7
+ exports.EthereumSigningProvider = EthereumSigningProvider.EthereumSigningProvider;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var xrplPrivateKeyProvider = require('./providers/privateKeyProviders/xrplPrivateKeyProvider.js');
4
+ var xrplWalletUtils = require('./providers/privateKeyProviders/xrplWalletUtils.js');
5
+
6
+
7
+
8
+ exports.XrplPrivateKeyProvider = xrplPrivateKeyProvider.XrplPrivateKeyProvider;
9
+ exports.getProviderHandlers = xrplWalletUtils.getProviderHandlers;
@@ -13,10 +13,14 @@ const useWeb3AuthConnect = () => {
13
13
  const [error, setError] = react.useState(null);
14
14
  const [connectorName, setConnectorName] = react.useState(null);
15
15
  react.useEffect(() => {
16
+ if (!web3Auth) return;
16
17
  if (!isConnected && connectorName) {
17
18
  setConnectorName(null);
18
19
  }
19
- }, [isConnected, connectorName]);
20
+ if (isConnected && !connectorName) {
21
+ setConnectorName(web3Auth.connectedConnectorName);
22
+ }
23
+ }, [isConnected, connectorName, web3Auth]);
20
24
  const connect = react.useCallback(async (connector, params) => {
21
25
  setLoading(true);
22
26
  setError(null);
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var web3_js = require('@solana/web3.js');
3
4
  var react = require('react');
4
5
  require('@solana/wallet-standard-features');
5
- require('@solana/web3.js');
6
6
  require('@toruslabs/bs58');
7
7
  require('@toruslabs/base-controllers');
8
8
  require('@babel/runtime/helpers/defineProperty');
@@ -26,26 +26,32 @@ var useWeb3Auth = require('../../hooks/useWeb3Auth.js');
26
26
 
27
27
  const useSolanaWallet = () => {
28
28
  const {
29
- provider
29
+ provider,
30
+ web3Auth
30
31
  } = useWeb3Auth.useWeb3Auth();
31
32
  const [accounts, setAccounts] = react.useState(null);
32
33
  const solanaWallet$1 = react.useMemo(() => {
33
34
  if (!provider) return null;
34
35
  return new solanaWallet.SolanaWallet(provider);
35
36
  }, [provider]);
37
+ const connection = react.useMemo(() => {
38
+ if (!web3Auth || !provider) return null;
39
+ return new web3_js.Connection(web3Auth.currentChain.rpcTarget);
40
+ }, [web3Auth, provider]);
36
41
  react.useEffect(() => {
37
- const fetchAccounts = async () => {
42
+ const init = async () => {
38
43
  if (!solanaWallet$1) return;
39
44
  const accounts = await solanaWallet$1.requestAccounts();
40
45
  if ((accounts === null || accounts === void 0 ? void 0 : accounts.length) > 0) {
41
46
  setAccounts(accounts);
42
47
  }
43
48
  };
44
- if (solanaWallet$1) fetchAccounts();
49
+ if (solanaWallet$1) init();
45
50
  }, [solanaWallet$1]);
46
51
  return {
47
52
  solanaWallet: solanaWallet$1,
48
- accounts
53
+ accounts,
54
+ connection
49
55
  };
50
56
  };
51
57
 
@@ -167,3 +167,6 @@ export type LoginMethodConfig = Partial<Record<AUTH_CONNECTION_TYPE, {
167
167
  export type WalletConnectV2Data = {
168
168
  uri: string;
169
169
  };
170
+ export type MetaMaskConnectorData = {
171
+ uri: string;
172
+ };
@@ -1,11 +1,14 @@
1
1
  import { type AccountAbstractionMultiChainConfig } from "@toruslabs/ethereum-controllers";
2
- import { type BUILD_ENV_TYPE, SafeEventEmitter, UX_MODE_TYPE, type WhiteLabelData } from "@web3auth/auth";
2
+ import { type BUILD_ENV_TYPE, type LoginParams, SafeEventEmitter, UX_MODE_TYPE, type WhiteLabelData } from "@web3auth/auth";
3
3
  import { type WsEmbedParams } from "@web3auth/ws-embed";
4
- import type { AuthLoginParams } from "../../connectors/auth-connector";
5
- import { ChainNamespaceType, type CustomChainConfig } from "../chain/IChainInterface";
4
+ import { type ChainNamespaceType, type CustomChainConfig } from "../chain/IChainInterface";
6
5
  import { CONNECTOR_EVENTS, type CONNECTOR_STATUS_TYPE, ConnectorEvents, type ConnectorFn, type IBaseProvider, type IConnector, type IProvider, type UserAuthInfo, type UserInfo, type WEB3AUTH_NETWORK_TYPE } from "../connector";
7
- import { type IPlugin, PluginFn } from "../plugin";
6
+ import { type IPlugin, type PluginFn } from "../plugin";
8
7
  import { type WALLET_CONNECTOR_TYPE, WALLET_CONNECTORS } from "../wallet";
8
+ export type AuthLoginParams = LoginParams & {
9
+ login_hint?: string;
10
+ id_token?: string;
11
+ };
9
12
  export type WalletServicesConfig = Omit<WsEmbedParams, "buildEnv" | "enableLogging" | "chainId" | "chains" | "confirmationStrategy" | "accountAbstractionConfig"> & {
10
13
  /**
11
14
  * Determines how to show confirmation screens
@@ -8,7 +8,6 @@ export interface IWeb3AuthError extends CustomError {
8
8
  export type ErrorCodes = {
9
9
  [key: number]: string;
10
10
  };
11
- export declare function serializeError(args: unknown[]): [Error, unknown[]];
12
11
  export declare abstract class Web3AuthError extends CustomError implements IWeb3AuthError {
13
12
  code: number;
14
13
  message: string;
@@ -1,6 +1,6 @@
1
1
  import { type SafeEventEmitter, WhiteLabelData } from "@web3auth/auth";
2
2
  import { type IWeb3AuthCore } from "../core/IWeb3Auth";
3
- import { WALLET_CONNECTOR_TYPE } from "../wallet";
3
+ import { type WALLET_CONNECTOR_TYPE } from "../wallet";
4
4
  export declare const PLUGIN_NAMESPACES: {
5
5
  readonly MULTICHAIN: "multichain";
6
6
  readonly EIP155: "eip155";
@@ -1,10 +1,7 @@
1
- import { Auth, type LoginParams } from "@web3auth/auth";
1
+ import { Auth } from "@web3auth/auth";
2
2
  import { type default as WsEmbed } from "@web3auth/ws-embed";
3
- import { BaseConnector, CONNECTOR_CATEGORY_TYPE, CONNECTOR_STATUS_TYPE, ConnectorFn, ConnectorInitOptions, ConnectorNamespaceType, IProvider, UserInfo, WALLET_CONNECTOR_TYPE } from "../../base";
3
+ import { AuthLoginParams, BaseConnector, CONNECTOR_CATEGORY_TYPE, CONNECTOR_STATUS_TYPE, ConnectorFn, ConnectorInitOptions, ConnectorNamespaceType, IProvider, UserInfo, WALLET_CONNECTOR_TYPE } from "../../base";
4
4
  import type { AuthConnectorOptions, PrivateKeyProvider } from "./interface";
5
- export type AuthLoginParams = LoginParams & {
6
- login_hint?: string;
7
- };
8
5
  declare class AuthConnector extends BaseConnector<AuthLoginParams> {
9
6
  readonly name: WALLET_CONNECTOR_TYPE;
10
7
  readonly connectorNamespace: ConnectorNamespaceType;
@@ -1,6 +1,6 @@
1
1
  import { type MetaMaskSDKOptions } from "@metamask/sdk";
2
2
  import { type BaseConnectorSettings, type ConnectorFn } from "../../base";
3
3
  export interface MetaMaskConnectorOptions extends BaseConnectorSettings {
4
- connectorSettings?: MetaMaskSDKOptions;
4
+ connectorSettings?: Partial<MetaMaskSDKOptions>;
5
5
  }
6
- export declare const metaMaskConnector: (params?: MetaMaskSDKOptions) => ConnectorFn;
6
+ export declare const metaMaskConnector: (params?: Partial<MetaMaskSDKOptions>) => ConnectorFn;
@@ -6,3 +6,11 @@ export declare const getSiteName: (window: Window) => string;
6
6
  * Extracts an icon for the site from the DOM
7
7
  */
8
8
  export declare function getSiteIcon(window: Window): Promise<string | null>;
9
+ export declare function parseToken<T>(token: string): {
10
+ header: {
11
+ alg: string;
12
+ typ: string;
13
+ kid?: string;
14
+ };
15
+ payload: T;
16
+ };
@@ -44,8 +44,9 @@ export declare class Web3AuthNoModal extends SafeEventEmitter<Web3AuthNoModalEve
44
44
  protected initCachedConnectorAndChainId(): void;
45
45
  protected setupCommonJRPCProvider(): Promise<void>;
46
46
  protected setupConnector(connector: IConnector<unknown>): Promise<void>;
47
- protected loadConnectors({ projectConfig }: {
47
+ protected loadConnectors({ projectConfig, modalMode }: {
48
48
  projectConfig: ProjectConfig;
49
+ modalMode?: boolean;
49
50
  }): Promise<void>;
50
51
  protected initPlugins(): Promise<void>;
51
52
  protected setConnectors(connectors: IConnector<unknown>[]): void;
@@ -2,7 +2,7 @@ import { type AccountAbstractionMultiChainConfig, type BundlerConfig, type ISmar
2
2
  import { type Client } from "viem";
3
3
  import { type BundlerClient, type PaymasterClient, type SmartAccount } from "viem/account-abstraction";
4
4
  import { type CustomChainConfig, type IProvider } from "../../../base";
5
- import { BaseProvider, type BaseProviderConfig, type BaseProviderState } from "../../base-provider";
5
+ import { BaseProvider, type BaseProviderConfig, type BaseProviderState } from "../../../providers/base-provider";
6
6
  interface AccountAbstractionProviderConfig extends BaseProviderConfig {
7
7
  smartAccountInit: ISmartAccount;
8
8
  smartAccountChainsConfig: AccountAbstractionMultiChainConfig["chains"];
@@ -1,5 +1,5 @@
1
1
  import { CustomChainConfig } from "../../../../base";
2
- import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../base-provider";
2
+ import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../../providers/base-provider";
3
3
  interface ProviderParams {
4
4
  sign: (msgHash: Buffer, rawMsg?: Buffer) => Promise<{
5
5
  v: number;
@@ -3,4 +3,3 @@ export * from "./base-provider";
3
3
  export * from "./ethereum-mpc-provider";
4
4
  export * from "./ethereum-provider";
5
5
  export * from "./solana-provider";
6
- export * from "./xrpl-provider";
@@ -1,5 +1,5 @@
1
1
  import { JRPCMiddleware } from "@web3auth/auth";
2
- import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../../base-provider";
2
+ import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../../../providers/base-provider";
3
3
  import { ISolanaProviderHandlers } from "../../../rpc";
4
4
  export declare abstract class BaseInjectedProvider<P> extends BaseProvider<BaseProviderConfig, BaseProviderState, P> {
5
5
  constructor({ config, state }: {
@@ -1,5 +1,5 @@
1
1
  import { CustomChainConfig } from "../../../../base";
2
- import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../base-provider";
2
+ import { BaseProvider, BaseProviderConfig, BaseProviderState } from "../../../../providers/base-provider";
3
3
  export type XrplPrivKeyProviderConfig = BaseProviderConfig;
4
4
  export interface XrplPrivKeyProviderState extends BaseProviderState {
5
5
  privateKey?: string;
@@ -1,6 +1,6 @@
1
1
  import type { ConnectorFn, IBaseWeb3AuthHookContext, IWeb3AuthCoreOptions, PluginFn } from "../base";
2
- import type { WalletServicesPluginType } from "../plugins/wallet-services-plugin";
3
2
  import { Web3AuthNoModal } from "../noModal";
3
+ import type { WalletServicesPluginType } from "../plugins/wallet-services-plugin";
4
4
  export type Web3AuthContextConfig = {
5
5
  web3AuthOptions: IWeb3AuthCoreOptions;
6
6
  connectors?: ConnectorFn[];
@@ -1,6 +1,8 @@
1
+ import { Connection } from "@solana/web3.js";
1
2
  import { SolanaWallet } from "../../../providers/solana-provider";
2
3
  export type IUseSolanaWallet = {
3
4
  accounts: string[] | null;
4
5
  solanaWallet: SolanaWallet | null;
6
+ connection: Connection | null;
5
7
  };
6
8
  export declare const useSolanaWallet: () => IUseSolanaWallet;
@@ -1,4 +1,4 @@
1
1
  import type { CreateConfigParameters, WagmiProviderProps as WagmiProviderPropsBase } from "wagmi";
2
2
  export type WagmiProviderProps = Omit<WagmiProviderPropsBase, "config"> & {
3
- config?: CreateConfigParameters;
3
+ config?: Omit<CreateConfigParameters, "chains" | "connectors" | "transports" | "multiInjectedProviderDiscovery" | "client">;
4
4
  };
@@ -1,7 +1,7 @@
1
1
  import { Ref, ShallowRef } from "vue";
2
2
  import type { CONNECTOR_STATUS_TYPE, IPlugin, IProvider, IWeb3AuthCoreOptions } from "../base";
3
- import { WalletServicesPluginType } from "../plugins/wallet-services-plugin";
4
3
  import type { Web3AuthNoModal } from "../noModal";
4
+ import { WalletServicesPluginType } from "../plugins/wallet-services-plugin";
5
5
  export type Web3AuthContextConfig = {
6
6
  web3AuthOptions: IWeb3AuthCoreOptions;
7
7
  };
@@ -0,0 +1,4 @@
1
+ export * from "./useSignAndSendTransaction";
2
+ export * from "./useSignMessage";
3
+ export * from "./useSignTransaction";
4
+ export * from "./useSolanaWallet";
@@ -0,0 +1,10 @@
1
+ import { Ref } from "vue";
2
+ import { type Web3AuthError } from "../../../base/errors";
3
+ import type { TransactionOrVersionedTransaction } from "../../../providers/solana-provider";
4
+ export type IUseSignAndSendTransaction = {
5
+ loading: Ref<boolean>;
6
+ error: Ref<Web3AuthError | null>;
7
+ data: Ref<string | null>;
8
+ signAndSendTransaction: (transaction: TransactionOrVersionedTransaction) => Promise<string>;
9
+ };
10
+ export declare const useSignAndSendTransaction: () => IUseSignAndSendTransaction;
@@ -0,0 +1,9 @@
1
+ import { Ref } from "vue";
2
+ import { type Web3AuthError } from "../../../base/errors";
3
+ export type IUseSignMessage = {
4
+ loading: Ref<boolean>;
5
+ error: Ref<Web3AuthError | null>;
6
+ data: Ref<string | null>;
7
+ signMessage: (message: string, from?: string) => Promise<string>;
8
+ };
9
+ export declare const useSignMessage: () => IUseSignMessage;
@@ -0,0 +1,10 @@
1
+ import { Ref } from "vue";
2
+ import { type Web3AuthError } from "../../../base/errors";
3
+ import { TransactionOrVersionedTransaction } from "../../../providers/solana-provider";
4
+ export type IUseSignTransaction = {
5
+ loading: Ref<boolean>;
6
+ error: Ref<Web3AuthError | null>;
7
+ data: Ref<string | null>;
8
+ signTransaction: (transaction: TransactionOrVersionedTransaction) => Promise<string>;
9
+ };
10
+ export declare const useSignTransaction: () => IUseSignTransaction;
@@ -0,0 +1,9 @@
1
+ import { Connection } from "@solana/web3.js";
2
+ import { Ref, ShallowRef } from "vue";
3
+ import { SolanaWallet } from "../../../providers/solana-provider/solanaWallet";
4
+ export type IUseSolanaWallet = {
5
+ accounts: Ref<string[] | null>;
6
+ solanaWallet: ShallowRef<SolanaWallet | null>;
7
+ connection: ShallowRef<Connection | null>;
8
+ };
9
+ export declare const useSolanaWallet: () => IUseSolanaWallet;
@@ -0,0 +1 @@
1
+ export * from "./composables";
@@ -0,0 +1,2 @@
1
+ export * from "./interface";
2
+ export * from "./provider";
@@ -0,0 +1,4 @@
1
+ import type { CreateConfigParameters, WagmiPluginOptions } from "@wagmi/vue";
2
+ export type WagmiProviderProps = Omit<WagmiPluginOptions, "config"> & {
3
+ config?: Omit<CreateConfigParameters, "chains" | "connectors" | "transports" | "multiInjectedProviderDiscovery" | "client">;
4
+ };
@@ -0,0 +1,16 @@
1
+ import { type Config } from "@wagmi/core";
2
+ import { PropType } from "vue";
3
+ import { WagmiProviderProps } from "./interface";
4
+ export declare const WagmiProvider: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
+ config: {
6
+ type: PropType<WagmiProviderProps>;
7
+ required: false;
8
+ };
9
+ }>, {
10
+ finalConfig: import("vue").ShallowRef<Config, Config>;
11
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
+ config: {
13
+ type: PropType<WagmiProviderProps>;
14
+ required: false;
15
+ };
16
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -27,6 +27,10 @@ const useWeb3AuthConnect = () => {
27
27
  if (!newVal && connectorName.value) {
28
28
  connectorName.value = null;
29
29
  }
30
+ if (newVal && !connectorName.value) {
31
+ var _web3Auth$value;
32
+ connectorName.value = (_web3Auth$value = web3Auth.value) === null || _web3Auth$value === void 0 ? void 0 : _web3Auth$value.connectedConnectorName;
33
+ }
30
34
  }, {
31
35
  immediate: true
32
36
  });